2011-03-23 73 views
2

我正在研究需要将复杂数据作为实体存储在Azure表中的研究项目。表格的实体是包含许多几何点和线的单元格,其中包含对父级的引用等。除非我错了,一个实体只能包含简单类型(string,int,bool等),但不包含任何与List类似的东西。在此期间,我正在通过序列化整个结构并将其转换为base64字符串并使实体仅包含此字符串以及一些其他标志来解决此问题。Azure表复杂数据最佳实践

从长远来看,这是一种荒谬的做法,但是现在只有在部署更负责任/适当的方法之前,现在必须进行破解。

对于复杂数据类型和Azure,最佳做法是什么?写出很多斑点并用桌子跟踪它们?

回答

2

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

2

我觉得有很多东西需要考虑使用Azure中时,这种类型的存储的约 - 尤其是在思考:

  • 索引 - 天青只允许指数和订单仅在元组(account, table name, partition key, row key) - 所以,如果你需要以多种方式搜索或订购数据,那么通常您需要考虑将多个实体添加到多个表以代表您的单个实际实体
  • 聚合 - Azure表存储不包含任何类似SQL的SQL,AVERAGE等函数 - 所以如果你需要做任何这些,那么你需要在自己的代码中完成它们,并在某处(或属)他们在飞行中每次 - 但这可能是缓慢和昂贵的大型数据集)
  • 性能 - 根据您的应用程序,这里可能有很多要考虑。
  • 成本 - 请记住Azure存储每笔交易的费用 - 所以如果你做了很多的查询,那么它可能会花费你的钱(还记得,虽然Azure存储是可扩展的,但每个帐户的每秒查询限制并不高)

有大量的文章和文件在那里上的图案和使用Azure的表和Blob存储的做法 - 您的具体情况,使用斑点与一个或多个基于表格indicies肯定听起来像一个途径去探索。

+0

+1如果我没有错,如果你试图通过一个列过滤器不排键或分区键,你得到所有的表,它得到在客户端过滤,对吧?当你决定使用桌面存储时,我想有很多计划要做。 – vtortola 2011-03-24 12:25:48

+1

这不是很正确@vtortola - 你可以通过其他字段执行一些'filter'操作。但是,这些操作很慢,因为它们在不使用任何索引的情况下搜索整个表 - 所以如果您有一百行数据,那么服务器会在决定返回什么内容之前查看它们(如SQL中的表扫描)。 – Stuart 2011-03-24 12:54:15

+0

谢谢!我会看看过滤器。到目前为止,我只使用行键和分区键进行管理,但我将进一步需要该功能。 – vtortola 2011-03-24 14:51:45