Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Cassandra:如果更新发生在commitlog刷新到Memtable之前,该如何处理_Java_Cassandra_Cassandra 3.0_Spark Cassandra Connector - Fatal编程技术网

Java Cassandra:如果更新发生在commitlog刷新到Memtable之前,该如何处理

Java Cassandra:如果更新发生在commitlog刷新到Memtable之前,该如何处理,java,cassandra,cassandra-3.0,spark-cassandra-connector,Java,Cassandra,Cassandra 3.0,Spark Cassandra Connector,cassandra的写入路径: 步骤1-数据立即写入commitlog。 步骤2-达到阈值后,将CommitLog刷新到Memtable中 步骤3-一旦Memtable中的大小达到阈值,数据将作为SSTable刷新到磁盘中 在上述过程中,如果数据在步骤1本身更新,那么它是否需要任何特殊处理 例如,我们有employee列族。数据开始由程序写入列族,插入10行后,对第3行发出更新,但数据仍不会刷新到Memtable中 Cassandra会将此场景作为崩溃恢复来处理吗 请就此分享看法。这是Cassa

cassandra的写入路径:

步骤1-数据立即写入commitlog。 步骤2-达到阈值后,将CommitLog刷新到Memtable中 步骤3-一旦Memtable中的大小达到阈值,数据将作为SSTable刷新到磁盘中

在上述过程中,如果数据在步骤1本身更新,那么它是否需要任何特殊处理

例如,我们有employee列族。数据开始由程序写入列族,插入10行后,对第3行发出更新,但数据仍不会刷新到Memtable中

Cassandra会将此场景作为崩溃恢复来处理吗


请就此分享看法。

这是Cassandra的写入路径

  • 如果在创建键空间时将持久写入设置为true,则数据将附加到Commitlog
  • 数据也会立即写入Memtable
  • 一旦Memtable达到阈值,数据将作为SSTable刷新到磁盘中
  • 在刷新到磁盘之前的任何时间内,如果发生更新,memtable将捕获更新的记录,并将commitlog附加到该更新中。现在如果发生车祸;在重新启动Cassandra期间,所有这些记录都从commitlog重放,因此可以保证写入/更新的持久性


    如需更多信息

    感谢分享详细信息。我错了,数据是分别用CommitLog和Memtable编写的。