2010-03-01 14 views
21

Al experimentar con Cassandra he observado que Cassandra escribe a los siguientes archivos:Estructura de archivos de Cassandra: ¿cómo se usan los archivos?

/.../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 

La estructura general parece ser:

/.../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 

¿Cuál es la estructura de archivos Cassandra? Más específicamente, ¿cómo se utilizan los directorios data, commitlog, y cuál es la estructura de los archivos en el directorio data (Data/Filter/Index)?

+3

manera de sumergirse en y entiende lo que está pasando bajo el capó en Cassandra! – Brian

Respuesta

29

Una escritura en un nodo Cassandra primero llega al CommitLog (secuencial). (Luego, Cassandra almacena valores en las estructuras de datos en memoria específicas de la familia de columnas llamadas Memtables. Las Memtables se vacían en el disco cuando se excede uno de los umbrales configurables. (1, Datasize in memtable. 2, # de objetos alcanzan cierto límite, 3, la vida útil de una memtable expira.))

La carpeta de datos contiene una subcarpeta para cada espacio de teclado. Cada subcarpeta contiene tres tipos de archivos:

  • archivos de datos: Un SSTable (nomenclatura tomado de Google) representa Ordenado Cuerdas Mesa y es un archivo de pares de cadenas de valor clave (ordenados por teclas). archivo
  • Índice: (Key, offset) pares (puntos en un archivo de datos)
  • Bloom filter: todas las claves en el archivo de datos
+1

+1: ¡Excelente respuesta! ¡Gracias! – knorv

+0

Gracias. La wiki de Cassandra es un buen lugar para comenzar si quieres tener una comprensión/descripción más profunda sobre la terminología y la nomenclatura utilizada en Cassandra. – Schildmeijer

21

Cassandra File Format in detail

Cada ColumnFamily (Ej objeto.) en archivos sstable separadas

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

enter image description here

Cuestiones relacionadas