Как мне сохранить таблицу подписчиков / подписчиков? - PullRequest
1 голос
/ 12 октября 2019

Прямо сейчас я использую DynamodB для приложения чата, где пользователь присоединяется к комнате, и они будут видеть сообщения всех остальных.

Как бы я структурировал свой стол? Мой первичный ключ - идентификатор комнаты, но я не уверен, как бы я структурировал пользователей в чате для этой таблицы.

Создание пользовательского uuid в качестве ключа с логическим значением кажется неправильным -

"6d5e2ce1-cfc7-4722-ae35-c7dfd24c1e94" : true

1 Ответ

2 голосов
/ 12 октября 2019

Учитывая, что вы храните в таблице RoomActivity только пользовательские данные, а не реальные сообщения чата, я бы сказал:

RoomActivity
------
roomActivityId (hash key, uuid)
roomId (gsi, uuid)
userId (gsi, uuid)
joinedDate (timestamp)
status (enum - JOINED, LEFT,...)

, где User и Room - это отдельные таблицы, содержащие конкретные данныео них.


Лично у меня была бы новая запись для каждого изменения статуса и учитывая в моем коде только самую последнюю запись (по метке времени), но вы также можете обновить статус напрямую.

Если вы хотите получить всех пользователей из комнаты, используйте индекс roomId.

Если вы хотите получить все комнаты пользователя, используйте индекс userId.

...