非关系型数据库:数据仓库的选择——MongoDB、Cassandra或其他替代方案

3

我在是否选择MongoDB或Cassandra作为我的数据库需求上徘徊不定,希望能够了解我的使用情况以指导我的决定。

需求:

数据源

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

例如:目前(3个数据中心,共50台服务器,19个网络和10个统计数据)。这些数字将随着时间的推移而增加。

数据获取:

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

数据存储:

  • 使用聚合来查找更高的值(小时 -> 天),并按小时、日、月等组织结构进行组织。

注意:我们需要以下功能:

  • 动态添加/删除值(数据中心/服务器/网络/统计数据),可扩展性是一个关键问题,因此我们正在从SQL转向NoSQL。
  • 可靠性也是一个高优先级(主/从,无损坏),并需要“易于”维护。
  • 写入频率为每小时一次,不需要“大规模”的写入性能。

示例用例: 在前端,您将查询如下内容:选择日期窗口、周期报告、特定数据中心、特定/所有网络、特定/所有统计数据以及结果是总计还是跨服务器单独计算。

Example #1

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

通过阅读Stack Overflow和网页上类似的文章,我得出结论,MongoDB可能是最好的选择,因为它具有灵活的查询功能,而且与关系数据库非常接近。如果我的写入量很大,Cassandra似乎也是一个选择 - 尽管我喜欢基于列的模型。

根据我的使用情况,哪种NoSql数据库是最佳选择?


请查看此链接http://www.networkworld.com/news/tech/2012/102212-nosql-263595.html?page=1,可能会有所帮助。 - A.P.S
从这些基准测试来看,性能似乎不是问题。考虑到读取性能更为关键,在这些基准测试中,MongoDB和Cassandra都符合需求。我认为我的真正问题是哪个提供更多的功能(MongoDB),但我是否忽略了什么? - eddie-ryan
2个回答

5
你的结论基本上是正确的。要做出决定,你主要需要在每个数据库的优点之间选择,即:
Cassandra:
- 更好的可用性(主/主,因此没有单点故障) - 更好的可扩展性:(线性、弹性) - 更好的写入性能
MongoDB:
- 更好的查询(API 和原生全文搜索) - 易于使用(各种 API、XML/JSON...)
一致性似乎不是什么问题,无论如何,它们都最终一致。即使 MongoDB 可能更容易入手(更接近关系数据模型),但 Cassandra 也不难,你只需要理解列导向的范例。无论从技术角度来看,我想答案取决于你期望系统增长到什么规模以及你的请求是否会发生变化。

1
您的主题是“nosql: MongoDB、Cassandra或数据仓库的替代品。” 然而,您的描述并不完全是关于数据仓库的。如果问题是:如何做一个合适的“数据仓库”,那么答案就是这些NOSQL数据存储都不是最佳数据仓库解决方案。最好的数据仓库解决方案是在共享环境中使用并行数据库(MPP)。对于查询/统计报告需求,可以使用倒置列数据库,如Sybase IQ或Vertica。其中任何一个(MPP或倒置列)都将在真正的数据仓库环境中击败NOSQL。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接