我们计划在现有的cassandra表中添加一列类型list,该表的数据文件大小约为350gb。我们可以在应用模式更改时暂时停止所有读/写操作几分钟。
我们的理解是,cassandra在应用模式更改时不会锁定表,但为了确保dba希望在一个数据文件大小为25gb的表上做一个实验。但是,在运行非生产性cassandra服务器的小型服务器上,这种规模的增长需要3-4周的时间(有更多的并发插入会导致超时问题)。
有人知道,无论底层数据文件大小如何,向现有的cassandra表添加一列都会立即返回吗?
谢谢
1条答案
按热度按时间oiopk7p51#
在cassandra中添加一列只是将该列的元信息添加到保存模式信息的内部表中。完成此更改后,不会对现有数据进行任何修改—当磁盘上没有数据时,cassandra只会将null而不是列值放入(对于任何列,而不仅仅是添加的列)—当数据返回给调用者时会发生这种情况,而不是通过将null添加到文件中。
类似地,删除列不会修改现有数据,而是向列中添加一个新条目
system_schema.dropped_columns
表,并在从磁盘中读取相应的数据后将其过滤掉。