4

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

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

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

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

如何使用 Azure 表存储处理这种情况?

4

1 回答 1

4

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

请参阅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 表分区的更多信息。

于 2016-06-25T01:29:56.763 回答