postgreSQL vs Cassandra vs MongoDB vs Voldemort?

Ram*_*ive 7 database scalability database-performance sharding

决定使用哪个数据库?有什么比较吗?

  • 现有:postgresql
  • 问题
    • 不容易横向扩展。需要分片等
    • 聚类不能解决数据增长问题
  • 寻找:任何易于水平扩展的数据库
    • Cassandra(Twitter 使用那个?)
    • MongoDB(迅速普及)
    • 伏地魔
    • 其他?
  • 为什么?
    • 数据随着滚雪球效应增长
    • 现有的 postgresql 定期锁定表等以用于 vaccuum 任务
    • 目前归档数据很潮
    • 现有档案、真空、……过程中定期进行的人工交互
    • 需要一个'设置它。算了吧。只需在数据增长更多时添加另一台服务器。解决方案类型

Ave*_*yne 9

第一个问题:如果您不需要 ACID 属性,为什么要开始使用关系数据库?听起来您正在做某种非事务性工作,因此获取带有事务的 RDMBS 对您的环境来说可能太繁重了。

第二个问题:你存储什么样的数据?您听起来像是需要一个列存储数据库,而且它是用于某种数据仓库项目的。

第三个问题:如果您坚持使用 PostgreSQL(这是一个很好的数据库),它是当前版本吗?8.x 之前的旧版本速度非常慢,但从那时起已经进行了大量改进,您提到的一些问题(例如 autovacuum)现在可以通过“一劳永逸”设置轻松解决。

*  Data growing with snowball effect
Run Code Online (Sandbox Code Playgroud)

一些关于这方面的额外信息会很好。为什么会滚雪球?你能规范化它以减少存储吗?

* existing postgresql locks table etc for vaccuum tasks periodically
Run Code Online (Sandbox Code Playgroud)

如果这是一个问题,我已经可以看出您正在运行旧版本。较新的版本对此具有每个表的控件,您甚至可以将其完全关闭。

* Archiving data is tideous currently
Run Code Online (Sandbox Code Playgroud)

在这里很难做出任何判断,因为没有太多可使用的。档案转储到什么媒体?涉及多少持续的 I/O?您在什么时间范围内运营?多少数据?它需要是“热”转储还是可以是“冷”?

* Human interaction involved in existing archive, vaccuum, ... process periodically
Run Code Online (Sandbox Code Playgroud)

我想看看“正常”使用如何需要手动干预,因为它不应该。真空现在是自动的,并且(如前所述)可以设置为根本不发生,并且大多数备份都是脚本化的(并且当您可以编写脚本时,您可以安排)。那么这是如何发生的呢?

* Need a 'set it. forget it. just add another server when data grows more.' type of solution
Run Code Online (Sandbox Code Playgroud)

您正在谈论集群服务器安排。

对我来说,这听起来像以下内容:

  1. 您使用的是 RDBMS,它的事务性质不适合您的应用程序。
  2. 您的应用程序似乎需要一种主要读取样式的数据库。听起来您也不需要它来具有事务完整性。
  3. 您正在处理的数据量很可能没有标准化,也没有尝试对其进行标准化。
  4. 你手工做的太多了,需要更多的自动化。
  5. 您喜欢集群解决方案的想法,可能是“云风格”计算。

除此之外,这里没有足够的信息来确定什么是合适的。