cassandra 向CQL表中添加列是常数时间操作还是线性时间操作?

iyfjxgzm  于 2022-11-05  发布在  Cassandra
关注(0)|答案(1)|浏览(107)

在修改表以添加新列时,Cassandra文档指出

Adding a column is a constant-time operation based on the amount of data in the table.

但是,这可能有点不明确。这是否意味着它是线性时间,因为执行时间取决于表中的数据量?

nzk0hqpo

nzk0hqpo1#

无论表中有多少数据,向表中添加列所需的时间都是相同的。
如果您还记得的话,SSTables(Cassandra数据文件)是不可变的--一旦它们被写入磁盘,它们就 * 永远不会改变 *。
当您向表中添加列时,现有的SSTables实际上不会发生任何变化-- Cassandra不会更改/更新/修改现有文件。但是,如果您的应用将数据写入新列,新刷新的SSTables将包含新列。
类似地,下一个压缩周期中新合并的SSTables将包含新列,这意味着无论表是空的还是包含TB数据,添加新列所需的时间都是完全相同的。
与此相关的是集群拓扑。架构更改通过gossip传播,它不遵循正常的写入路径。集群越大,架构更改传播到大型集群中的所有节点所需的时间就越长。干杯!

相关问题