2012-06-28 2 views
3

Моему семейству столбцов нужны два составных столбца, тип данных ключа - BytesType.Создайте два составных столбца с cassandra-cli

Вот определение таблицы с помощью CQL:

CREATE TABLE stats (
     gid   blob, 
     period  int, 
     tid   blob, 
     sum   int, 
     uniques  blob, 
     PRIMARY KEY(gid, period, tid) 
    ); 

То, что я хочу сделать, это создать семью столбца, но с Кассандрой CLI. Вот мой выстрел.

В состав первого композита:

CompositeType(Int32Type, BytesType, AsciiType) 

, и это будет выполнено целое число.

Структура второго композита:

CompositeType(Int32Type, BytesType) 

и будет выполнено BytesType.

create column family stats with comparator = 'CompositeType(Int32Type, BytesType, AsciiType)'; 

Я не уверен, как определить второй составной столбец в команде create column family.

Конечно, я предполагаю, что таблица, созданная с помощью CQL, создаст два составных столбца.

ответ

3

У вас может быть только один компаратор на семействе колонок в кассандре. Это означает, что вы также можете иметь только один тип составного столбца в семействе столбцов. Таблица, созданная в заявлении CQL вы использовали бы фактически использовать первый композиционный тип компаратор, который Вы упоминаете:

CompositeType(Int32Type, BytesType, AsciiType) 

Этот компаратор может описать все ваши схемы из компонента «AsciiType» в конце вашего композита. Этот компонент имен столбцов будет содержать литеральную строку «sum» или «uniques», а значение столбца будет соответствовать типу соответственно.

В качестве примера с использованием обозначений JSON стиль:

<bytes> : {        # a row key in your stats column family 
    (100, <bytes>, "sum") : 100,   # one column in your row 
    (100, <bytes>, "uniques") : <bytes>, 
    (200, <bytes>, "sum") : 200, 
    (200, <bytes>, "uniques") : <bytes> 
} 
<bytes> : {        # another row in the cf 
    ... 
} 
Смежные вопросы