标签: ravendb

当UseEmbeddedHttpServer使用2层架构设置为true时,如何才能使我的RavenDB应用程序正确执行?

我在我的应用程序中使用了RavenDB-Embedded 2.0.2230,在不同的程序集中与ASP .Net Web API进行了交互.

当我UseEmbeddedHttpServer = true在文档存储上设置时,第一次向RavenDB发送请求时,它会正确执行,但是当我第二次尝试时,我的应用程序会显示Raven Studio.

当我删除UseEmbeddedServer设置时,我的应用程序运行没有任何问题.

我的RavenDB在数据层中配置了以下代码:

this.documentStore = new EmbeddableDocumentStore
{
    ConnectionStringName = "RavenDB",
    UseEmbeddedHttpServer = true
}.Initialize();
Run Code Online (Sandbox Code Playgroud)

Web.config在服务层中实现这些设置:

<connectionStrings>
    <add name="RavenDB" connectionString="DataDir=~\App_Data\RavenDatabase" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

有没有我错过的设置?

我需要将任何设置应用于将Raven Studio指向另一个端口吗?

c# web-applications ravendb asp.net-mvc-4 asp.net-web-api

50
推荐指数
1
解决办法
2310
查看次数

选择MongoDb/CouchDb/RavenDb - 性能和可扩展性建议

对于某些读/写密集型应用程序,我们正在研究具有故障转移群集的文档数据库存储解决方案.

我们将每秒平均写入40K并发写入数据库(峰值可能达到70,000) - 并且可能有大约几乎相同数量的读取发生.

我们还需要一种机制让db通知新写入的记录(db级别的某种触发器).

在正确选择文档数据库和相关容量规划方面,什么是一个好的选择?

更新

关于期望的更多细节.

  • 平均而言,我们期望在3-4个数据库/文档集合中每秒插入40,000(40K)个插入数(新文档).
  • 峰值可能高达120,000(120K)插入
  • 插件应该可以立即读取 - 几乎是实时的
  • 除此之外,我们预计每秒大约有5000次更新或删除
  • 除此之外,我们还期望500-600个并发查询访问数据.这些查询和执行计划在某种程度上是已知的,尽管这可能需要更新,例如,在一周左右的时间内更新一次.
  • 系统应支持存储端的故障转移群集

couchdb mongodb nosql document-database ravendb

44
推荐指数
2
解决办法
2万
查看次数

如何搜索巨大的非文本数据集?

在我正在工作的项目中,客户端有一个旧的大型(TB级)RDBMS.所有类型的查询都很慢,没有时间来修复/重构模式.我已经确定了需要优化的常见查询集.该集分为两部分:全文和元数据查询.

我的计划是从数据库中提取数据并将其分配到两个不同的存储系统中,每个存储系统都针对特定查询集进行了优化.

对于全文搜索,Solr是最有意义的引擎.它的分片和复制功能使其非常适合一半的问题.

对于元数据查询,我不确定要采取的路线.目前,我正在考虑使用具有极度非规范化模式的RDBMS,该模式表示来自"权威"RDBMS的数据的特定子集.但是,与已经包含它们的Solr相比,我的客户担心这种子系统缺少分片和复制以及设置这些功能的难度/复杂性.在这种情况下,元数据采用整数,日期,bool,位和字符串的形式(最大大小为10chars).

是否有一个数据库存储系统具有内置的分片和复制功能,可能对查询所述元数据特别有用?也许一个没有sql的解决方案提供了一个很好的查询引擎?

请照亮.

添加/回应:

Solr可用于元数据,但元数据是易失性的.因此,我必须经常提交索引.这会导致搜索速度非常快.

c# search solr nosql ravendb

35
推荐指数
2
解决办法
1259
查看次数

在RavenDB中指定集合名称

所以我想说我有3件水果,苹果和橘子.Fruit是Apple和Orange的抽象基类.当我使用session.Store(myApple)时,它将它放入Apples集合中.myOrange存储在Oranges集合中.说得通.

我可以告诉Raven我想要一个可以容纳苹果或橘子的水果系列吗?Mongodb允许这样做,因为它允许我明确指定集合名称.RavenDB集合文档说:

预期的使用模式是集合用于对具有相似结构的文档进行分组,尽管这不是必需的.从数据库的角度来看,集合只是一组共享相同实体名称的文档.

我希望它是这样的:session.Store <Fruit>(myApple),或session.Store("Fruits",myApple)

有任何想法吗?谢谢.

c# oop ravendb

30
推荐指数
1
解决办法
3338
查看次数

RavenDB:如何使用多个搜索词进行查询

我的实体是:

class Resource
{
    string Name;
    string EmployeeId;
}
Run Code Online (Sandbox Code Playgroud)

如何查询多个员工的资源?我试过这个:

Resource[] FindResourcesByEmployees(string[] employeeIds)
{
    return this.Session.Query<Resource>()
        .Where(r => employeeIds.Contains(r.EmployeeId))
        .ToArray();
}
Run Code Online (Sandbox Code Playgroud)

但是,这给了我NotSupportedException:不支持的方法:包含.然后我尝试了以下方法:

Resource[] FindResourcesByEmployees(string[] employeeIds)
{
    return this.Session.Query<Resource>()
        .Where(r => employeeIds.Any(v => v == r.EmployeeId))
        .ToArray();
}
Run Code Online (Sandbox Code Playgroud)

抛出NotSupportedException:不支持表达式类型:System.Linq.Expressions.TypedParameterException.

在SQL中它将是这样的:

SELECT * FROM resource WHERE employeeid IN (1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何在RavenDB中执行此查询?

ravendb

30
推荐指数
1
解决办法
5029
查看次数

单元测试RavenDB

在我的单元测试中,我设置每个测试都有一个完全空的IDocumentSession.我是这样做的:

[SetUp]
public void SetUp()
{
  _store = new EmbeddableDocumentStore
  {
     RunInMemory = true
  };

  _store.Initialize();

  Session = _store.OpenSession();
}
Run Code Online (Sandbox Code Playgroud)

但我认为这可能是我的测试有点慢的原因.我想知道是否有一个简单的命令来删除数据库中的所有文档.

我想要知道的是:如果我能做到这一点,以及它是否会提高性能.

unit-testing ravendb

29
推荐指数
3
解决办法
4963
查看次数

Mongo DB是否具有内存模式?

可能重复:
运行集成测试时嵌入式MongoDB

我想使用In-Memory模式进行单元测试,是否存在像RavenDB这样的In-Memory模式?

mongodb in-memory-database ravendb

28
推荐指数
1
解决办法
2万
查看次数

使用RavenDB检索超过128个文档的正确方法

我知道这个问题的变体之前已被问过(甚至是我),但我仍然不明白这个问题......

据我所知,通过执行以下操作,可以检索比128默认设置更多的文档:

session.Advanced.MaxNumberOfRequestsPerSession = int.MaxValue;
Run Code Online (Sandbox Code Playgroud)

我已经知道WHERE子句应该是一个ExpressionTree而不是Func,所以它被视为Queryable而不是Enumerable.所以我认为这应该有效:

public static List<T> GetObjectList<T>(Expression<Func<T, bool>> whereClause)
{
    using (IDocumentSession session = GetRavenSession())
    {
        return session.Query<T>().Where(whereClause).ToList();                
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,这只返回128个文档.为什么?

注意,这是调用上述方法的代码:

RavenDataAccessComponent.GetObjectList<Ccm>(x => x.TimeStamp > lastReadTime);
Run Code Online (Sandbox Code Playgroud)

如果我添加Take(n),那么我可以获得尽可能多的文档.例如,这会返回200个文档:

return session.Query<T>().Where(whereClause).Take(200).ToList();
Run Code Online (Sandbox Code Playgroud)

基于所有这些,似乎检索数千个文档的适当方法是设置MaxNumberOfRequestsPerSession并在查询中使用Take().是对的吗?如果没有,应该怎么做?

对于我的应用程序,我需要检索数千个文档(其中包含非常少的数据).我们将这些文档保存在内存中,并用作图表的数据源.

**编辑**

我尝试在Take()中使用int.MaxValue:

return session.Query<T>().Where(whereClause).Take(int.MaxValue).ToList();
Run Code Online (Sandbox Code Playgroud)

然后返回1024.唉.我如何获得超过1024?

**编辑2 - 显示数据的示例文档**

{
  "Header_ID": 3525880,
  "Sub_ID": "120403261139",
  "TimeStamp": "2012-04-05T15:14:13.9870000",
  "Equipment_ID": "PBG11A-CCM",
  "AverageAbsorber1": "284.451",
  "AverageAbsorber2": "108.442",
  "AverageAbsorber3": "886.523",
  "AverageAbsorber4": "176.773"
}
Run Code Online (Sandbox Code Playgroud)

ravendb

27
推荐指数
4
解决办法
1万
查看次数

如何为Asp.NET MVC 5创建一个ClaimsIdentity对象?

我在.NET MVC 5应用程序中工作.我不想使用Entity Framework.我想验证RavenDB数据库.在我看来,我想要替换UserManager帐户控制器附带的.我想我可以重写所有UserManager函数来使用我的数据库,除了我不理解该ClaimsIdentity对象.

在该SignInAsync方法中,有一个调用UserManager.CreateIdentityAsync(...).我知道它会返回一个ClaimsIdentity对象.我不知道的是如何自己创建一个ClaimsIdentity对象.

我看到它有4个属性Actor,BootstrapContext,ClaimsLabel.我不知道这些属性用于什么,我不知道如何正确生成它们.我认为正确生成它们非常重要,因为它是如何生成身份验证cookie的.

我在这里查看了ClaimsIdentity对象的解释,但这并没有真正帮助我理解.

如果我能看到代码CreateIdentityAsync(),那可能会有所帮助.

如果我发现这一切都错了,请告诉我.否则,如果有人可以指出我如何生成ClaimsIdentity对象,那将会有所帮助.

ClaimsIdentity identity = new ClaimsIdentity
{
    Actor = ????,
    BootstrapContext = ?????,
    Claims = ?????,
    Label = ?????
}
Run Code Online (Sandbox Code Playgroud)

authentication claims-based-identity ravendb katana asp.net-mvc-5

27
推荐指数
4
解决办法
4万
查看次数

安装RavenDb Embedded时出现Nuget依赖性错误

我试图在ASP.NET MVC 5应用程序中安装RavenDB.Embedded,但我有这种依赖性错误:

PM> Install-Package RavenDB.Embedded
Attempting to resolve dependency 'RavenDB.Database (= 2.5.2750)'.
Attempting to resolve dependency 'System.Spatial (? 5.2)'.
Attempting to resolve dependency 'WindowsAzure.Storage (? 2.0)'.
Attempting to resolve dependency 'Microsoft.WindowsAzure.ConfigurationManager (? 1.7.0.0)'.
Attempting to resolve dependency 'Microsoft.Data.OData (? 5.0.2)'.
Attempting to resolve dependency 'Microsoft.Data.Edm (= 5.0.2)'.
Attempting to resolve dependency 'System.Spatial (= 5.0.2)'.
Install-Package : Updating 'System.Spatial 5.2.0' to 'System.Spatial 5.0.2' failed. Unable to find a version of 'RavenDB.Database' that is compatible with 'System.Spatial 5.0.2'.
At line:1 char:1 …
Run Code Online (Sandbox Code Playgroud)

dependencies ravendb nuget asp.net-mvc-5

27
推荐指数
1
解决办法
2339
查看次数