Я новичок в DynamoDB, может ли кто-нибудь помочь мне с использованием JOIN в DynamoDB? Я использую бессерверную структуру и шаблон сопоставления. У меня есть таблица с POST и USER. POST содержит поле userId. Как я могу получить все сообщения с информацией о пользователе? В MYSQL я могу использовать JOIN, но как это работает в DynamoDB? Я читал сообщения в stackoverflow, созданные 2 года назад. А ребята писали, что нет в наличии. Может что-то изменилось...?
Как я могу объединить две таблицы в DynamoDb?
- DynamoDB не является реляционной базой данных, в отличие от MySQL: dynamodb">stackoverflow.com/questions/36753861/ 10.07.2018
Ответы:
DynamoDB — это база данных NoSQL. Это дает ему разбиение на разделы, невероятную производительность, масштабируемость, надежность и т. д.
Компромисс заключается в том, что это не реляционная база данных. Поэтому DynamoDB не будет выполнять объединение таблиц.
Вам нужно будет прочитать таблицы отдельно и «присоединить» нужные данные в вашем приложении.
Например, извлеките UserId
из таблицы Post
, а затем извлеките записи из таблицы User
для данного UserId
.
Технически можно использовать Amazon EMR Hadoop для создания таблицы EXTERNAL
Hive поверх таблицы DynamoDB; затем запросите таблицу Hive с помощью HiveQL.
Однако подход Hive + DynamoDB не рекомендуется; поскольку DynamoDB предназначен для запросов с малой задержкой. Hive ориентирован на пакетную обработку.
Кроме того, Hive может выдать запрос на сканирование (по своей сути неэффективный) к таблицам DynamoDB перед применением любого предиката (ов) запроса.