запрашивание и удаление системы входящих сообщений чата с использованием cassandara - PullRequest
0 голосов
/ 13 февраля 2019

Я делаю приложение для чата с использованием Cassandra.У меня есть таблица под названием «чаты», где я храню chatid, userid и timestamp.У меня есть другая таблица, где я храню сообщения.(chatid, messageid, сообщение).Когда появляется новое сообщение для чати, я хочу обновить значение метки времени в таблице «чаты» для этого чати.Я хочу использовать CLUSTERING ORDER BY на метке времени.Когда пользователю нужно получить все свои чаты, я запрашиваю эту таблицу, используя идентификатор пользователя, чтобы упорядочить все чаты по отметке времени.У меня проблема в том, что я не могу удалить строку из таблицы "чаты", используя userid и chatid.Если я сделаю userid и chatid Primary key, я не смогу использовать только ID пользователя для получения всех чатов для пользователя.Как мне решить мою проблему.

1 Ответ

0 голосов
/ 13 февраля 2019

В вашей таблице чатов:

Вы должны создать идентификатор пользователя в качестве ключа раздела.chatid & timestamp должны быть столбцом кластеризации.См. Схему ниже:

CREATE TABLE chats (    
    userid text,
    chatid text,
    timestamp timestamp,
    PRIMARY KEY ((userid), chatid, timestamp)
) WITH CLUSTERING ORDER BY (userid ASC, timestamp DESC );

Теперь вы можете удалять только по идентификатору пользователя, ALso. Если вы хотите удалить конкретный чат, вы должны знать пользователя этого чата.так что вы можете поместить оба при удалении с помощью chatid.

Теперь Если вы хотите использовать CLUSTERING ORDER BY в столбце timestamp, тогда это должен быть столбец кластеризации, как создано выше.

В случае, если вы толькоХотите обновить отметку времени в строке напрямую невозможно, так как будет вставлена ​​новая строка.Поэтому вам нужно управлять своим кодом с помощью:

Сначала выберите с помощью идентификатора пользователя и chatid.
, если существует, затем удалите его и вставьте новую запись с обновленной отметкой времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...