Cassandra API эквивалентно "SELECT ... FROM ... WHERE id IN ('...', '...', '...');" - PullRequest
4 голосов
/ 15 марта 2010

Допустим, следующий набор данных:

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, который дал бы такой же результат в одной команде?

Ответы [ 3 ]

4 голосов
/ 15 марта 2010

вы бы сделали multiget_slice с ключами alfred, joe и molly и SlicePredicate column_names id, age, phone

2 голосов
/ 15 марта 2010

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

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" - ваш (строка) ключ, а в строке три столбца; возраст, город и телефон. (Пропущено поле метки времени (для простоты) для трех столбцов)

1 голос
/ 30 сентября 2012

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

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

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

...