7

我有一个用于捕获带宽统计信息的 MS SQL 数据库。我们有一个原始数据表,为了提高不同钻取级别的报告速度,我们每小时、每天和每周汇总和汇总数据到单独的表格中。

像 Mongo 或 Raven 这样的 NoSQL 数据库是否适合这种类型的应用程序?

4

1 回答 1

17

不同的 NoSQL 解决方案针对不同的用途解决不同的问题 - 所以首先最好的办法是查看您的问题并将其分解

  • 您正在大量写入存储,因此写入速度对您很重要
  • 您希望对该数据执行聚合操作并获得易于查询的结果
  • 从事物的声音来看,读取速度并不是那么重要,至少在“Web 应用程序必须真正响应数百万人”的方式中不是那么重要
  • 我不知道您是否需要动态查询

让我们以一种非常高级、通用的方式来看看 Couch、Mongo 和 Raven

掠夺

  • 快速写入
  • 快速查询(最终一致、预先计算、通过 map/reduce 聚合)
  • 可以进行动态查询,但并不真正适合您的用例,因为您很可能会按日期等进行查询

蒙哥

  • 快速写入(在我看来很危险,因为断电意味着丢失数据 ;-))
  • 慢读(相对),通过 map/reduce 聚合,未预先计算
  • 动态查询只是 what_you_do,但如果您想要对此类数据进行任何类型的性能,您可能必须在列上定义索引

长椅

  • 快速写入
  • 快速读取(预先计算,但仅在您阅读时更新(IIRC)
  • 动态查询是不可能的,都是通过 map 或 map/reduce 函数预先定义的

所以,基本上 - 你需要对这类数据进行动态查询吗?阅读速度对您来说非常重要吗?如果您需要动态查询,那么您将需要 Raven 或 Mongo(对于这种东西,Couch 可能不是您想要的)。

FWIW,在我看来,Mongo 的唯一用例是用于日志记录,所以你可能会有一个答案。

于 2011-01-20T11:55:17.907 回答