DynamoDB и ElasticSearch - подходы к проектированию таблиц

Я сейчас думаю о своей базе данных DynamoDB. Цель состоит в том, чтобы получить максимальную скорость с действительно большим объемом данных. Мне DynamoDB кажется хорошим вариантом. Кроме того, мне необходимо подключить таблицу к ElasticSearch, потому что мне нужны геоточки-запросы (например, показать мне все сообщения, которые находятся в определенной области). Будет ли вам понятен следующий подход в отношении лучших практик DynamoDB? Возможно, что ключ сортировки, например, «сообщения», является горячей точкой, но если я запрашиваю только с помощью ElasticSearch, проблем не должно быть, верно? Какое было бы лучшее решение?

Мои таблицы выглядят так:

Итак, мои мысли:

  • Чтобы запросить всех пользователей, просто выберите каждую строку с помощью sort_key 'user'
  • Чтобы получить сообщение от создателя, запросите post_id и sort_key 'post'

В реляционной базе данных две таблицы будут выглядеть следующим образом:  введите описание изображения здесь


person m_____0    schedule 27.05.2019    source источник


Ответы (2)


Вы можете сделать что-то вроде использования перегруженных атрибутов (используя одни и те же столбцы для разных вещей)  введите описание изображения здесь

Затем запросите с user_id и post_id = 0 информацию о пользователе и post_id = others для сообщений.

person dDarkLORD    schedule 28.05.2019

Я не думаю, что Dynamo DB - хороший вариант для этого. Ограничения для DynamoDB указаны ниже.

  • Вы не можете получить больше 1 МБ данных за один вызов API.
  • поиск с подстановочными знаками даст вам низкую производительность
  • Агрегация будет кошмаром, так как вы планируете огромные данные
person Sarath Kumar    schedule 28.05.2019