我正在寻找将数组存储在 Azure 表实体中。目前,唯一原生支持的数组类型是字节数组,长度限制为 64k。大小足够了,但我想在实体中存储长、双精度和时间戳的数组。
我显然可以自己将多个字节转换为请求的类型,但我想知道是否有任何最佳实践来实现这一点。
澄清一下,这些是与单个键关联的固定长度数组(例如 1000 个单元格)。
我正在寻找将数组存储在 Azure 表实体中。目前,唯一原生支持的数组类型是字节数组,长度限制为 64k。大小足够了,但我想在实体中存储长、双精度和时间戳的数组。
我显然可以自己将多个字节转换为请求的类型,但我想知道是否有任何最佳实践来实现这一点。
澄清一下,这些是与单个键关联的固定长度数组(例如 1000 个单元格)。
我编写了一个 Azure 表存储客户端,名为 Lucifure Stash,它支持数组、枚举、大数据、序列化、公共和私有属性和字段等。
除了你已经提到的方法之外,我一直在想一个很好的方法来做到这一点,我很茫然。我能想到的最简单的解决方案是获取数组,将其二进制序列化并存储在二进制数组属性中。
我提出但被驳回的其他选择:
如果您只有一个键值集合要存储,那么您还可以查看 Azure BLOBs。它们可以相当有效地存储每个单个 blob 最多 25M 时间值点的数组(在数据集中进行随机访问)。
如果您选择将对象存储在 blob 存储中并且需要多个“键”来获取它,您可以创建一个或两个或 n 个 azure 表,在其中存储要查找的键和对确切 blob 的引用物品。
为什么不将值存储为 csv 字符串?
您可以使用 .NET JavaScript 序列化程序将数组序列化为 JSON 字符串:http: //msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx
此类具有“MaxJsonLength”属性,可用于确保在序列化数组时数组不超过 64K。您可以使用同一个类来反序列化您存储的对象。