Лучший способ получить пользовательские сообщения в Cassandra CQL? - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь создать приложение чата с использованием базы данных Cassandra. поэтому я хочу получать сообщения, которые отправляются между пользователями (приватный чат). поэтому я хочу получить лучший и оптимальный способ сделать CQL-запрос? Какова ваша идея?

моя структура таблицы сообщений пользователя. enter image description here

Ответы [ 3 ]

1 голос
/ 11 февраля 2020

Все, что было сказано, верно.

  • На основе вашей модели данных по вашим запросам
  • DS2020 на academy.datastax.com - полный курс, объясняющий, как это сделать.

Сейчас Что касается вашего примера чата, вот несколько предложений

DROP TABLE IF EXISTS sample_chat;

CREATE TABLE IF NOT EXISTS sample_chat (
  fromuser    text,
  touser      text,
  message_id  timeuuid,
  body        text,
  PRIMARY KEY ((fromuser, touser), message_id)
) WITH CLUSTERING ORDER BY (msg_time DESC);

INSERT INTO sample_chat(fromuser, touser, message_id, body) VALUES('Cedrick', 'Hasan', now(), 'Hi Hasan do you like Cassandra');
INSERT INTO sample_chat(fromuser, touser, message_id, body) VALUES('Hasan', 'Cedrick', now(), 'Yeah Cassandra rocks');
INSERT INTO sample_chat(fromuser, touser, message_id, body) VALUES('Cedrick', 'Hasan', now(), 'Take ds220 and give us some feedback');

select fromuser, touser, body from sample_chat;

Rational:

  • Вы хотите получить чат на основе fromuser и touser, и поэтому хороший ключ раздела. В чате между двумя пользователями не должно быть более 100 000 строк, что является рекомендуемым максимальным количеством строк для раздела.

  • Вы хотите, чтобы ваши элементы были упорядочены по времени с последним в начале (дисплей только последние сообщения в чате). Вы хотите, чтобы ваши сообщения были уникальными. Таким образом, timeuuid является хорошим типом для message_id, вы можете легко извлечь из него время и обеспечить уникальность.

  • Вы хотите не использовать time в качестве имени столбца или любой термин, который сталкивается с существующим ключевым словом cql.

0 голосов
/ 11 февраля 2020

В Cassandra вам придется работать над частью модели данных и оптимизировать запросы на основе рекомендаций Datastax или Cassandra. В соответствии с вашим приложением вы также должны поработать над частью конфигурации Cassandra, что было бы хорошо для интенсивной записи и чтения. Чтобы получить хорошую производительность в вашем приложении, вы должны учитывать не только часть базы данных, но также учитывать ОС, сеть и т. Д. c.

0 голосов
/ 10 февраля 2020

В Cassandra дизайн таблицы должен выполняться на основе запроса / запросов, которые вы собираетесь выполнить; в таком случае, как вы собираетесь запрашивать данные? на основе столбцов fromuser или touser, оба?

Datastax Academy предлагает курс DS220 , который может стать хорошей отправной точкой для изучения моделирования данных для Cassandra

...