最合适的数据存储数十亿的索引

时间:2012-02-02 20:15:32

标签: mysql postgresql cassandra riak

所以我们希望存储两种索引。

  1. 第一种将是数十亿的数量级,每个都有1到1000个值,每个值是一个或两个64位整数。
  2. 第二种将是数百万的订单,每种都有大约200个值,每个值大小在1KB到1MB之间。
  3. 我们的使用模式将是这样的:

    • 这两种索引都会将值添加到每秒数千次。
    • 索引很少被读取,但是当它们被读取时,它将是读取的整个索引
    • 应该修剪索引,无论是将值写入索引还是某种批处理类型作业

    现在我们考虑了不少数据库,目前我们最喜欢的是Cassandra和PostreSQL。但是,我们的应用程序是在Erlang中,它没有为Cassandra生成就绪的绑定。一个主要的要求是它不需要太多的人力来维护。我觉得Cassandra会抛出意想不到的缩放问题,而PostgreSQL只是一个痛苦的碎片,但至少对我们来说这是一个知道数量。我们已经熟悉PostgreSQL,但对Cassandra并不是很熟悉。

    因此。有关哪种数据存储最适合我们的用例的任何建议或建议?我愿意接受任何建议!

    谢谢,

    -Alec

2 个答案:

答案 0 :(得分:2)

根据今天的标准,数十亿不是一个大数字,为什么不写一个基准而不是猜测呢?这将为您提供更好的决策工具,这很容易做到。只需安装目标操作系统和每个数据库引擎,然后运行查询,让我们说Perl(因为我喜欢它) 这样做不会超过一天,我之前做过类似的事情。 一个很好的基准测试方法是编写一个随机的脚本,或者像高斯钟形曲线一样,执行查询,“模拟”真实用法。然后绘制数据或像老板那样做,只需阅读日志。

答案 1 :(得分:2)

您没有提供足够的信息来支持大部分答案:您的索引设计。但是,通过发展群集,Cassandra很容易扩展。

您可能希望阅读这篇文章:http://techblog.netflix.com/2011/11/benchmarking-cassandra-scalability-on.html

Cassandra的一个更重要的问题是它是否支持您需要的查询类型 - 可扩展性不是问题。从您给出的数字来看,这听起来像是在谈论太字节或几十TB,这对Cassandra来说是非常安全的。