cassandra - 订购 : Cassandra vs RDBMS

标签 cassandra rdbms

在关系数据库中,我们在编写获取查询时决定排序。但对于 Cassandra,我们必须在创建表时执行此操作。

造成这种差异的原因是什么?

最佳答案

对数据进行排序或排序在时间和空间方面都非常昂贵。需要处理整个数据集来决定顺序,并且排序不能完全以分布式方式完成。最好的算法的复杂度为 O(n * log n)。在实践中,当数据适合主存(不需要在磁盘上存储中间数据或从另一个节点移动)并且其复杂度为 O(n * n) 时,通常会使用快速排序,但通常情况下比合并表现更好。排序或其他 O(n * log n) 算法。

RBDMS 通常不是分布式的,因此如果数据不适合主内存,性能会受到磁盘 IO 的影响。对于分布式数据库和分布式数据,需要在节点之间移动数据,这通常会非常昂贵。

在 RDBMS 中查询花费大量时间的情况并不罕见。因此,提供了工具来研究查询计划,以便可以调整查询或添加必要的索引。在最坏的情况下,它需要具体化查询结果、更改架构,或者放弃并转移到另一个专为分析处理而设计的 DBMS。

Cassandra 选择了不同的方法:它专注于性能,不支持昂贵的操作。相反,它要求用户提前考虑数据使用情况和 future 查询,并根据 future 使用情况设计模式。为了获得有序的结果,需要将所需的列包含到聚类键中。但是,该顺序将按分区维护,而不是跨分区维护。这与决定新记录的全局顺序可能需要查看其他节点的数据的原因相同。

有限的查询支持允许在 Cassandra 中提供性能保证。

关于cassandra - 订购 : Cassandra vs RDBMS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68243472/

相关文章:

mysql - 计算某个属性中具有相同值的元组实例的数量

database-design - 为公交车票务系统设计一个规范化的数据库。乘客从不同的来源地前往不同的目的地

elasticsearch - Cassandra 和高级查询 : Spark, ElasticSearch, Sorl

cassandra - 不平衡的 Cassandra 集群

asp.net - 如何设计 "Country"、 "Province"和 "City"表?

javascript - 如何通过在 SuiteScript 2.0 中使用左外连接连接两条记录来在 netsuite 中创建保存的搜索

java - CQL 中是否存在 sum 函数描述?

cassandra - Cassandra 什么时候遇到阿姆达尔定律?

cassandra - 如何在 cassandra 中使用 sstableloader 转储索引的 .db 文件

database - 如何将表从一个数据库转移到另一个数据库?