2012-01-21 16 views
11

Lets primera cita:Acerca de Azure Table Storage Row Límite de 1 MB, ¿cómo cuenta el código UTF8?

tamaño combinado de todas las propiedades de una entidad no puede exceder de 1 MB. (para una fila/Entidad) de msdn

Mi pregunta es: Puesto que todo se XMLed de datos, por lo que para 1 MB, es de 1 MB de qué, 1 MB de ASCII Caracteres, o 1 MB de UTF8 Caracteres, o algo ¿más?

Muestra:

Row1: PartitionKey="A', RowKey="A", Data="A" 
Row2: PartitionKey="A', RowKey="A", Data="A" (this is a UTF8 unicode A) 

Es ROW1 y Row2 mismo tamaño (en longitud), o Row2.Length=Row1.Length+1?

+0

Encontré mi respuesta Row2.Length = Row1.Length + 1 –

Respuesta

12

Las columnas únicas como "Datos" en su ejemplo están limitadas a 64 KB de datos binarios y las filas únicas están limitadas a 1 MB de datos. Las cadenas están codificando en binario en el formato UTF8, por lo que el límite es el que sea el tamaño de bytes para su cadena. Si desea que su columna almacene más de 64 KB de datos, puede utilizar una técnica como la entidad FAT que se le proporciona con Lokad (https://github.com/Lokad/lokad-cloud-storage/blob/master/Source/Lokad.Cloud.Storage/Azure/FatEntity.cs). La técnica es bastante simple, solo codifica la secuencia en binario y luego divide el binario en varias columnas. Luego, cuando desee leer la cadena de la tabla, simplemente volverá a unir las columnas nuevamente y volverá a convertir el binario en una cadena.

+0

¿Quiere decir, si el código ASCII, puedo guardar caracteres de 1M, pero para el código de UTF8, solo puedo guardar la mitad? –

+3

La codificación UTF8 no es necesariamente el doble del tamaño de la codificación ASCII. De hecho, si sus caracteres están en el rango ASCII de 0-128, la codificación termina siendo del mismo tamaño. Debería buscar cómo está codificado UTF8. – RyanFishman

+0

Entonces, si guardo caracteres asiáticos, solo puedo guardar la mitad del tamaño del inglés puro. Derecha –

Cuestiones relacionadas