3

我正在寻找将数组存储在 Azure 表实体中。目前,唯一原生支持的数组类型是字节数组,长度限制为 64k。大小足够了,但我想在实体中存储长、双精度和时间戳的数组。

我显然可以自己将多个字节转换为请求的类型,但我想知道是否有任何最佳实践来实现这一点。

澄清一下,这些是与单个键关联的固定长度数组(例如 1000 个单元格)。

4

6 回答 6

4

我编写了一个 Azure 表存储客户端,名为 Lucifure Stash,它支持数组、枚举、大数据、序列化、公共和私有属性和字段等。

您可以在https://github.com/hocho/LucifureStash获得它

于 2012-02-22T23:58:09.897 回答
3

除了你已经提到的方法之外,我一直在想一个很好的方法来做到这一点,我很茫然。我能想到的最简单的解决方案是获取数组,将其二进制序列化并存储在二进制数组属性中。

我提出但被驳回的其他选择:

  1. 如果本地存储很重要,您可以将此信息保存在另一个子表中(我知道 Azure 表在技术上没有关系,但这并不意味着您不能代表这种类型的东西)。这样做的缺点是它会比你原来的慢得多。
  2. 获取数组,XML 对其进行序列化并将其存储在字符串属性中。这意味着您可以在使用 3rd 方数据浏览器工具时看到数组的内容,并且可以运行(低效)查询来查找数组内容的完全匹配。
  3. 使用Lokad Cloud 胖实体来存储您的数据。这实际上将您作为整个对象,将其二进制序列化并将结果拆分为跨表实体属性的 64kb 块。这确实解决了您遇到的问题,但您只能使用支持此框架的工具访问您的数据。
于 2010-12-01T00:39:41.873 回答
3

如果您只有一个键值集合要存储,那么您还可以查看 Azure BLOBs。它们可以相当有效地存储每个单个 blob 最多 25M 时间值点的数组(在数据集中进行随机访问)。

于 2010-12-01T05:21:36.960 回答
2

如果您选择将对象存储在 blob 存储中并且需要多个“键”来获取它,您可以创建一个或两个或 n 个 azure 表,在其中存储要查找的键和对确切 blob 的引用物品。

于 2011-02-17T10:51:47.870 回答
0

为什么不将值存储为 csv 字符串?

于 2011-09-10T07:03:00.853 回答
0

您可以使用 .NET JavaScript 序列化程序将数组序列化为 JSON 字符串:http: //msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx

此类具有“MaxJsonLength”属性,可用于确保在序列化数组时数组不超过 64K。您可以使用同一个类来反序列化您存储的对象。

于 2013-07-04T12:34:36.207 回答