我打算在此任务上替换Oracle SQL:
- 几十亿行(n * 1000百万)
-100%的操作是简单的选择
但是有10种不同的标准来选择数据。他们也结合在了一起。例如。
search1 - "select ... where name = 'x' and birth = 'y'"
search2 - "select ... where name = 'x' and phone = 'y'"
et c
令人惊讶的是,发现在Cassandra进行此类查询非常痛苦。 特别是,关于20亿个细胞限制以及我们不计划巨大的集群。起初它可以在1台服务器上运行,因此这种划分分区不会带来任何利润,但需要时间来克服。
所以,问题是:
- 一个(或者两个,如果Oracle也会很慢)使用Cassandra的服务器会比一个RDBMS服务器快得多吗?
- 我的任务的数据模型是正确的(不是丑陋的),或者根本不适用于Cassandra?
- 其他NOSQL数据库可能更适合吗?
答案 0 :(得分:1)
Cassandra CQL不适合进行表扫描或即席查询。
当您执行针对一行或一组群集行(在分区内)的事务性查询时,Cassandra CQL的效果最佳。
因此,在您的示例中,如果您想按名称对数据进行分区,那么Cassandra会工作,然后一次处理一个名称。通过添加更多节点,这将扩展到数十亿个名称。
但是如果你想搜索特定选择标准的所有名称,那么这是一个表格扫描,你必须将Cassandra与火花这样的东西配对才能有效。
因此,对于您的用例,使用关系数据库可能比使用Cassandra更好。如果你想使用Cassandra,你可能需要创建几个包含重复数据的表,其中每个表使用一个用于处理一种或两种不同查询类型的键。
答案 1 :(得分:0)
进一步搜索表明,MongoDB完全适合这项任务,速度比Oracle SQL快10倍。