我们计划在现有的cassandra表中添加一个list类型的列,该表的数据文件大小约为350 GB。我们可以在应用模式更改时暂停所有读/写操作几分钟。
我们的理解是,cassandra在应用模式更改时不会锁定表,但为了确保我们的DBA希望在包含25 GB大小的数据文件的表上进行实验。然而,在运行非生产cassandra服务器的小型服务器上,需要3-4周的时间才能增长到这样的大小(具有更多的并发插入开始导致超时问题)。
有人知道向现有的cassandra表添加一列会立即返回,而不考虑底层数据文件的大小吗?
谢谢
发布于 2020-04-28 16:43:10
在Cassandra中添加一列只是将列的元信息添加到保存模式信息的内部表中。当此更改完成时,不会对现有数据进行任何修改-当磁盘上没有数据时,Cassandra将简单地将null而不是列值放入(对于任何列,不仅仅是添加的列)-这发生在将数据返回给调用者时,而不是通过向文件添加null。
类似地,删除列并不会修改现有数据-相反,会在system_schema.dropped_columns表中添加一个新条目,并在从磁盘读取相应数据后将其过滤掉。
https://stackoverflow.com/questions/61469356
复制相似问题