Моделирование сложных отношений DynamoDb - PullRequest
0 голосов
/ 20 июня 2019

У меня есть система управления документами, и я хочу добавить функцию общего доступа, когда пользователю дается ссылка или псевдоним, и я получаю документ на основе ссылки.Я могу создать модель в традиционном 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, которые достигнут моих результатов, но я не смог найти ничего, что удовлетворяло бы всем моим сценариям запросов.

  • Создание документа
  • Создание псевдонима из существующего документа
  • Извлечение определенного документа
  • Извлечение документа из псевдонима документа
  • Связывание псевдонима с пользователем
  • Обновление существующего документа
  • Обновление при обращении пользователя к псевдониму
  • Удаление существующего документа
  • Удалениепсевдоним из документа
  • Удаление псевдонима у пользователя
  • Список всех документов, которые есть у пользователя
  • Список всех документов, которые являются общими для пользователя
...