Существует два разных размера хранилища для каждого домена.Базовый размер включает только те базовые данные, которые вы сохранили и которые используются службой 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.