Cassandra 卡桑德拉写作语义学

Cassandra 卡桑德拉写作语义学,cassandra,Cassandra,在Cassandra体系结构中,当我们执行写操作时,数据首先写入提交日志,然后写入memtable,当memtable达到阈值时,数据被刷新到SSTable中 所以在给定的时间,我们在给定的节点中有两个数据副本:一个副本在提交日志中,另一个copt在memtable中,或者刷新到SSTable 那么为什么我们需要两份拷贝呢?提交日志是否足以用于恢复目的?或者它们的用途完全不同?这三者之间又有什么不同呢?在编写时,Cassandra会将数据保存到commit log和Memtable中,这使得操作

在Cassandra体系结构中,当我们执行写操作时,数据首先写入提交日志,然后写入memtable,当memtable达到阈值时,数据被刷新到SSTable中

所以在给定的时间,我们在给定的节点中有两个数据副本:一个副本在提交日志中,另一个copt在memtable中,或者刷新到SSTable


那么为什么我们需要两份拷贝呢?提交日志是否足以用于恢复目的?或者它们的用途完全不同?这三者之间又有什么不同呢?

在编写时,Cassandra会将数据保存到commit log和Memtable中,这使得操作非常快速。如果节点在数据保存到永久SSTable之前重新启动,则内存中的数据将丢失,但可以从提交日志中恢复


所以Cassandra使用Memtables和SStables进行查找,提交日志允许随时重新启动节点而不会丢失数据。

提交日志对于恢复来说足够了,但对于查找来说效率不高。好的,您的意思是当查询数据时Cassandra会查看SSTable。对于恢复,使用提交日志。谢谢。知道了。所以,这也意味着当查询数据时,Cassandra首先查找memtable,如果在那里找到它,则返回它。否则,将查看SSTable。@Mandroid yes,并且,正如您所提到的,memtable会不时刷新到磁盘以形成一个新的SSTable。no,当它从memtable和disk@AlexOtt如果在Memtable中找到数据,它是否会查看SSTable?是的,因为Memtable可能包含“较旧”的数据-例如,如果时间戳是显式设置的