Cassandra 数据如何更新
Posted yuxiaohao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cassandra 数据如何更新相关的知识,希望对你有一定的参考价值。
-
数据如何更新
Apache Cassandra™(DDAC)数据库的DataStax分发将每个新行都视为upsert:如果新行的主键与现有行的主键相同,则数据库会将其作为对现有行的更新进行处理。
在写入过程中,Cassandra会将每个新行添加到数据库中,而无需检查是否存在重复记录。此策略使数据库中可能存在同一行的许多版本。
定期将存储在内存中的行流式传输到磁盘中,称为SSTables结构。在某些时间间隔,数据库会将较小的SSTable 压缩为较大的SSTable。如果在此过程中数据库遇到同一行的两个或多个版本,则它只会将最新版本写入新的SSTable中。压缩之后,数据库将删除原始的SSTable,删除过时的行。
大多数Cassandra安装都将每行的副本存储在两个或更多节点上。每个节点独立执行压缩。这意味着已从一个节点删除了行的过时版本,它们可能仍存在于另一节点上。
这就是为什么数据库在读取过程中执行另一轮比较的原因。当客户端使用特定的主键请求数据时,Cassandra从一个或多个副本中检索该行的许多版本。具有最新时间戳的版本是唯一返回给客户端的版本(“ last-write-wins”)。
注意:某些数据库操作可能只写一行的部分更新,因此某行的某些版本可能包括一些列,但不是全部。在压缩或写入期间,数据库将使用每列的最新版本,从部分更新中汇编出每行的完整版本。
以上是关于Cassandra 数据如何更新的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Achilles 更新 cassandra 中的 TTL,如果不存在则抛出异常
如何在 cassandra 中通过更新时间获得最后 n 个结果?