Как эффективно создать DynamoDB с моей таблицей? - PullRequest
1 голос
/ 12 апреля 2019

Если в каждом обзоре моей базы данных есть только два типа (состояние: в ожидании, добавлено), эффективно ли назначать эти два типа в качестве ключей раздела? Или эффективно индексировать это значение состояния?

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019

Было бы более эффективно использовать разреженный индекс .В вашем случае вы можете добавить атрибут с именем isPending.Вы можете добавить этот атрибут к элементам, находящимся на рассмотрении, и удалить его после добавления.Если вы создаете GSI с tid в качестве ключа хеширования и isPending в качестве ключа сортировки, то в GSI будут находиться только те элементы, которые ожидают рассмотрения.

0 голосов
/ 12 апреля 2019

Это будет зависеть от того, как вы будете искать эти записи!

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

Вы также можете изучить это руководство по передовой практике от AWS: https://docs.aws.amazon.com/en_us/amazondynamodb/latest/developerguide/best-practices.html


Обновление: В этом разделе руководства по лучшей практике рекомендуется следующее:

Храните связанные данные вместе. Исследования по оптимизации таблицы маршрутизации 20 лет назад обнаружили, что "местность ссылки" был единственным Важный фактор в ускорении времени отклика: хранение связанных данных вместе в одном месте. Это в равной степени верно и для систем NoSQL сегодня, где сохранение связанных данных в непосредственной близости имеет большое влияние на стоимость и производительность. Вместо того, чтобы распространять связанные элементы данных в нескольких таблицах вы должны хранить связанные элементы в NoSQL Система как можно ближе друг к другу.

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

Исключениями являются случаи, когда используются данные большого объема временных рядов, или наборы данных, которые имеют очень разные шаблоны доступа, но это исключения. Одна таблица с инвертированными индексами обычно может включать простые запросы для создания и извлечения сложных иерархических данных структуры, необходимые для вашего приложения.

Использовать порядок сортировки. Связанные элементы можно группировать и запрашивать эффективно, если их ключевой дизайн заставляет их сортировать вместе. Это важная стратегия проектирования NoSQL.

Распределение запросов. Также важно, чтобы большой объем запросы не должны быть сосредоточены на одной части базы данных, где они могут превышать емкость ввода / вывода. Вместо этого вы должны разработать ключи данных для максимально равномерно распределять трафик между разделами, избегая «горячих точек».

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

Надеюсь, я смогу вам помочь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...