mongodb - NoSQL 数据库 - 日志处理/聚合和汇总的良好候选者?

标签 mongodb ravendb nosql

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

Mongo 或 Raven 等 NoSQL 数据库是否适合此类应用程序?

最佳答案

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

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

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

乌鸦

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

蒙古人

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

沙发

  • 快速写入
  • 快速读取(预先计算,但仅在您读取时更新 (IIRC)
  • 无法进行动态查询,所有查询均通过 map 或 map/reduce 函数预定义

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

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

关于mongodb - NoSQL 数据库 - 日志处理/聚合和汇总的良好候选者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4746606/

相关文章:

Java Spring : mongodb connection issue

java - 对字段进行分组操作并将喜欢的字段列表放入数组中

ravendb - RavenDB 动态查询中的谓词无法正常工作

ravendb - 从 RavenDB Studio 中的集合中删除字段

java - 配置 log4j 以使用 mongodb

java - Spring Data MongoDB nosql注入(inject)

javascript - 在 mongoDB 表达式中使用变量名(nodejs)

c# - RavenDB 在更新一个文档时重建所有索引

sql - 数据库 EAV 的优点/缺点和替代方案

mongodb - 在谈论 MongoDB 与 Cassandra 时, "Document-oriented"与键值是什么意思?