Как рассчитать размер хранилища домена SimpleDB? - PullRequest
2 голосов
/ 10 июня 2010

Официальная документация гласит:

Размер необработанного байта (ГБ) всех идентификаторов элементов + 45 байт на элемент + размер необработанного байта (ГБ) всех имен атрибутов + 45 байт на имя атрибута + необработанный размер байта (ГБ) из все пары атрибут-значение + 45 байт на пару атрибут-значение

Каков необработанный размер пары атрибут-значение? Это точно размер значения? (Я ожидаю, что так, но тогда почему он называется «пара атрибут-значение»?) Или это размер имени атрибута плюс размер значения атрибута? (В этом случае будет мотивация дать вашим атрибутам действительно короткие имена.)

Например, каков размер крошечного домена ниже?

+---------------------------------------------------------+
| Item Name/ID | "Price" attribute | "Calories" attribute |
|--------------+-------------------+----------------------|
| "apple"      | "0000.43"         | "0046"               |
| "orange"     | "0000.70"         | "0053"               |
+---------------------------------------------------------+

Ответы [ 2 ]

4 голосов
/ 11 июня 2010

Существует два разных размера хранилища для каждого домена.Базовый размер включает только те базовые данные, которые вы сохранили и которые используются службой SimpleDB при применении квот на размер (10 ГБ на домен, 1 МБ ответа от Select).Номер другого размера используется только для целей выставления счетов, а также включает хранилище, используемое за сценой для индексов.Все 6 значений, необходимые для расчета обоих номеров хранилища, доступны в операции DomainMetadata.

Вычисление базового хранилища

Для расчета базового хранилища необходимы только три значения: ItemNamesSizeBytes, AttributeNamesSizeBytes и AttributeValuesSizeBytes.Эти значения представляют суммы уникальных длин имени элемента, уникальных длин имени атрибута и всех длин значений атрибута.Формула для базового хранилища:

baseStorage = 
    ItemNamesSizeBytes + AttributeNamesSizeBytes + AttributeValuesSizeBytes

Вычисление хранилища биллинга

Для вычисления размера хранилища биллинга необходимы три дополнительных значения DomainMetadata: это ItemCount, AttributeNameCount и AttributeValueCount.Эти числа представляют количество сохраненных вами данных, соответствующих записям индекса.За каждую запись индекса взимается плата за хранение в 45 байт только для выставления счетов.Формула для хранения счетов:

indexStorage = 45 x (ItemCount + AttributeNameCount + AttributeValueCount)
billingStorage = baseStorage + indexStorage

Примечания

Не путайте язык "пара атрибут-значение".Это просто для того, чтобы различать значения атрибутов, которые являются одинаковыми, но хранятся с разными именами атрибутов.Например, если вы храните следующие две пары атрибутов в элементе: {name: "Violet", favColor: "Violet"}, вы будете платить за хранение обоих значений "Violet", поскольку они являются частью разных пар атрибут-значение.Если в документации сказано, что с вас будет взиматься плата за каждое уникальное значение для каждого элемента, это не будет точным для этого примера.

Кроме того, все данные, хранящиеся в SimpleDB, хранятся как байтовые строки в кодировке UTF-8.Все символы, которые кодируются в несколько байтов, будут учитываться как несколько байтов для всех целей (ответы DomainMetadata, применение квот и выставление счетов).

В дополнение к кодировке символов запросы REST должны иметь URL-адрес, закодированный по сети.Это «процентное кодирование» утраивает размер различных символов, например, пробел '' становится '% 20'.Эта кодировка не влияет на вычисления размера хранилища.Он декодируется на стороне SimpleDB перед хранением.

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

2 голосов
/ 11 июня 2010

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

  • Наименования предметов: (5 + 45) + (6 + 45) = 101
  • Имена атрибутов: (5 + 45) + (8 + 45) = 103
  • Значения атрибута: (7 + 45) + (4 + 45) + (7 + 45) + (4 + 45) = 202
  • Всего: 406 байт

В этой теме на форуме SimpleDB расчеты рассматриваются более подробно: http://developer.amazonwebservices.com/connect/thread.jspa?threadID=23527&tstart=0&messageID=96906#96906

...