我在是否选择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数据库是最佳选择?