从Azure表存储中的许多分区键中进行选择

时间:2016-06-20 01:08:33

标签: azure-table-storage azure-tablequery

在Azure表存储中,我存储新闻更新,而分区键是分配给新闻类别的关键字,例如"政治","体育"等

当用户登录时,我希望能够根据用户的兴趣选择记录 - 这些记录会保留在另一个数据库中。因此,用户可能对政治"和"体育"。显然,我们可能有大量用户感兴趣的类别。它可能是20多个类别。

如何查询我的表格,以便我可以获得这些类别的任何新闻更新?具体来说,问题是我可以在针对Azure表存储的SELECT语句中指定的条件数量限制。我不认为我可以指定超过15个条件,例如partitionKey = x或partitionKey = y等

通常,在NoSQL数据库中,解决方案是去标准化,但在这种情况下,这将是一个可怕的替代方案。假设我使用用户的ID作为我的分区键。如果我有100万用户,使用不同的分区键创建100万份相同记录是没有意义的,这样每个用户都可以轻松获得自己的更新。

如何使用Azure表存储处理此方案?

1 个答案:

答案 0 :(得分:2)

处理此问题的推荐方法是为每个感兴趣的范围创建单独的查询。这也将为您提供最佳性能,因为每个查询都可以避免跨越分区边界。如果您要编写查询以便在多个分区键上进行过滤,那么您的性能将会受到影响,因为您将跨越多个分区边界。

https://azure.microsoft.com/en-us/documentation/articles/storage-table-design-guide/#design-for-querying。它没有讨论您的场景,但提供了优化查询的指南。

另请参阅https://azure.microsoft.com/en-us/documentation/articles/storage-scalability-targets/#partitions-in-azure-storage以获取有关Azure表分区的更多信息。