2 votes

Comment calculer la taille de stockage d'un domaine SimpleDB ?

La documentation officielle indique :

Taille en octets (Go) de tous les identifiants d'éléments + 45 octets par élément + Taille en octets (Go) de tous les noms d'attributs + 45 octets par nom d'attribut + Taille en octets (Go) de tous les paires attribut-valeur + 45 octets par paire attribut-valeur

Quelle est la taille brute d'une paire attribut-valeur ? Corresponde-t-elle précisément à la taille de la valeur ? (Je m'attendrais à ce que ce soit le cas, mais pourquoi est-ce formulé "paire attribut-valeur" ?) Ou est-ce la taille du nom de l'attribut plus la taille de la valeur de l'attribut ? (Dans ce cas, il y aurait une motivation à donner des noms d'attributs vraiment courts.)

Par exemple, quelle est la taille du domaine suivant ?

+---------------------------------------------------------+
| Nom/ID de l'élément | Attribut "Prix" | Attribut "Calories" |
|--------------+-------------------+----------------------|
| "pomme"      | "0000.43"         | "0046"               |
| "orange"     | "0000.70"         | "0053"               |
+---------------------------------------------------------+

4voto

Mocky Points 2857

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.

2voto

Ashley Tate Points 536

Le nom de l'attribut n'est compté qu'une seule fois. La taille de votre domaine d'échantillon serait calculée comme suit:

  • Noms des éléments: (5 + 45) + (6 + 45) = 101
  • Noms des attributs: (5 + 45) + (8 + 45) = 103
  • Valeurs des attributs: (7 + 45) + (4 + 45) + (7 + 45) + (4 + 45) = 202
  • Total: 406 bytes

Ce fil de discussion sur le forum de SimpleDB discute du calcul plus en détail: http://developer.amazonwebservices.com/connect/thread.jspa?threadID=23527&tstart=0&messageID=96906#96906

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X