API-интерфейс Cassandra, эквивалентный «SELECT… FROM… WHERE id IN (’…’, ‘…’, ‘…’);»

StackOverflow https://stackoverflow.com/questions/2445878

  •  20-09-2019
  •  | 
  •  

Вопрос

Предположим следующий набор данных:

id       age  city      phone
==       ===  ====      =====
alfred   30   london    3281283
jeff     43   sydney    2342734
joe      29   tokyo     1283881
kelly    54   new york  2394929
molly    20   london    1823881
rob      39   sydney    4928381

Чтобы получить следующий набор результатов..

id       age  phone
==       ===  =====
alfred   30   3281283
joe      29   1283881
molly    20   1823881

..используя SQL, можно было бы выдать ..

SELECT id, age, phone FROM dataset WHERE id IN ('alfred', 'joe', 'molly');

Какой соответствующий вызов API Cassandra даст тот же набор результатов в одной команде?

Это было полезно?

Решение

CQL (SQL-подобный язык запросов Cassandra) теперь поддерживает это:

SELECT ... WHERE keyalias IN ('key1', 'key2', 'key3', ...);

http://cassandra.apache.org/doc/cql/CQL.html#Filteringrows

Другие советы

вы бы сделали multiget_slice с ключами Альфреда, Джо и Молли и SlicePredicate columns_names с идентификатором, возрастом, телефоном

Эквивалент Cassandra можно смоделировать, как описано ниже:

Users = { //this is a ColumnFamily
  "alfred": { //this is the key to this Row inside the CF
     "age":"30",
     "city":"london",
     "phone":"3281283"
  }, // end row
  // more rows...
}

где «alfred» — ваш ключ (строки), а строка состоит из трех столбцов;возраст, город и телефон.(Поле метки времени опущено (для простоты) для трех столбцов)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top