【发布时间】:2011-08-30 18:00:06
【问题描述】:
最近我一直从我们新项目的角度研究 Cassandra,并从这个社区及其 wiki 中学到了很多东西。但是我没有发现任何关于 Cassandra 在物理磁盘空间管理方面如何管理更新的信息,尽管它似乎与使用压缩的记录删除管理非常相似。
假设有 100 条记录,每条记录有 5 个列值,所以当所有更改都将被刷新磁盘时,所有记录将被相邻写入,当删除操作完成时,它首先在内存表中标记,并且在设置的一段时间后删除物理记录在配置中或满时。压实过程会占用空间。
现在的问题是,一方面是模式较少,一开始没有固定数量的列,但另一方面,当压缩过程发生时......它是否像传统的 RDBMS 那样将记录相邻地放在磁盘上以加快速度RDBMS 的读取过程很简单,因为它们必须根据列数据类型的声明分配固定数量的空间。
但是 Cassandra 如何在压缩过程中准确地将记录放置在磁盘上(用于更新/删除)以加快读取速度?
另一个与压缩相关的问题是,当没有删除查询但有一个更新查询使用一些可变长度数据更新现有记录或完全插入一个新列时,那么压缩如何使其空间在磁盘上可用是否存在数据行?
【问题讨论】: