Я новичок в CQL & составных ключах (я ранее использовал CLI) Я ищу для реализации своего старого семейства суперколонок с составными ключами. Короче говоря, мой взгляд вверх модель:Cassandra CQL3 Композитные ключи возвращают повторяющиеся значения
blocks[file_id][position][block_id]=size
У меня на следующие CQL таблица с составными ключами:
CREATE TABLE blocks (
file_id text,
start_position bigint,
block_id text,
size bigint,
PRIMARY KEY (file_id, start_position,block_id)
);
я вставить эти примеры значений:
/*Example insertions*/
INSERT INTO blocks (file_id, start_position, block_id,size) VALUES ('test_schema_file', 0, 'testblock1', 500);
INSERT INTO blocks (file_id, start_position, block_id,size) VALUES ('test_schema_file', 500, '2testblock2', 501);
Я запрашиваю используя этот код Astyanax:
OperationResult result = m_keyspace.prepareQuery(m_BlocksTable).getKey(file).execute();
ColumnList<BlockKey> columns = (ColumnList<BlockKey>) result.getResult();
for (Column<BlockKey> column : columns) {
System.out.println(StaticUtils.fieldsToString(column.getName()));
try{
long value=column.getLongValue();
System.out.println(value);
}catch(Exception e){
System.out.println("Can't get size");
}
}
Когда я перебираю результат, я получаю 2 результата для каждого столбца. Тот, который содержит «размер», и тот, где столбец «размер» не существует.
recorder.data.models.BlockKey Object {
m_StartPosition: 0
m_BlockId: testblock1
m_Extra: null
}
Can't get size
recorder.data.models.BlockKey Object {
m_StartPosition: 0
m_BlockId: testblock1
m_Extra: size
}
500
recorder.data.models.BlockKey Object {
m_StartPosition: 500
m_BlockId: 2testblock2
m_Extra: null
}
Can't get size
recorder.data.models.BlockKey Object {
m_StartPosition: 500
m_BlockId: 2testblock2
m_Extra: size
}
501
Поэтому у меня есть два вопроса:
- Теоретически мне не нужны колонки размера, оно должно быть значение составного ключа: блоки [file_id] [положение] [block_id] = размер вместо блоков [file_id] [position] [block_id] ['size'] = size. , Как правильно вставить эти данные на CQL3 без создания столбца избыточного размера?
- Почему я получаю дополнительный столбец без «размера», если я никогда не вставил такую строку?
Спасибо за ответ. Вы знаете, какова природа метаданных? – eshalev