Имеет ли значение длина имени поля DynamoDB с точки зрения цены - PullRequest
1 голос
/ 11 ноября 2019

В DynamoDB с сотнями миллионов строк кто-то утверждает, что мы должны использовать имя столбца с наименьшей длиной - например, вместо использования name в качестве имени поля, мы должны использовать n, так как эти имена полей имеют значение вусловия ценообразования из-за количества строк.

Я быстро взглянул на цену AWS DynamoDB, и мое понимание цены основано на количестве операций чтения и записи (как для режима по требованию, так и для режима предоставления ресурсов). ) к DynamodB, независимо от того, сколько строк хранится в DynamodB. если это так, тогда длина имени поля не связана с ценой, и мы можем использовать обычные имена, удобные для человека. я прав?

1 Ответ

2 голосов
/ 11 ноября 2019

Несмотря на то, что цены DynamoDB привязаны к количеству запросов на чтение / запись, длина имен атрибутов имеет значение, хотя это связано не с объемом данных в DynamoDB, а с размером ответа на запросвместо этого.

Биллинг для запросов DynamoDB основан на так называемых единицах запроса. На странице Цены * DynamoDB объясняется, как это работает:

Единица запроса на чтение : вызовы API для чтения данных из вашей таблицы тарифицируются в единицах запроса на чтение. Запросы чтения DynamoDB могут быть либо строго согласованными, либо согласованными, либо транзакционными. Для строго согласованного запроса на чтение до 4 КБ требуется один блок запроса на чтение. Для элементов размером более 4 КБ требуются дополнительные единицы запроса на чтение. Для элементов размером до 4 КБ для согласованного в конечном итоге запроса на чтение требуется половина запроса на чтение, а для транзакционного запроса на чтение требуется два блока запроса на чтение. Например, строго согласованный запрос на чтение элемента 8 КБ требует двух блоков запроса на чтение, в конечном итоге согласованное чтение элемента 8 КБ требует одной единицы запроса на чтение, а транзакционное чтение элемента 8 КБ требует четырех блоков запроса на чтение. Для получения дополнительной информации см. Согласованность чтения.

Единица запроса на запись : вызовы API для записи данных в вашу таблицу тарифицируются в единицах запроса на запись. Стандартный блок запроса записи может записать элемент размером до 1 КБ. Для элементов размером более 1 КБ требуются дополнительные единицы запроса на запись. Транзакционная запись требует двух блоков запроса записи. Например, для запроса записи элемента размером 1 КБ требуется один блок запроса записи, для запроса записи элемента размером 3 КБ требуется три блока запроса записи, а для запроса транзакционной записи элемента размером 3 КБ требуется шесть блоков запроса записи.

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

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

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

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