Pregunta

Estoy buscando para almacenar las matrices de entidades Azure Table. En la actualidad, el único tipo de matriz compatible de forma nativa es byte-array, limitada a 64k longitud. El tamaño es suficiente, pero me gustaría para almacenar conjuntos de largos, dobles y marcas de tiempo en una entidad.

Yo, obviamente, puede emitir múltiples bytes para el tipo solicitado a mí mismo, pero me preguntaba si hay alguna de las mejores prácticas para lograr eso.

Para aclarar, estas matrices de longitud están fijos (por ejemplo, 1000 células) asociados con una sola tecla.

¿Fue útil?

Solución

he estado tratando de pensar en una buena manera de hacer esto que no sea el método que ya se ha mencionado, y estoy en una pérdida. La solución más simple que puedo llegar a es tomar la matriz, serialización binaria y guardar en un archivo binario propiedad de matriz.

Otras opciones que hemos llegado con pero desestimó:

  1. Si va a guardar de forma nativa es importante, se podría mantener esta información en otra tabla secundaria (sé Tablas Azure no tienen relaciones de vista técnico, pero eso no significa que no pueda representar este tipo de cosas). La desventaja de este ser que será considerablemente más lento que el original.
  2. Tome la matriz, XML serializarlo y almacenarlo en una propiedad de cadena. Esto significaría que usted podría ver el contenido de la matriz cuando se utilizan herramientas del explorador de datos tercera fiesta y se puede ejecutar (ineficiente) Las consultas que buscan una coincidencia exacta en el contenido de la matriz.
  3. Lokad nube para almacenar sus datos. En esencia, esto lo lleva todo No Eres objeto, serializa binarios de TI y divide los resultados en bloques de 64 KB a través de las propiedades de la entidad tabla. Esto resuelve problemas como el que usted está experimentando, pero sólo se podrá acceder a sus datos usando herramientas que apoyan este marco.

Otros consejos

He escrito un cliente de almacenamiento de tablas de Azure, llamado Lucifure Stash, que da soporte a matrices, enumeraciones, datos de gran tamaño, la serialización, propiedades públicas y privadas, campos y más.

Puede conseguirlo en http://www.lucifure.com o desde NuGet.

Si usted tiene sólo una colección clave-valor a la tienda, entonces usted también puede echa un vistazo a Azure BLOB . Más bien se pueden almacenar de manera eficiente las matrices de hasta 25 m puntos de tiempo de valor por una sola nota (con un acceso aleatorio dentro del conjunto de datos).

Si decide guardar su objeto en el almacenamiento de blob y la necesidad de más de una "clave" para conseguirlo, sólo puede crear una tabla de azur o dos o n en la que almacena la clave que desea mirar hacia arriba y la referencia a el artículo exacto blob.

¿Por qué no almacenar los valores como cadenas CSV?

Se puede serializar la matriz como una cadena JSON usando el serializador .NET JavaScript: http://msdn.microsoft.com/en -us / biblioteca / system.web.script.serialization.javascriptserializer.aspx

Esta clase tiene una propiedad "MaxJsonLength" se puede utilizar para asegurarse de que sus matrices no excedió de 64 K cuando estaban serializando ellos. Y puede utilizar la misma clase para deserializar los objetos almacenados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top