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