Cassandra如何管理列和列数据的插入、更新和删除。内部
实际上,我对卡桑德拉的一些概念感到困惑。Cassandra如何管理列和列数据的插入、更新和删除。内部,cassandra,cql3,Cassandra,Cql3,实际上,我对卡桑德拉的一些概念感到困惑。 我们更新Cassandra row实际上是什么意思?这是否意味着添加更多列或更新列的值。或者两者兼而有之。? 当我们向一行添加更多列时。sstable中的前一行是否已失效,并且新行条目是否与新添加的行一起插入sstable中。? 由于SSTable是不可变的,因此每次更新列数据或添加列或删除列数据都会导致上一行无效,并插入一个包含所有上一列+新列的新行? 请帮忙 此处介绍了更新: 正如您所注意到的,SSTables是不可变的,所以您可能想知道当稍后的写
INSERT INTO db.tbl (id, value) VALUES ('text_id1', 'some text as a value');
INSERT INTO db.tbl (id, value) VALUES ('text_id1', 'some text as a value');
您将得到一个分区,因为第一个分区被第二个插入覆盖。这意味着插入具有重复键的分区会导致覆盖上一个分区(覆盖基于插入时的时间戳,最后一次写入获胜)
当我们向一行(分区)添加更多列(单元格)时。是
sstable中的上一行无效,新行条目无效
插入到带有新添加行的SSTABLE中
对于cql,前面的列只包含一个null
值。不会发生无效,您可以随意更改模式。如果删除列,其数据将在下次压缩期间删除,目的是回收磁盘空间
由于SSTable是不可变的,所以列数据或
添加列或删除列数据将导致
使前一行无效并插入一个包含所有
上一列+新列
在某种程度上,必要时将SSTABLE合并到更大的SSTABLE中,这取决于所使用的压缩策略。有两种口味,大小分层和水平压实。涵盖它们如何工作是一个完全独立的问题,比我聪明的人已经回答了。这是三个广泛的问题。请提出具体问题。很好的解释。谢谢你的链接。真是帮了大忙@亚当,当我读到第一个链接时,一个问题掠过我的脑海。内存中的每个SStable是否都有单独的密钥缓存,由Cassandra为特定SStable的持久化分区维护??