【问题标题】:What NoSQL database should I be using?我应该使用什么 NoSQL 数据库?
【发布时间】:2012-06-19 05:31:53
【问题描述】:

好的,所以我一直在对 NoSQL 数据库进行一些研究,它们似乎是我需要的正确选择。然而,问题是,很多这些数据库,如果不是大多数的话,都是从 RAM 读取/写入,而不是磁盘。当您拥有大量服务器资源或不期望有大量数据块时,这很好 - 但我认为我应该为最坏的情况做好准备。

我希望从这些数据源收到的数据是每个查询从 25KB 到 150KB 不等 - 是的 - 对于单个键值,最多可达 150KB。普通用户将产生 500 到 5000 个这样的密钥,并且它们可以无限增长(但可能会在 5000 范围内的某个地方停止)。如果您快速进行计算(大部分数据将在 25-150 的较高端,所以我将使用 100KB 作为“平均值”,大多数用户可能会产生 2000-3000 个查询):100KB*3000 - 那是每位用户 300MB!当您开始获得体面的用户群时,会有疯狂的数据量。因此,最终我可能会丢弃查询中的大部分数据,使其不超过 1KB 左右,但这仍将远远超过大多数 RAM 容量。

所以我认为我正在寻找一种将数据存储到磁盘并将对象缓存在 RAM 中的解决方案。但我对所有解决方案持开放态度!让我知道你们的想法。我很想保持这个东西运行快速...

编辑:

措辞略有不同,以便对路人有用:

如果希望在 NoSQL 数据库中最大化性能但处理大量数据负载,那么推荐的 NoSQL 数据库是什么?我认为它将是将数据存储到磁盘的一种,但这会严重影响性能。那里有“两全其美”的解决方案吗?需要注意的是,我假设这些记录一旦提交就不会被修改,只会读取(但可能不会经常)。

我一直在研究 Redis 来完成这样的任务,因为它看起来非常易于管理 - 但是它完全在 RAM 中运行,因此需要小的数据块,或者同时运行多个实例的多个服务器。这是我无权访问。

【问题讨论】:

  • 我应该投票结束这个“不具建设性”,因为根据faq,购物清单对于 SO 来说是题外话。这个问题很有趣;你能稍微换个说法吗?
  • @Ben 你确定这违反了常见问题解答吗?关于什么是最好的“某事”的问题是题外话,因为最好是主观的。但在这里,问题询问的是一个符合非常具体要求的 NoSQL 数据库。这些要求没有任何主观性。
  • @Pablo,“我应该使用什么 NoSQL 数据库?”;我认为这是一个边缘案例和一个有趣的问题,所以我要求 OP 重新措辞以避免它被关闭:-)。

标签: database nosql


【解决方案1】:

首先,我认为当您说大多数您看到的将数据存储在 RAM 中时,您指的是内存中的 Key/Value 数据存储,例如 Redis 或 Memcached。 但不止于此。在结束关于内存中 NoSQL 选项的讨论之前,我应该说你是对的。内存很容易填满,根据您的要求,您将需要大量内存。所以内存中的选项应该被丢弃(不是它们没有用,而是在这种特定情况下不是)。

我的建议是 MongoDb。满足您的需求:将数据存储在磁盘上,将内容缓存在内存中(尽可能多地)。 但是,您需要一些强大的数据存储选项(SSD 是您应该考虑的),以便它可以处理您的数据吞吐量需求。我已经测试过 Mongo,但数据要少得多。 我正在寻找超过 100 万个元素集合,其值大小从 5Kb 到 50Kb 不等。

我最感兴趣的是阅读速度。我还应该提到我测试过的写入速度,并且必须说它们令人印象深刻。几分钟内插入 100 万个 20Kb(在小型服务器上 - 四核、8GB RAM、VMware VM)。

回到读取速度方面,我一直在寻找能够为大约 100 个并发用户提供低于 50 毫秒读取时间的半并发查询。

在 MongoDb 团队的帮助下,我设法接近了那个时代,但后来我陷入了其他事情,不得不放弃我的研究(暂时,我希望尽快恢复)。还有更多的事情需要研究,例如聚合速度、map/reduce 等。 我可以说服务器上的查询时间非常快,所有开销都是由 BSON 序列化/反序列化和网络传输增加的。

所以,Mongo 对你来说是合适的,但你必须用一些好的硬件来支持它。 您应该真正安装它并在您的特定情况下对其进行测试,并从您自己的测试中得出结论。

如果您要这样做并且您的客户端是 .NET,那么您应该使用他们的官方驱动程序。否则,这里列出了很多其他内容:http://www.mongodb.org/display/DOCS/Drivers

可以在此处找到有关 Mongo 功能及其使用方法的精彩介绍:http://www.mongodb.org/display/DOCS/Developer+Zone。诚然,他们的文档不如 RavenDb(我测试过的另一种 NOSQL 解决方案,但速度没有那么快),但您可以在此处或 Google Groups 上获得良好的支持。

【讨论】:

  • 谢谢马塞尔,我去看看。
猜你喜欢
  • 2014-12-23
  • 1970-01-01
  • 1970-01-01
  • 2011-03-19
  • 2018-02-02
  • 2016-01-07
  • 2012-08-23
  • 1970-01-01
  • 2021-09-22
相关资源
最近更新 更多