Как моделировать данные, используя Cassandra и Ignite вместе? - PullRequest
0 голосов
/ 28 марта 2019

Я исследую, как моделировать данные, используя и Кассандру, и Ignite вместе.Пока что основная рекомендация моделирования данных в Cassandra (взятое из этой статьи ) ясна: «моделируйте данные вокруг ваших запросов».Автор приводит пример «поиска пользователя».Мы хотим искать пользователей по их имени пользователя или по электронной почте, и, по его словам, лучшим подходом было бы иметь две таблицы:

CREATE TABLE users_by_username (
    username text PRIMARY KEY,
    email text,
    age int
)

CREATE TABLE users_by_email (
    email text PRIMARY KEY,
    username text,
    age int
)

Однако с Ignite на вершине Cassandra все путается.К сожалению, я не смог найти каких-либо полезных примеров или ответов на следующие вопросы:

  1. Означает ли наличие нескольких таблиц, в которых хранится пользовательская информация, наличие кеша Ignite для каждой из этих таблиц?
  2. Имеет лисоставной первичный ключ означает ввод нового типа для каждого ключа и использование его в качестве ключа кэша Ignite?
  3. Наличие Ignite означает отсутствие прямого чтения из Cassandra.Это даже делает сцену беспокоящейся при моделировании данных в соответствии с лучшими практиками NoSql?Будет ли хорошо иметь только одну пользовательскую таблицу и позволить Ignite позаботиться о запросах по имени пользователя или электронной почте.
CREATE TABLE users (
    id uuid PRIMARY KEY,
    username text,
    email text,
    age int
)

1 Ответ

1 голос
/ 28 марта 2019
  1. Вероятно, у вас должен быть один кеш для каждой таблицы Кассандры.

  2. Если ваш оригинальный ключ составной, то ключ зажигания должен быть.

  3. Вам потребуется использовать вторичные индексы в Ignite для запроса более чем по одному полю, а это значит, что вам придется хранить все данные в Ignite (что НЕ обязательно для сценария чистого кэширования). Это означает включение readThrough и writeThrough, выполнение loadCache и всегда выполнение всех обновлений через Ignite. Вам придется выбирать между «Ignite as cache для Cassandra» (придерживайтесь компоновки данных Cassandra, может содержать частичные данные) и «Ignite as DB, поддерживаемой Cassandra» (вы можете использовать макет, оптимальный для Ignite, вторичные индексы).

...