amazon dynamodb - pricing - ItemSize en DynamoDB
dynamodb tutorial (4)
Estoy tratando de calcular el tamaño de un elemento en dynamoDB y no puedo entender la definición.
La definición que encontré: un tamaño de elemento es la suma de las longitudes de los nombres y valores de sus atributos (longitudes binarias y UTF-8). Por lo tanto, ayuda si mantiene los nombres de atributo cortos.
¿Significa que si pongo un número en la base de datos, ejemplo: 1 tomará el tamaño de un int? un largo? un doble ? ¿Tomará la misma cantidad de espacio que 100 o 1000000 o solo tomará el tamaño del binario correspondiente?
¿Y cuál es la informática para String?
¿Hay alguien que sepa cómo calcularlo?
Gracias
De hecho, ese es un tema no trivial: ya citó la definición un tanto descuidada del Modelo de datos de Amazon DynamoDB :
Un tamaño de elemento es la suma de las longitudes de los nombres y valores de sus atributos (longitudes binarias y UTF-8).
Esto se detalla un poco más abajo en la página dentro de los tipos de datos de Amazon DynamoDB :
- String - Las cadenas son Unicode con codificación binaria UTF8.
- Número : los números son decimales y enteros de valor exacto positivo o negativo. Un número puede tener hasta 38 dígitos de precisión después del punto decimal, y puede estar entre 10 ^ -128 a 10 ^ + 126. La representación en Amazon DynamoDB es de longitud variable. Los ceros iniciales y finales están recortados.
También se ha planteado una pregunta similar a la tuya en el foro Amazon DynamoDB (ver Curiosidad del tipo "Número" ) y la respuesta de Stefano @ AWS arroja más luz sobre el tema:
- El tipo "Número" tiene 38 dígitos de precisión. Estos son dígitos decimales reales. Por lo tanto, puede representar números bastante grandes, y no hay pérdida de precisión.
- ¿Cuánto espacio ocupa un valor numérico? No demasiado. Nuestra representación interna es de longitud variable , por lo que el tamaño se correlaciona con el número real (en comparación con el máximo) de dígitos en el valor. Los ceros iniciales y finales se recortan por cierto. [énfasis mío]
La publicación de seguimiento de Christopher Smith presenta más información sobre las ramificaciones resultantes con respecto al consumo de almacenamiento y su cálculo, y concluye:
La API existente proporciona muy poca información sobre el consumo de almacenamiento, a pesar de que es parte (no tan importante) de la facturación. La única información es el tamaño agregado de la tabla, e incluso esa información puede estar fuera de sincronización durante horas.
Si bien Amazon aún no expone sus datos de facturación a través de una API , con un poco de suerte agregarán una opción para recuperar cierta información sobre el tamaño del elemento a la API de DynamoDB en algún momento, como lo sugiere Christopher.
El enfoque más simple será crear un elemento en la tabla y exportar el elemento al archivo csv, que es una opción disponible en DynamoDB. El tamaño del archivo csv le dará el tamaño del elemento aproximadamente.
Encontré esta respuesta en el foro de desarrolladores amazon respondido por Clarence @ AWS:
p.ej:-
"Item":{
"time":{"N":"300"},
"feeling":{"S":"not surprised"},
"user":{"S":"Riley"}
}
para calcular el tamaño del objeto anterior:
El tamaño del elemento es la suma de las longitudes de los nombres y valores de los atributos, interpretados como caracteres UTF-8. En el ejemplo, el número de bytes del elemento es, por lo tanto, la suma de
Time : 4 + 3
Feeling : 7 + 13
User : 4 + 5
Cuál es 36
Para la definición formal, consulte: http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/WorkingWithDDItems.html
Puede usar el algoritmo para calcular el tamaño del elemento DynamoDB en el Backend de almacenamiento DynamoDB para la clase Titan DynamoDBDelegate .