2

我需要将数组的内容存储到 Azure 表存储中。该数组将有 0 到 100 个条目。我不想创建 100 个不同的元素,所以有没有办法可以打包数组、存储它并在以后解包。任何例子将不胜感激。我只是不知道从哪里开始:-(

4

3 回答 3

2

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

XML 将是最灵活的,因为您仍然可以在值存储时查询它们。(你不能查询二进制数据。无论如何都不容易。)这是一个序列化的例子,这是一个将值插入到表中的例子。

Azure 中有关 XML 支持的一些详细信息

xml 数据类型

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

支持 XML 数据修改语言

XML 数据修改语言 (XML DML) 是 XQuery 语言的扩展。XML DML 将以下区分大小写的关键字添加到 XQuery 并在 SQL Azure 数据库中受支持:

插入 (XML DML) 删除 (XML DML) 替换 (XML DML) 的值

支持 xml 数据类型方法

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

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

于 2011-03-22T13:27:04.467 回答
1

如果您真的开始使用 Azure 表存储,那么有一些不错的“简单”教程 - 例如http://blogs.msdn.com/b/jnak/archive/2008/10/28/walkthrough-simple-表存储.aspx

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

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

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

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

于 2011-03-22T13:36:02.600 回答
1

小心,除了 1MB 实体限制外,还有每个字段的限制(我认为是 64kb)

最好的办法是使用 Lokad Fat Entity

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

于 2011-03-24T12:30:39.623 回答