Имеют ли смысл ручные индексы на Cassandra?

Имеет ли смысл эта простая схема в контексте Кассандры? Или я могу просто использовать уникальный индекс ограничения вместо ручной индексации через ключ раздела для имени пользователя и электронной почты? Я понял, что для обеспечения нормальной эффективности индекса в Cassandra консультация должна включать ключ раздела, поэтому, если я хочу выполнить «обход» для таблицы с миллионами строк без указания ключа раздела только столбца индекса, это может быть не так. так быстро, как это должно быть, поэтому ручное индексирование путем создания новых ключей раздела становится лучшим выбором. Верно ли это представление? Единственная проблема с ручным индексированием заключается в том, что вам нужно будет сделать это вручную, если вы удалите строку для «пользователей», вам нужно будет получить соответствующие значения для соответствующего индексированного столбца перед удалением, чтобы иметь возможность удалить индексы вместе, и, возможно, также потребуется его пакетная обработка. Я неправильно понял Кассандру?

 CREATE TABLE users (
  id uuid PRIMARY KEY,
  username text,
  email text,
  password_hash text,
  password_salt text,
  display_name text,
  timezone int,
  created_at timestamp,
  last_login_at timestamp
 );

 CREATE TABLE usernames (
  username text PRIMARY KEY,
  user_id uuid
 );

 CREATE TABLE user_emails (
  email text PRIMARY KEY,
  user_id uuid
 );

person Caio Luts    schedule 30.05.2014    source источник


Ответы (1)


Ручное индексирование может привести к накладным расходам, то есть вам необходимо поддерживать индексы вместе с данными при выполнении операций CRUD.

Поэтому рекомендуется использовать поддержку вторичной индексации Cassandra.

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

person kkmishra    schedule 02.06.2014