- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我试图更好地理解 Cassandra 中 sstables 的不变性。当数据存在于 memtable 中时,在插入操作或更新/删除操作中会发生什么非常清楚。但是不清楚当我想修改已经被刷新的数据时会发生什么。
所以我理解了简单的 senario:我执行一个插入操作并将数据写入内存表。当 memtable 已满时,它会被刷新到 sstable。
现在,数据的修改是如何发生的?当我执行删除或更新命令时(当数据已被刷新时)会发生什么?如果 sstable 是不可变的,那么数据将如何被删除/更新? memtable 如何在删除和更新命令中工作(因为它已被清除,所以不存在于其中的数据)? memtable 将包含什么?
最佳答案
在 Cassandra/Scylla 中,你总是追加。这意味着任何操作,无论是插入/更新/删除都会为该分区创建一个包含新数据和新时间戳的新条目。在删除操作的情况下,新条目实际上将是一个带有新时间戳的墓碑(表示以前的数据已被删除)。这适用于数据是否仍在内存 (memtable) 中或已经刷新到磁盘 -> 已创建 sstable。
具有不同数据和不同时间戳的同一分区的多个“版本”可以同时驻留在多个sstables(甚至内存)中。 SStables 将合并持续时间压缩,并且可以应用多种压缩策略。
当 gc_grace_period
(默认值:10 天,可调)过期时,在下一次压缩时,该墓碑将被删除,这意味着已删除的数据和墓碑指示最新操作(删除) , 不会合并到新的 sstable 中。
memtables 的内部实现在 Scylla 和 Cassandra 之间可能略有不同,但为了简单起见,我们假设它们是相同的。
欢迎您阅读以下文档中有关架构的更多信息:
关于database - 理解 SSTable 不变性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51000833/
nodetool cfstats 显示以下输出: Read Count: 746287 Read Latency: 8.772114064696291 ms. Write Count: 135629
有没有办法控制 SSTable 的最大大小,例如 100 MB,这样当 CF 的数据实际超过 100MB 时,Cassandra 会创建下一个 SSTable? 最佳答案 不幸的是,答案并不是那么简单
在 BigTable/GFS 和 Cassandra 术语中,SSTable 的定义是什么? 最佳答案 排序字符串表(借自google)是一个键/值字符串对的文件,按键排序 关于computer-sc
所以我正在研究 Cassandra 并试图了解其架构,并且我正在阅读 wiki 中的以下页面: http://wiki.apache.org/cassandra/MemtableSSTable 因此,
我试图更好地理解 Cassandra 中 sstables 的不变性。当数据存在于 memtable 中时,在插入操作或更新/删除操作中会发生什么非常清楚。但是不清楚当我想修改已经被刷新的数据时会发生
使用自制软件安装 cassandra12 后,它会退出并显示以下消息: java.lang.RuntimeException: Can't open incompatible SSTable! Cur
我们使用的是 cassandra 2.0.17,我们有一个包含 50% 选择、40% 更新和 10% 插入(无删除)的表。 为了对此类表具有较高的读取性能,我们发现建议使用 LeveledCompac
我已经意识到一些 sstables 不会被丢弃,即使它们只包含墓碑。 使用手动主要压缩这些 sstables 被删除。 也许它需要将 unchecked_tombstone_compaction 与
在 Cassandra 2.x 中,当我删除一列或多列时,它们会在 Memtable 中收到一个逻辑删除,但数据不会被删除。在某个时刻,Memtable 会刷新到 SSTable,其中包括已删除的数据
我正在尝试使用 sstable2json 实用程序将 sstables 转换为 json。它工作正常,但对于计数器列,它给出了一个非常长的字符串值。 我的建表语句:创建表计数器1 (值计数器, 名称变
根据我在 cassandra 中的理解 当客户端将数据写入单个服务器时,它会写入提交日志(仅追加日志而没有随机搜索)。然后将数据放入驻留在内存中的 MEMTable 中。然后确认写入成功。当 MEMT
根据: http://www.datastax.com/docs/1.0/ddl/column_family#about-column-family-compression RDBMS 看到压缩导致性
阅读 nodetool 标记的问题后编辑。 我们每天拍摄我们的单节点 cassandra 数据库的快照。如果我想在该节点上或在运行不同 cassandra 实例的临时服务器上恢复快照,我的理解是我必须
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 4 年前。 Improve this qu
我最近开始使用 Cassandra 数据库。我已经在本地机器中安装了单节点集群。我正在使用 Cassandra 1.2.3。 我在互联网上阅读这篇文章,发现了这一行- Cassandra writes
当使用 LeveledCompactionStrategy 时,sstables 被组织在“级别”中。是否可以查看文件属于哪个级别? 背景:我有一堆我最终会压实的墓碑。我很好奇这些墓碑到底有多少层。
在我运行之后:- sudo service cassandra start 然后是 sudo service cassandra status 我得到一个无法访问 Cassandra 的 pidfil
我是Cassandra等nosql数据库的新手,目前看到这个二级索引和sstable附加二级索引。有些我对在 Cassandra 中使用二级索引的目的感到困惑,关系数据库和带二级索引的 Cassand
使用两个数据库来说明这个例子:CouchDB和 Cassandra . CouchDB CouchDB 使用 B+ 树作为文档索引(使用 a clever modification 在其仅附加环境中工
我在哪里可以找到有关哪个版本的 Cassandra 支持哪个版本的 SSTables 的更多信息。 最近我注意到 DSE Cassandra 正在生成 SSTables bti ,而 Apache C
我是一名优秀的程序员,十分优秀!