【问题标题】:Querying where RowKey EndsWith()?查询 RowKey EndsWith() 的位置?
【发布时间】:2016-02-18 21:08:13
【问题描述】:

我有一个存储表,它是关注另一个特定用户的用户的索引。为此,我已根据this post 上的指南将 PartitionKey 设置为被关注用户的 id,并将 RowKey 设置为他们关注的日期的刻度,并附加以下用户的 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,仅用于查找。有没有办法实现我最初的意图,或者为此有两个索引会更好(在性能和可伸缩性方面)?

感谢任何帮助。

【问题讨论】:

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


    【解决方案1】:

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

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

    它可能会彻底解决你的问题:)

    【讨论】:

    • 谢谢,这太完美了。
    猜你喜欢
    • 1970-01-01
    • 2016-07-27
    • 2020-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    相关资源
    最近更新 更多