如何在表存储中存储数组的内容

时间:2011-03-22 13:20:06

标签: azure azure-storage azure-table-storage

我需要将数组的内容存储到Azure表存储中。该数组将包含0到100个条目。我不想创建100个不同的元素,所以有一种方法可以打包数组,存储它并稍后解压缩。任何例子都将非常感激。我只是不知道从哪里开始:-(

3 个答案:

答案 0 :(得分:2)

您需要将数组序列化为二进制或xml,然后使用适当的列类型来存储数据(二进制对象或xml。)

XML将是最灵活的,因为您仍然可以在存储时查询值。 (你无法查询二进制数据。不管怎么说都不容易。)以下是serializing的一个例子,这里有inserting the value一个表格。

Some detail on XML support in Azure

  

xml数据类型

     

SQL Azure数据库支持xml数据   存储XML数据的类型。您可以   将xml实例存储在列或中   xml类型的变量。

     

支持XML数据修改   语言

     

XML数据修改语言   (XML DML)是一个扩展   XQuery语言。 XML DML添加了   以下区分大小写的关键字   SQL支持XQuery和它们   Azure数据库:

     

insert(XML DML)   删除(XML DML)   替换(XML DML)的值

     

支持xml数据类型方法

     

您可以使用xml数据类型方法   查询存储在的XML实例   xml类型的变量或列。   SQL Azure数据库支持   遵循xml数据类型方法:

     

query()方法(xml数据类型)   value()方法(xml数据类型)   exist()方法(xml数据类型)   modify()方法(xml数据类型)   nodes()方法(xml数据类型)

答案 1 :(得分:1)

如果你真的是从Azure Table Storage开始,那么有一些很好的“简单”教程 - 例如http://blogs.msdn.com/b/jnak/archive/2008/10/28/walkthrough-simple-table-storage.aspx

一旦您对读取/写入实体感到满意,那么您可以通过多种方式将阵列映射到表存储。

  1. 如果您想要从持久存储中分别访问数组的每个元素,那么您应该创建0到99个单独的实体 - 每个实体在Table存储中都有自己的实体。

  2. 如果您不想单独访问它们,那么您可以将数组存储在表格中的单个实体(行)中 - 例如使用PartitionKey =“MyArrays”,RowKey =“”并使另一列包含序列化为例如的数组。 JSON。

  3. 作为2的变​​体,您还可以将数组项(0到99)存储在行中的单独列(“Array_0”,...“Array_99”)中。有一些方法可以使用表存储实体上的读/写事件将其映射到一个不错的C#Array属性 - 但如果您从Azure开始,这可能不是最好的起点。

答案 2 :(得分:1)

小心,除了1MB实体限制外,还有每场限制(我认为它是64kb)

您最好的选择是使用Lokad Fat Entity

http://code.google.com/p/lokad-cloud/wiki/FatEntities