Azure表复杂数据最佳实践

时间:2011-03-23 23:29:50

标签: .net azure azure-storage

我正在研究一个需要将复杂数据存储为Azure表中的实体的研究项目。表的实体是包含许多几何点和线的单元格,引用父项等等。

除非我弄错了,否则实体只能包含简单类型(string,int,bool等),但不包含List。在此期间,我正在解决这个问题,只需序列化整个结构并将其转换为base64字符串,并让实体只包含此字符串以及其他一些标志。

从长远来看,现在这是一种荒谬的做法,但在部署更负责任/适当的方法之前,黑客必须立即行动。

对于复杂数据类型和Azure,最佳做法是什么?写出许多blob并用表格跟踪它们?

3 个答案:

答案 0 :(得分:2)

在这种情况下,我认为Azure存储与常规数据存储的区别不大。复杂数据类型总是将其属性映射到简单数据列,或者序列化(如您所述)。

答案 1 :(得分:2)

我认为在将Azure用于此类存储时需要考虑很多 - 特别是考虑:

  • 索引 - Azure只允许您对元组(account, table name, partition key, row key)进行索引和排序 - 因此,如果您需要以多种方式搜索或订购数据,那么通常需要考虑将多个实体添加到多个表中代表您的单个实际实体
  • 聚合 - Azure表存储不包含任何类似SQL的SUM,AVERAGE等功能 - 所以如果您需要执行其中任何一项,那么您需要在自己的代码中执行它们并将结果保存在某处(或者每次都动态生成它们 - 但对于大型数据集来说这可能会很慢而且成本很高)
  • 性能 - 根据您的应用,这里可能需要考虑很多。
  • 成本 - 请记住Azure存储每笔交易收费 - 因此,如果您执行大量查询,那么它可能会花费您的钱(还要记住,虽然Azure存储是可扩展的,但每个帐户的每秒查询限制并不高)

关于使用Azure表和blob存储的模式和实践,有很多文章和文档 - 根据您的情况,使用带有一个或多个基于表的指标的Blob肯定听起来像是一种探索的途径。

答案 2 :(得分:0)

lokad工具包是你最好的天蓝色朋友。

您正在寻找“胖实体”http://code.google.com/p/lokad-cloud/wiki/FatEntities