ravendb - RavenDB 适合我的情况吗?

标签 ravendb

我遇到了一个有趣的情况,我对用于我们公司项目的 RavenDB 原型(prototype)的评估期即将结束。它之所以有趣,是因为 99.99% 的情况下,我相信它适合 Raven 的最佳位置;它经常小批量地重复查询新数据(一次 < 1000 个文档)。

但是,我们确实有一个初始加载期,需要加载两天的数据,在某些情况下可能是 300 万(或更多)记录。

图表可能会有所帮助:

enter image description here

传输服务负责从三个生产数据库中获取正确的数据并将其存储在 RavenDB 中。 WCF 服务将查询此数据并将其提供给客户端。

一旦我们将数百万条记录/文档初始加载到 RavenDB 中,我们就很少需要再次这样做。

作为初始负载测试,在具有 4GB RAM 和两个处理器的机器上,读取初始数据仅花费了 23 分钟多一点。在这种情况下,只有大约 128 万条记录。我从此初始加载中消除了所有异步操作,因为我希望每次读取都不会受到其他读取操作的干扰。我通过这种方式找到了最好的结果。

enter image description here

我知道不建议这样做,但为了完成这一切,我必须更改不建议更改的设置:

我必须增加超时:

documentStore.JsonRequestFactory.ConfigureRequest += (e, x) => ((HttpWebRequest)x.Request).Timeout = ravenTimeoutInMilliseconds;

在 Raven.Server.exe.config 中,我必须增加页面大小(至 int.MaxValue):

<add key="Raven/MaxPageSize" value="2147483647"/>

在我的检索方法中,我必须使用 Take(int.MaxValue):

return session.Query<T>().Where(whereClause).Take(int.MaxValue).ToList();

请记住,这都是一次性的初始加载。之后,会出现很多查询,而且查询速度很快,而且频繁。我还应该注意到,每个文档在 RavenDB 中都是独立的。没有需要管理的关系。

了解了这一切,RavenDB 适合吗?

最佳答案

非常适合什么

全文搜索?是的。后台聚合(映射/减少)?是的。轻松复制和分片,比如扩展?是的...

临时报告?不。支持可能数千种第三方工具?不...

如果您谈论的是性能,您可能想查看 Orens 的最新帖子。他的号码与您的非常相似:http://ayende.com/blog/154913/ravendb-amp-freedb-an-optimization-story

关于ravendb - RavenDB 适合我的情况吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10196484/

相关文章:

nosql - RavenDB - 修补非规范化引用集合

json.net - 从 RavenDB 获取 NServiceBus 订阅

RavenDB - 为适当的集合 LuceneQuery 设置索引

c# - 复杂 RavenDb 对象中的延迟加载

ravendb - RavenDB 'Hello World' 教程出现问题

sql - 建模 NoSQL 数据库(从 SQL 数据库转换时)

RavenDB Studio - 补丁找不到这个.__document_id

asp.net-mvc - 使用RavenDB的类似Twitter的模型

ravendb - 如何让 RavenDB 识别插件?

powershell - RavenDB 安装问题 System.Net.Sockets.SocketException (10013)