在Azure存储表中存储可变大小列表的最佳方法

时间:2014-05-20 14:05:17

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

我需要在Azure表存储中存储可变大小的列表。假设它是一个列表GUID,它可以与每个列表的数万个GUID一样大(例如,用户创建的帖子的ID)。

我在考虑两种方法:

  1. 以高效的二进制格式(如protobuf)序列化列表,并将结果存储在blob中
    • 优点:我可以通过一次操作获取完整列表
    • 缺点:我需要在内存中管理整个列表,甚至可以访问范围或单个项目!
  2. 将列表存储在表中,列表ID是分区键,每个GUID是行键
    • 优点:我可以随机访问每个GUID,我可以“分页”范围查询(需要20,然后使用RK>从上一个范围中获取最后一项...)
    • 缺点:提取需要完整的分区扫描,我认为这与跨越流
    • 一样糟糕
  3. 基本上,我正在寻找关于选项2的缺点的确认:分区扫描是如此糟糕,即使我限制检索的实体数量(.Take(x))并且我可选地在RK上设置约束?

    此外,欢迎使用其他方法在Azure Tables中有效存储此类列表,即使我认为选项有限!

    由于

1 个答案:

答案 0 :(得分:1)

你是对的,如果你需要获得所有帖子,你需要扫描整个分区。但是,如果您可以在RowKey中存储有意义的内容,那么您不需要每次都获取所有帖子。例如,如果您通常显示最新的帖子,则可以使RowKey按日期降序,然后大部分时间您只需要获取前几行。