我正在寻找将数组存储在Azure表实体中。目前,唯一支持本地支持的数组类型是字节阵列,限制为64K长。大小就足够了,但是我想在实体中存储渴望,双打和时间戳的数组。

显然,我可以自己对请求的类型进行多个字节,但是我想知道是否有最佳实践可以实现这一目标。

为了澄清,这些是与单个键关联的固定长度阵列(例如1000个单元格)。

有帮助吗?

解决方案

除了您已经提到的方法外,我一直在想一个不错的方法来做到这一点,而且我很茫然。我可以提出的最简单解决方案是将数组序列化,并将其存储在二进制数组属性中。

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

  1. 如果本地存储很重要,则可以将此信息保存在另一个子表中(我知道Azure表在技术上没有关系,但这并不意味着您不能代表这种类型的事情)。这一点的缺点是它将比您的原始版本要慢得多。
  2. 取阵列,XML序列化并将其存储在字符串属性中。这意味着在使用第三方数据资源管理器工具时,您可以看到数组的内容,并且可以运行(效率低下的)查询,以查找数组内容的确切匹配。
  3. 采用 lokad云脂肪实体 存储您的数据。从本质上讲,这使您是整个对象,将其序列化,并将结果分配到表实体属性的64KB块中。这确实解决了您经历的问题,但是您只能使用支持此框架的工具访问数据。

其他提示

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

你可以得到它 http://www.lucifure.com 或来自Nuget。

如果您只需要存储键值,那么您也可以 查看Azure Blobs. 。它们可以有效地存储每个单个斑点的最多25m时值点的数组(在数据集中随机访问)。

如果您选择将对象存储在BLOB存储中,并且需要多个“键”才能获取它,则可以创建一个或两个或n个或n,您可以在其中存储要查找的键以及对确切斑点的引用物品。

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

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

该类具有“ MaxJsonLength”属性,您可以使用以确保序列化时的数组不会超过64K。您可以使用相同的类对存储的对象进行挑选。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top