#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. Разрешить выполнение запросов на основе как книг, так и авторов без использования единой таблицы