Cassandra文件结构 - 如何使用文件?

时间:2010-03-01 21:25:38

标签: nosql cassandra

在尝试使用Cassandra时,我发现Cassandra会写入以下文件:

/.../cassandra/commitlog/CommitLog-<id>.log
/.../cassandra/data/Keyspace1/Standard1-1-Data.db
/.../cassandra/data/Keyspace1/Standard1-1-Filter.db
/.../cassandra/data/Keyspace1/Standard1-1-Index.db
/.../cassandra/data/system/LocationInfo-1-Data.db
/.../cassandra/data/system/LocationInfo-1-Filter.db
/.../cassandra/data/system/LocationInfo-1-Index.db
/.../cassandra/data/system/LocationInfo-2-Data.db
/.../cassandra/data/system/LocationInfo-2-Filter.db
/.../cassandra/data/system/LocationInfo-2-Index.db
/.../cassandra/data/system/LocationInfo-3-Data.db
/.../cassandra/data/system/LocationInfo-3-Filter.db
/.../cassandra/data/system/LocationInfo-3-Index.db
/.../cassandra/system.log

一般结构似乎是:

/.../cassandra/commitlog/CommitLog-ID.log
/.../cassandra/data/KEYSPACE/COLUMN_FAMILY-N-Data.db
/.../cassandra/data/KEYSPACE/COLUMN_FAMILY-N-Filter.db
/.../cassandra/data/KEYSPACE/COLUMN_FAMILY-N-Index.db
/.../cassandra/system.log

什么是Cassandra文件结构?更具体地说,如何使用datacommitlog目录,以及data目录(Data / Filter / {中文件的结构是什么{1}})?

2 个答案:

答案 0 :(得分:29)

写入Cassandra节点首先命中 CommitLog (顺序)。 (然后Cassandra将值存储到名为Memtables的特定于列系列的内存数据结构中。只要超出其中一个可配置的阈值,就会将Memtables刷新到磁盘。(1,memtable中的datasize.2,对象的#达到一定限度, 3,记忆的有效期到期。))

数据文件夹包含每个键空间的子文件夹。每个子文件夹包含三种文件:

  • 数据文件:SSTable(命名法 借用谷歌)代表 Sorting Strings Table是一个文件 键值字符串对(按。排序) 键)。
  • 索引文件:(键,偏移)对(指向数据文件)
  • Bloom filter:数据文件中的所有键

答案 1 :(得分:21)

Cassandra File Format in detail

分隔的sstable文件中的每个ColumnFamily(例如对象)

ColumnFamilyName-version-#-Data.db
ColumnFamilyName-version-#-Index.db
ColumnFamilyName-version-#-Filter.db

enter image description here