Cassandra 数据如何更新

Posted yuxiaohao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cassandra 数据如何更新相关的知识,希望对你有一定的参考价值。

数据如何更新

 

Apache Cassandra™(DDAC)数据库DataStax分发将每个新行都视为upsert:如果新行的主键与现有行的主键相同,则数据库会将其作为对现有行的更新进行处理。

写入过程中Cassandra会将每个新行添加到数据库中,而无需检查是否存在重复记录。此策略使数据库中可能存在同一行的许多版本。

定期将存储在内存中的行流式传输到磁盘中,称为SSTables结构。在某些时间间隔,数据库会将较小的SSTable 压缩为较大的SSTable。如果在此过程中数据库遇到同一行的两个或多个版本,则它只会将最新版本写入新的SSTable中。压缩之后,数据库将删除原始的SSTable,删除过时的行。

大多数Cassandra安装都将每行的副本存储在两个或更多节点上。每个节点独立执行压缩。这意味着已从一个节点删除了行的过时版本,它们可能仍存在于另一节点上。

这就是为什么数据库在读取过程中执行另一轮比较的原因当客户端使用特定的主键请求数据时,Cassandra从一个或多个副本中检索该行的许多版本。具有最新时间戳的版本是唯一返回给客户端的版本(“ last-write-wins”)。

注意:某些数据库操作可能只写一行的部分更新,因此某行的某些版本可能包括一些列,但不是全部。在压缩或写入期间,数据库将使用每列的最新版本,从部分更新中汇编出每行的完整版本。

以上是关于Cassandra 数据如何更新的主要内容,如果未能解决你的问题,请参考以下文章

cassandra如何使用memtable处理更新

如何使用 Achilles 更新 cassandra 中的 TTL,如果不存在则抛出异常

如何在 cassandra 中通过更新时间获得最后 n 个结果?

更新 Cassandra 中的非规范化数据

CQL Cassandra - 如何在插入或更新中使用 SELECT 结果

如何从cassandra中非常大的表中读取所有行?