nosql:MongoDB,Cassandra或数据仓库的替代品

时间:2013-04-16 15:45:49

标签: mongodb cassandra database nosql

我遇到了关于是否与MongoDB或Cassandra一起考虑我的数据库需求的具体决定,并希望在我的用例上输入以指导我的决定。

要求:

数据来源

  • 包含Y服务器的X数据中心。
  • 每台服务器都有N个网络和M个统计信息。

e.g。目前(3个数据中心,50个服务器总数,19个网络和10个统计数据)。这些数字会随着时间的推移而增加。

数据提取:

  • 每小时为每个服务器(~20kb /页)解析一个xml页面。 (约25mb /天)

数据存储:

  • 使用聚合来组织(每小时,每日,每月)结构以查找更高的值(小时 - >天)

注意:我们需要能够:

  • 动态添加/删除值(数据中心/服务器/网络/统计)和扩展能力是一个关键问题,因此我们正在从SQL迁移到NoSQL。
  • 可靠性也是一个高优先级(主/从,没有损坏),并且需要“简单”的可维护性。
  • 每小时写作,不需要“大规模”的写作表现。

示例用例: 在前端你会查询,选择;日期窗口,期间报告,特定数据中心,特定/所有网络,特定/所有统计信息以及结果是在服务器上汇总还是个人。

Example #1

 - From: August 16th 2012 -> April 16th 2013
 - Period: Daily
 - Data-center: EU A
 - Stat-type: Error
 - Servers: All

从堆栈溢出和网络上阅读类似的文章,我得出结论,我最好的选择可能是MongoDB的灵活查询和与关系数据库的亲密关系。如果我的写作量更高,Cassandra似乎是一个选项 - 虽然我喜欢基于列的模型。 我是数据库设计和管理的新手,因此易用性也是一个因素(仍然是CS学生)。

从我的用例中,NoSql数据库是最好的选择吗?

2 个答案:

答案 0 :(得分:4)

你在结论中几乎把它钉在了一起。要想出决定,你必须在每个数据库的特权之间进行选择,即:

Cassandra

  • 更好的可用性(主/主,所以没有SPOF)
  • 更好的可扩展性:(线性,弹性)
  • 更好的写性能

MongoDB

  • 更好的查询(API和原生全文搜索)
  • 易于使用(各种API,XML / JSON ......)

我认为坚持不是一个问题,无论如何,他们最终都是一致的。即使MongoDB可能更容易入手(更接近关系数据模型),Cassandra也不是那么难,你只需要了解面向列的范例。无论从技术角度来看,我想答案取决于您对系统规模增长的预期以及您的请求是否会发展。

答案 1 :(得分:1)

您的主题是“nosql:MongoDB,Cassandra或数据仓库的替代方案。”但是,您的描述并不完全是数据仓库。如果问题是:关于如何做一个合适的“数据仓库”,那么答案就不是这些NOSQL数据存储。最好的数据仓库解决方案是无共享环境中的并行数据库(MPP)。对于查询/统计报告需求,反向列数据库(如Sybase IQ或Vertica)。这些(MPP或反向列)中的任何一个都将在真正的数据仓库环境中清理NOSQL的时钟。