查询RowKey EndsWith()的位置?

时间:2016-02-18 11:59:29

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

我有一个存储表,它是跟随另一个特定用户的用户的索引。为此,我将PartitionKey设置为被跟踪用户的id,并将RowKey设置为它们所遵循的日期的刻度,根据this post上的指南,并附加了以下用户的id 。这很有效。这是一个它看起来像的例子。

// FollowerIndex
PartitionKey                            RowKey
56138dad-e2db-43ac-8ffe-eac4846bf01a    2519471107153765942_31d4d0e5-2e48-489f-99fd-ead58a5fd480
56138dad-e2db-43ac-8ffe-eac4846bf01a    2519471107153765942_32fd17ec-fac2-44f8-986e-4e1fc8a05751
56138dad-e2db-43ac-8ffe-eac4846bf01a    2519471107153765942_f9816107-23ea-4ed7-a900-7465c0d10f50
f9816107-23ea-4ed7-a900-7465c0d10f50    2519471107153789651_32fd17ec-fac2-44f8-986e-4e1fc8a05751

我现在的问题是,如果一个给定的用户ID是另一个给定用户ID的关注者,我需要查找。为此我希望有一个EndsWith查询我可以使用,以便我可以使用点查询来提高性能,因为可能会有很多“跟随者检查”。它似乎不是这种情况。

// request.UserId = "56138dad-e2db-43ac-8ffe-eac4846bf01a";
// request.FollowerUserId = "31d4d0e5-2e48-489f-99fd-ead58a5fd480";

var query = TableQuery.CombineFilters(
    TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equals, request.UserId),
    TableOperators.And,
    TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.???, request.FollowerUserId)
);

我正在考虑添加第二个非有序索引,其中包含RowKey,仅作为以下用户的id,仅用于查找。有没有办法实现我最初的目标,或者在性能和可伸缩性方面更好的方法是为此设置两个索引?

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

为了在Azure TableStorage上存储图形关系,有一个名为AzureGraphStore的简洁扩展,它可以创造奇迹。

它基本上存储了与不同PK / RK对重复的信息,因此您可以轻松地进行以下查询:谁在关注X?你跟着谁? A跟随B?

它可能完全解决您的问题:)