2016-07-28 4 views
2

Мне нужно сравнить Cassandra с Facebook Linkbench. Во время контрольной точки, нагрузки и фазы запроса есть две фазы. На этапе загрузки Linkbench заполняет таблицы cassandra: узлы, ссылки и подсчеты (для подсчета ссылок) со значениями по умолчанию (данные графа).Cassandra: как инициализировать столбец счетчика со значением?

граф таблица выглядит следующим образом:

keyspace.counttable ( link_id bigint, link_type bigint, time bigint, version bigint, count counter, PRIMARY KEY (link_id, link_type, time, version)

мой вопрос заключается в том, чтобы вставить значение счетчиков по умолчанию (до увеличения и уменьшения счетчика на этапе запроса Linkbench)?

Если не удается сделать это с Кассандрой, как я должен инкремента/декремента в BigInt переменную (вместо переменной счетчика)

Любой предложить и комментарии? Большое спасибо.

ответ

1

Значение по умолчанию равно нулю. Учитывая

create table counttable ( link_id bigint, link_type bigint, time bigint, version bigint, count counter, PRIMARY KEY (link_id, link_type, time, version) );

и

update counttable set count = count + 1 where link_id = 1 and link_type = 1 and time = 1 and version = 1;

Мы видим, что значение счетчика теперь 1.

select * from counttable ; link_id | link_type | time | version | count ---------+-----------+------+---------+------- 1 | 1 | 1 | 1 | 1 (1 rows)

Таким образом, если мы хотим, чтобы установить его в какой-то другое значение мы можем:

update counttable set count = count + 500 where link_id = 1 and link_type = 1 and time = 1 and version = 2; select * from counttable ; link_id | link_type | time | version | count ---------+-----------+------+---------+------- 1 | 1 | 1 | 1 | 1 1 | 1 | 1 | 2 | 500 (2 rows)

1

Нет элегантного способа инициализации столбца счетчика с ненулевым значением. Единственная операция, которую вы можете выполнять в поле счетчика, - это увеличение/уменьшение. Я рекомендую сохранить смещение (например, ваше начальное значение) в другом столбце и просто добавить два значения в клиентское приложение.

+0

Спасибо! im ищет решение только с одной операцией и одним столбцом (приращение или декремент). Это должно быть поле счетчика или целое число. – KNag

0

Благодарим за ответы. Я выполнил следующее решение для инициализации поля счетчика. как начальное и значение по умолчанию для поля счетчика. 0, я увеличил его по умолчанию. это выглядит как решение Don Branson, но только с одной колонки:

создать таблицу counttable ( link_id BigInt, link_type BigInt, отсчет счетчика, PRIMARY KEY (link_id, link_type) );

я установить значение с этим утверждением (во время фазы нагрузки):

update counttable set count = count + myValue where link_id = 1 and link_type = 1; 

select * from counttable ; 

link_id | link_type | count 
---------+-----------+-------- 
     1 |   1 | myValue (added to 0) 

(1 row) 
Смежные вопросы