Учебники

DynamoDB — лучшие практики

Определенные практики оптимизируют код, предотвращают ошибки и минимизируют стоимость пропускной способности при работе с различными источниками и элементами.

Ниже приведены некоторые из наиболее важных и часто используемых передовых практик в DynamoDB.

таблицы

Распределение таблиц означает, что наилучшие подходы равномерно распределяют операции чтения / записи по всем элементам таблицы.

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

Получить понимание поведения раздела. Оценка разделов, автоматически распределяемых DynamoDB.

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

При загрузке распространяйте данные для достижения лучшей производительности. Реализуйте это, загружая на все выделенные серверы одновременно.

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

Предметы

Дросселирование, производительность, размер и стоимость доступа остаются самыми большими проблемами с предметами. Выберите один-ко-многим столам. Удалите атрибуты и разделите таблицы, чтобы соответствовать шаблонам доступа. Вы можете значительно повысить эффективность с помощью этого простого подхода.

Сжатие больших значений до их сохранения. Используйте стандартные инструменты сжатия. Используйте альтернативное хранилище для больших значений атрибутов, таких как S3. Вы можете сохранить объект в S3, а идентификатор в элементе.

Распределите большие атрибуты по нескольким предметам через кусочки виртуальных предметов. Это позволяет обойти ограничения размера элемента.

Запросы и сканы

Запросы и сканирование в основном страдают от проблем с пропускной способностью. Избегайте посылок, которые обычно являются результатом таких вещей, как переключение на строго согласованное чтение. Используйте параллельное сканирование с низким уровнем ресурсов (например, фоновая функция без регулирования). Кроме того, используйте их только с большими таблицами, а ситуации, когда вы не используете полностью пропускную способность или операции сканирования, предлагают низкую производительность.

Местные вторичные индексы

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

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

Обратите внимание на расширение коллекции элементов (все элементы таблицы и их индексы). Операции добавления / обновления приводят к росту как таблиц, так и индексов, и 10 ГБ остаются ограничением для коллекций.

Глобальные вторичные индексы

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

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