我正在设计 Cassandra 数据库来了解它。但我有一个问题希望专家帮我澄清:
我读到每个列族的行通过节点分布,因此每个节点都有给定列族的行的一部分。这是否意味着即使列族有数百万行,将一个列族划分为许多列族也不是一个好主意?
我使用 RDBMS 的经验表明,最好将非常大的表拆分为较小的表以获得更好的性能,但似乎在 Cassandra 中不需要这样做,而且,如果我有很多列族,我会这样做需要更多内存。我对吗?为了获得更好的性能,在列族中保留许多行是否比将列族拆分为许多行更好?
谢谢!
最佳答案
Cassandra 中无需对列族进行分片。只要您拥有存储空间和存储数据的机器,您就可以在一张 CF 中放入尽可能多的数据。然而,需要考虑的一件事是,使用许多较小的机器会比使用一些具有真正大驱动器的机器获得更好的性能。而且您不想将所有数据放在共享存储上。 Cassandra 通过并行顺序读取和写入来提高速度。
您确实需要注意的一件事是无限制的行增长 - 即。以无限制的方式向行添加列。这是一个非常容易解决的问题,如果需要的话可以通过分片键来解决。但即便如此,您也可以连续写入数百万列。
关于performance - Cassandra 性能: split CF or not?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14650926/