Il existe deux tailles de stockage différentes pour chaque domaine. La taille de base inclut uniquement les données de base que vous avez stockées et est utilisée par le service SimpleDB lors de l'application des quotas de taille (10 Go par domaine, 1 Mo en réponse de Select). L'autre taille est utilisée uniquement à des fins de facturation et inclut également le stockage utilisé en arrière-plan pour les index. Les 6 valeurs dont vous avez besoin pour calculer les deux tailles de stockage sont disponibles à partir de l'opération DomainMetadata.
Calcul de la taille de stockage de base
Seules trois des valeurs sont nécessaires pour calculer la taille de stockage de base : ItemNamesSizeBytes, AttributeNamesSizeBytes et AttributeValuesSizeBytes. Ces valeurs représentent les sommes des longueurs des noms d'élément uniques, des longueurs des noms d'attribut uniques, et de toutes les longueurs de valeurs d'attribut. La formule pour le stockage de base est :
baseStorage =
ItemNamesSizeBytes + AttributeNamesSizeBytes + AttributeValuesSizeBytes
Calcul de la taille de stockage facturée
Il faut trois valeurs supplémentaires de DomainMetadata pour calculer la taille de stockage facturée, ce sont les comptages : ItemCount, AttributeNameCount et AttributeValueCount. Ces chiffres représentent les quantités de données que vous avez stockées et qui correspondent aux entrées d'index. Chaque entrée d'index entraîne des frais de stockage de 45 octets à des fins de facturation uniquement. La formule pour le stockage facturé est :
indexStorage = 45 x (ItemCount + AttributeNameCount + AttributeValueCount)
billingStorage = baseStorage + indexStorage
Notes
Ne vous laissez pas tromper par le langage "paire attribut-valeur". Cela signifie simplement différencier entre des valeurs d'attribut qui sont les mêmes mais qui sont stockées avec différents noms d'attribut. Par exemple, si vous stockez les deux paires d'attributs suivantes dans un élément : {name: "Violet", favColor: "Violet"} vous serez facturé pour le stockage des deux valeurs "Violet" car elles font partie de différentes paires attribut-valeur. Si la documentation indiquait que vous seriez facturé pour chaque valeur unique par élément, cela ne serait pas exact pour cet exemple.
De plus, toutes les données stockées dans SimpleDB sont stockées sous forme de chaînes d'octets encodées en UTF-8. Tous les caractères qui s'encodent sur plusieurs octets seront comptés comme plusieurs octets pour tous les besoins (réponses de DomainMetadata, application de quotas et facturation).
En plus de l'encodage des caractères, les requêtes REST doivent être encodées en URL sur le réseau. Cet encodage "percent encoding" triple la taille de divers caractères, par exemple l'espace ' ' devient '%20'. Cet encodage n'a aucun effet sur les calculs de taille de stockage. Il est décodé du côté de SimpleDB avant le stockage.
Les valeurs DomainMetadata sont parfois servies à partir d'un cache mais sont généralement de moins de 24 heures. Vérifiez le timestamp dans la réponse pour voir quand les valeurs ont été calculées. En pratique, cela signifie que la plupart du temps, vous ne pourrez pas ajouter des données et voir immédiatement les valeurs de DomainMetadata changer.