Отношения «один ко многим» в базе данных NoSQL

#nosql #amazon-dynamodb

#nosql #amazon-dynamodb

Вопрос:

Я только начинаю изучать DynamoDB и сталкиваюсь с большой проблемой.

Предположим, у меня есть author и таблица book, где у автора может быть несколько книг, и у каждой книги должен быть автор.

итак, в NonSQL DB я просто встроил информацию об авторе в таблицу книг, чтобы решить эту проблему.

Пример кода: https://pastebin.ubuntu.com/p/DvHpS8JQJV /

Но недавно я столкнулся с проблемой, которая заключается в том, что если спустя долгое время администратор захочет изменить некоторую информацию об авторе, например, атрибут live. Как я могу добиться эффекта в таблице book.

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

В реляционной БД это легко решить, просто используйте внешний ключ и извлекайте данные с помощью запроса объединения.

Как я могу решить проблему такого типа в NonSQL или DynamoDB какие-либо предложения?

Комментарии:

1. Какие шаблоны доступа у вас есть к книгам и авторам?

Ответ №1:

У вас есть два варианта.

  • Используйте полу-sql-дизайн. Создайте отдельную таблицу для книг и авторов. И объединения будут обрабатываться на уровне приложения. Это не идеально с точки зрения производительности, но разработчикам, имеющим опыт работы с SQL, легко начать.
  • Используйте дизайн с одной таблицей. Это сложная тема. Нет серебряной пули для обработки отношений «один ко многим», как в SQL. Для этого необходимо хорошее понимание вашего домена и дизайна единой таблицы.

Комментарии:

1. Зачем разделять таблицы для книг и авторов?

2. Разрешить выполнение запросов на основе как книг, так и авторов без использования единой таблицы