标签: ravendb

具有搜索功能的文档数据库

有谁知道任何文档数据库是否提供了良好的搜索功能?我看到RavenDb在某种程度上使用Lucene.net,但我正在寻找像Truffler.net客户端api给你的更集成的搜索体验.他们在Elasticsearch之上构建了一个.net客户端,它提供了很好的搜索功能.

我认为如果任何文档数据库客户端可以直接通过其客户端api提供类似的功能,那将是一个杀手级功能,但我不确定这是否可行.

c# search mongodb document-database ravendb

3
推荐指数
1
解决办法
294
查看次数

您可以访问RavenDB文档会话的统计信息吗?

我在单元测试中做了一些性能工作,并想知道是否可以访问我的RavenDb会话的统计信息(类似于NHibernate会话统计信息)?

我想知道诸如总查询计数和到服务器的次数之类的事情.

ravendb

3
推荐指数
1
解决办法
187
查看次数

我尝试构建它后,RavenDB.Client.Embedded消失了

我正在按照教程,安装RanvenDB嵌入并编写:

public static IDocumentStore archives =
    new EmbeddableDocumentStore { DataDirectory = "~/DataStore" };
Run Code Online (Sandbox Code Playgroud)

然后我让VS找到EmbeddableDocumentStore在哪里,我添加:

using Raven.Client.Embedded;
Run Code Online (Sandbox Code Playgroud)

没有错误,一切都很好.然后我建立:

Archives.cs(10,20):错误CS0234:命名空间"Raven.Client"中不存在类型或命名空间名称"Embedded"(您是否缺少程序集引用?)

编译完成 - 1个错误,0个警告

现在它是错误的,没有嵌入式......

如果我删除package.config并再次运行安装Ravendb Embedded,它将再次变为绿色(没有错误)但是在我运行build之后...

怎么修呢?

(测试不同版本:相同结果)

c# ravendb nuget

3
推荐指数
1
解决办法
395
查看次数

嘲笑RavenDb

我已经阅读了很多关于如何模拟RavenDb的问题.有一个共同的答案:"不要"

这让我陷入了一种奇怪的境地.模拟接口的最重要原因之一是测试我的代码如何对错误做出反应.

如果您无法模拟可能导致错误的对象,则注入错误会非常复杂.

我在这里想错了方向????

// LG

mocking ravendb

3
推荐指数
1
解决办法
401
查看次数

使用RavenDB和ASP.NET MVC进行会话处理

我有一个服务类UserService,它获取使用AutoFac注入的IDocumentStore实例.这工作正常,但现在我正在看这样的代码:

public void Create(User user)
{
    using (var session = Store.OpenSession())
    {
        session.Store(user);
        session.SaveChanges();
    }
} 
Run Code Online (Sandbox Code Playgroud)

写入db的每个操作都使用相同的结构:

using (var session = Store.OpenSession())
{
    dosomething...
    session.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

消除这种重复代码的最佳方法是什么?

asp.net-mvc ravendb

3
推荐指数
1
解决办法
906
查看次数

RavenDB:如何防止高RAM利用率?

  • 我的应用程序包含一些返回大型结果集的查询(虽然我用Take(300)lambda 封顶了它.
  • 在高峰使用期间,我看到Raven.Server.exe消耗了异常大量的RAM.
    • 事实上,在这些时候,Raven.Server.exe会耗尽我服务器的可用内存.

我该如何避免这种情况?

  • 经过几次谷歌搜索,我可以看到其他人在我之前遇到过这个错误.
  • 但RavenDB在过去几年中已经发展,并且有许多配置代码选项可以限制Raven.Server.exe可以使用的RAM量并完全禁用缓存.

谁能告诉我哪些选项适合我的情况?


以下是我发现的服务器配置选项:

这是我在代码选项中找到的:


我很清楚这个默认设置没有被尊重:

乌鸦/ MemoryCacheLimitMegabytes

RavenDB服务器内部文档缓存的最大大小(MB). 默认值:系统总内存的50%减去Esent缓存的大小.

在我的服务器上,使用build 2330,没有设置任何自定义配置,Raven.Server.exe占用了95%的可用内存!


编辑:只能在执行重读(并且没有写入)时在测试环境中重现这一点.

caching task-parallel-library ravendb

3
推荐指数
1
解决办法
2169
查看次数

RavenDB OrderBy

在我的C#应用​​程序中,我有一组对象,其int Order属性范围从1到n.

当我喜欢这样的时候:

var listings = session.Query<Listing>().Where(x => !x.IsDeleted && x.CategoryId == category.Id && x.WorkflowStatus == WorkflowStatus.Published).OrderBy(x => x.Order);
Run Code Online (Sandbox Code Playgroud)

我得到了一系列列表,但没有按正确的顺序100%.按顺序,顺序如下:

0, 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 21, 22, 23, 24, 25, 26, 28, 29, 3, 30, 31, 32, 33, 4 .... 
Run Code Online (Sandbox Code Playgroud)

知道为什么OrderBy不完全应该这样做吗?

c# ravendb

3
推荐指数
1
解决办法
1450
查看次数

使用RavenDB时,我应该在哪里放置业务逻辑

我打算使用RavenDB作为我的数据存储来构建单页面应用程序(SPA).

我想从SPA部分的ASP.NET Hot Towel模板开始.

我将删除EntityFramework/WebApi/Breeze组件,并用RavenDB替换存储和ServiceStack来构建后端API.

在RavenDB之上使用任何类型的存储库或其他抽象并且直接在控制器内部(在MVC应用程序中)使用RavenDB API时,大多数当前的观点似乎都不屑一顾

我假设我在使用Raven和ServiceStack时应该遵循同样的智慧,并直接在我的服务实现中对IDocumentSession进行调用.

我担心的是,通过遵循这条路径,我的服务实现似乎会变得相当臃肿.我似乎经常需要多次编写相同的代码,例如,如果我需要更新几个不同的Web服务端点中的用户文档.

我似乎也需要从我的应用程序的其他(未来)部分访问Raven.例如,我可能需要添加一个控制台应用程序,以便将来处理队列中的作业,而这部分应用程序可能需要访问Raven中的数据...但从一开始,我唯一的途径就是通过Raven Web服务API.我是否只打算从这个理论控制台应用程序调用web api?如果它们可能在同一硬件上运行,那么效率似乎很低.

任何人都可以提供有关如何在我的网络服务和其他地方有效利用Raven的建议,同时仍然遵循使用此文档存储的最佳实践?创建一个直接处理针对raven的调用的中间业务逻辑层似乎很实际......允许我的webservices调用此层中的方法.这有意义吗?

编辑

任何人都可以提供类似架构的最新样本吗?

.net c# nosql ravendb servicestack

3
推荐指数
1
解决办法
778
查看次数

我可以在javascript SPA中使用ravendb吗?

我正在开发一个使用backbone.js的应用程序,用于大多数前端逻辑,并考虑使用sqlite进行存储,但我遇到了一些并发症,需要切换到另一个NoSQL数据库.

我在ravendb的网站上看到它是用C#创建的,你需要一个.net编译器.大多数文档都是针对ASP MVC类型的应用程序.我不能这样做,因为我们正在开发这个平板电脑应用程序,在客户端没有基于微软的技术(因为我们希望它与android和苹果一起使用)

然而,服务器将是.NET,所以我认为这可能是可行的.只是想知道这是否值得追求,如果有人有使用ravendb的经验?或者我应该去mongodb?

ravendb single-page-application

3
推荐指数
1
解决办法
628
查看次数

为什么Raven会为我的新文档生成已存在的文档ID?

为什么这个代码(尝试)用第二个对象覆盖我的第一个对象?我的第一个对象具体为Id的"StringBasedIdClasses/1",第二个没有提供Id,所以Raven应该生成一个未使用的Id,不应该吗?

 var quickStore = new EmbeddableDocumentStore() { RunInMemory = true };
 quickStore.Initialize();
 quickStore.RegisterListener(new DocumentConversionListener()).RegisterListener(new DocumentStoreListener());

 using (var session = quickStore.OpenSession())
 {
      session.Advanced.UseOptimisticConcurrency = true;
      var stringIdTest = new StringBasedIdClass()
      {
           Id = "StringBasedIdClasses/1",
           Name = "StringItem1"
      };

      session.Store(stringIdTest);
      session.SaveChanges();
 }

 using (var session = quickStore.OpenSession())
 {
      session.Advanced.UseOptimisticConcurrency = true;
      var stringIdTest = new StringBasedIdClass()
      {
           Name = "DidIReplaceYou"
      };

      session.Store(stringIdTest);
      session.SaveChanges();//This fails with a ConcurrencyViolation as I use OptimisticConcurrency and have Etag support on my objects
 }
Run Code Online (Sandbox Code Playgroud)

一切都在使用文档存储的一个当前实例.这似乎很基本所以一定要错过一些简单的东西.

c# ravendb

3
推荐指数
1
解决办法
790
查看次数