Azure - 查询2亿个实体

时间:2011-04-29 20:44:30

标签: azure azure-storage azure-table-storage

我需要在Windows Azure中查询2亿个实体的商店。理想情况下,我想使用Table Service而不是SQL Azure来完成此任务。

用例是这样的:包含新实体的POST将从面向Web的API传入。我们必须查询大约2亿个实体,以确定我们是否可以接受新实体。

实体限制为1,000:这是否适用于此类查询,即我必须一次查询1,000个并执行我的比较/业务规则,或者我可以一次查询所有2亿个实体?我认为在后一种情况下我会暂停。

想法?

2 个答案:

答案 0 :(得分:7)

1000的限制是查询返回的行数,而不是查询的行数。

将所有2亿行拉入Web服务器以检查它们将无效。

诀窍是使用可用于检查记录是否应被接受的密钥存储行。

答案 1 :(得分:7)

扩展Shiraz关于表存储的评论:表被组织成分区,然后您的实体被Row键索引。因此,使用分区键+行键的组合可以非常快速地找到每一行。诀窍是为您的特定应用选择最佳的分区键和行键。

对于上面的示例,您在按电话号码搜索的位置,可以将TelephoneNumber设为分区键。您可以非常轻松地找到与该电话号码相关的所有行(但是,不知道您的应用程序,我不知道您期望的行数)。要进一步细化,您需要在分区键中定义可以索引的行键。这将为您提供非常快速的响应,让您知道是否存在记录。

表存储(实际上通常是Azure存储 - 表,blob,队列)具有众所周知的SLA。您可以在给定分区上每秒执行最多500个事务。通过上面的示例,对给定电话号码的行的查询将等同于一个事务(除非您返回超过1000行 - 要查看所有行,您需要额外的提取);添加行键以缩小搜索范围确实会产生单个事务。那么会插入一个新行。您还可以在单​​个分区中批量处理多个行插入,并将它们保存在单个事务中。

有关Azure表存储的详细概述,以及一些优秀的实验,请查看Platform Training Kit

有关表格内交易的详细信息,请参阅此msdn blog post