2015-12-24 5 views
3

Я нахожусь на пути к изучению Cassandra и различий в CQL и SQL, но я замечаю отсутствие способа проверить, существует ли запись с Cassandra. В настоящее время лучшим способом, который у меня есть, является использованиеCQL проверить, существует ли запись

SELECT primary_keys FROM TABLE WHERE primary_keys = blah, 

и проверка наличия пустых результатов. Есть ли лучший способ сделать это, или у меня есть правильная идея?

ответ

6

Это обычный способ в Кассандре проверить, существует ли строка. Вы не можете вернуть все первичные ключи, если все, что вы заботитесь о том, если строка существует или нет, так что вы можете сделать это:

SELECT count(*) FROM TABLE WHERE primary_keys = blah, 

Это просто возвращает 1, если строка существует, и 0 если он не существует.

3

Используя count, он будет перемещать все соответствующие строки, чтобы их можно было считать. Но вам нужно только проверить его, просто ограничьте и верните все. Затем интерпретируйте наличие результата как true, а отсутствие - как false. Например,

SELECT primary_keys FROM TABLE WHERE primary_keys = blah LIMIT 1 
+1

Если включить все столбцы первичного ключа в запросе, то это не возможно, чтобы было больше, чем один результат? – OrangeDog

0

Если вы используете первичный ключ для фильтрации строк, все вышеупомянутые 3 решения (включая ваши) являются точными. И я не думаю, что есть реальные различия.

Но если вы используете общий способ (например, индексированный столбец, раздел) для фильтрации строк, вы должны принять решение «Ограничение 1», которое позволит избежать бесполезного сетевого трафика.

Существует родственный пример по адресу: The best way to check existence of filtered rows in Cassandra? by user-defined aggregate?