所以我们希望存储两种索引。
- 第一种将是数十亿个数量级,每个具有 1 到 1000 个值,每个值都是一个或两个 64 位整数。
- 第二种将是数百万个数量级,每个大约有 200 个值,每个值的大小在 1KB 到 1MB 之间。
我们的使用模式将是这样的:
- 这两种索引都会有高达每秒数千次的值添加到顶部。
- 索引不会被频繁读取,但当它们被读取时,将读取整个索引
- 应该修剪索引,无论是在将值写入索引时还是在某种批处理类型的作业中
现在我们已经考虑了很多数据库,目前我们最喜欢的是 Cassandra 和 PostreSQL。然而,我们的应用程序是在 Erlang 中,它没有针对 Cassandra 的生产就绪绑定(bind)。一个主要的要求是它不能需要太多的人力来维护。我感觉 Cassandra 会抛出意想不到的扩展问题,而 PostgreSQL 只会让分片变得痛苦,但至少对我们来说这是一个已知的数量。我们已经熟悉 PostgreSQL,但对 Cassandra 不是很熟悉。
所以。关于哪种数据存储最适合我们的用例,有什么建议或建议吗?我愿意接受任何和所有的建议!
谢谢,
-亚力克
最佳答案
您没有提供足够的信息来支持关于您的索引设计的大部分答案。但是,Cassandra 可以通过扩大集群来轻松扩展。
您可能想阅读这篇文章:http://techblog.netflix.com/2011/11/benchmarking-cassandra-scalability-on.html
对于 Cassandra 来说,一个更重要的问题是它是否支持您需要的查询类型——可伸缩性不是问题。从您提供的数字来看,听起来我们正在谈论 TB 或数十 TB,这对 Cassandra 来说是非常安全的领域。
关于mysql - 最适合数十亿索引的数据存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9119307/