2015-02-27 4 views
3

Как статические столбцы хранятся внутри кассандры? Может кто-нибудь, пожалуйста, разместите пример обсуждения реализации статического столбца в кассандре?Cassandra Static Column design

+0

Я уже искал в интернете для документации, но не может найти какую-либо деталь, связанную с внутренней структурой –

ответ

12

Почему бы нам не взглянуть на структуру таблицы со статическими столбцами на диске и узнать?

cqlsh:test> CREATE TABLE test (k int, v int, s int static, d int, PRIMARY KEY(k,v)) 

cqlsh:test> INSERT INTO test (k, v, s, d) VALUES (1, 1 ,20, 1); 
cqlsh:test> INSERT INTO test (k, v, s, d) VALUES (1, 3 ,21, 2); 
cqlsh:test> INSERT INTO test (k, v, s, d) VALUES (1, 2 ,21, 2); 

Выход из C * и запустить nodetool flush, чтобы сделать наш sstables. Запустите sstable2json в файле .db, который был создан в каталоге данных.

[ 
{"key": "1", <--- K=1 Partition 
"cells": [[":s","21",1425050917842350], <---- Our Static Column 
      ["1:","",1425050906896717], < --- C=1 row 
      ["1:d","1",1425050906896717], < --- C=1, D=1 value 
      ["2:","",1425050917842350], < --- C=2 row 
      ["2:d","2",1425050917842350], < --- C=2, D=2 value 
      ["3:","",1425050912874025], <--- C=3 Row 
      ["3:d","2",1425050912874025]]} <--- C=3, D=2 Value 
] 

Вы можете видеть, что в Кассандре этот статический столбец удерживается в ячейке с названием «Blank: ColumnName» в самом начале нашего раздела. В отличие от всех других клеток нет никакой информации о с (наша кластеризация столбец) в имени ячейки, поэтому все значения с по-прежнему изменять один и тот же статический столбец s

Для получения более подробной информации о том, почему это есть, проверить JIRA на https://issues.apache.org/jira/browse/CASSANDRA-6561 и сообщение в блоге на http://www.datastax.com/dev/blog/cql-in-2-0-6

Смежные вопросы