У меня есть система управления документами, и я хочу добавить функцию общего доступа, когда пользователю дается ссылка или псевдоним, и я получаю документ на основе ссылки.Я могу создать модель в традиционном RDMS без проблем, но у нас уже есть документы в DynamodB.Когда я пытаюсь концептуально перенести эту модель в DynamodB, я борюсь.Такое ощущение, что я пытаюсь вставить круглый колышек в квадратное отверстие.
- Document (DocumentId, Body, LastUpdated)
- DocumentAlias (DocumentAliasId, DocumentId, ExpiryDate)
DocumentAliasUser (DocumentAliasUserId, DocumentAliasId, LastAccessed)
CREATE TABLE Document (
DocumentId Int,
Body varchar(max),
LastUpdated DateTime
);
CREATE TABLE DocumentAlias (
DocumentAliasId Int,
DocumentId Int,
ExpiryDate DateTime
);
CREATE TABLE DocumentAliasUser (
DocumentAliasUserId Int,
DocumentAliasId Int,
LastAccessed DateTime
);
Я пытался создать свои запросы и модель проектирования на основе этих сценариев, определяющих ключи раздела,ключи сортировки, первичные ключи, составные ключи и GSI, которые достигнут моих результатов, но я не смог найти ничего, что удовлетворяло бы всем моим сценариям запросов.
- Создание документа
- Создание псевдонима из существующего документа
- Извлечение определенного документа
- Извлечение документа из псевдонима документа
- Связывание псевдонима с пользователем
- Обновление существующего документа
- Обновление при обращении пользователя к псевдониму
- Удаление существующего документа
- Удалениепсевдоним из документа
- Удаление псевдонима у пользователя
- Список всех документов, которые есть у пользователя
- Список всех документов, которые являются общими для пользователя