Может ли шардинг записи предотвратить все ситуации с горячими разделами? - PullRequest
0 голосов
/ 25 января 2019

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

Решение 1:

Создатьодин ключ разделения dateManifest и сохраните все даты (2019-01-25) в качестве ключа сортировки.Это позволило бы в одном запросе получить все элементы, в которых нуждается пользовательский интерфейс.Очевидно, что проблема заключается в том, что этот ключ раздела будет попадать при каждом запуске приложения.

Решение 2:

Используйте разделение записи для разделения ключа разделения, напримермесяц (dateManifestJan, dateManifestFeb, dateManifestMar, ...).Для заполнения пользовательского интерфейса потребуется несколько запросов, но запросы будут распределены по нескольким разделам.

Мой вопрос:

Если запрос по умолчанию (для заполнения пользовательского интерфейса назапуск приложения) для извлечения всего года, тогда есть ли смысл разделять ключи разделов вверх?Потому что вместо того, чтобы нажимать один ключ раздела в каждом запросе (dateManifest), вы просто нажимаете те же 12 в каждом запросе.И вы создали ситуацию, когда каждый раздел теперь имеет более низкий предел RCU, потому что может быть больше разделов.

Кроме того, если в январе запрос выполняется только на один месяц, вы будете перегруженыключ разделения dateManifestJan и в феврале перегрузка ключа dateManifestFeb и так далее.Это действительно лучше?

1 Ответ

0 голосов
/ 26 января 2019

Нужна дополнительная информация ... количество данных, чтение / запись

У вас даже будет несколько разделов?Независимо от того, сколько ключей разделов вы используете, Dynamo будет создавать несколько разделов только в том случае, если ваши данные> 10 ГБ или вы предоставляете более 3000 RCU и / или 1000 WCU.

Так что, если ваши данные имеют размер 100 ГБ, выиметь 10 разделов с до 30 000 RCU и 10 000 доступных WCU.

Если вас интересуют повторные запросы чтения, рассмотрите DynamoDb Accelerator (DAX).

Одно из применений-cases для DAX - это

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

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