代码之家  ›  专栏  ›  技术社区  ›  Joe Enos

Azure表存储表是否保证按分区/行排序?

  •  4
  • Joe Enos  · 技术社区  · 7 年前

    query = new azure.TableQuery().top(100).where("PartitionKey eq ?", someKey);
    

    这是否保证这100个结果将按RowKey的顺序返回?我读到的每一件事都让我相信只有一个记录顺序,而且是由 PartitionKey + RowKey . 我自己的基本测试似乎证实了这一点。但我找不到任何官方文件,直接出来说它。

    我只需要知道我是否可以依赖它,或者它是否有可能改变。

    2 回复  |  直到 7 年前
        1
  •  5
  •   Dogu Arslan    7 年前

    结果将按其行键按词汇顺序排列。这里描述的一种官方设计模式称为对数尾模式: https://docs.microsoft.com/en-us/azure/cosmos-db/table-storage-design-guide#log-tail-pattern

    依赖于这样一个确切的事实,即在分区内,实体将按其行键的词法顺序排序。

    对于基本的表存储服务,我始终怀疑这种情况是否会改变。

        2
  •  3
  •   Francesco    6 年前

    我可以确认,对于Cosmos DB,表API返回的查询结果没有按分区键/行键顺序排序,因为它们在Azure表存储中- https://docs.microsoft.com/en-us/azure/cosmos-db/faq#where-is-table-api-not-identical-with-azure-table-storage-behavior

    https://docs.microsoft.com/en-us/azure/cosmos-db/table-storage-design-guide 文档最初仅为表存储而编写。后来,当Cosmos DB中的表API和Azure表存储合并时,文档被带到Cosmos DB空间。我认为现有的表API文档存在一些问题,我们正在修改我们的文档,很快就会进入表API文档。"

    当我读到他们的回复时,我几乎晕了过去。人们究竟如何在没有任何排序功能的情况下将应用程序从Azure Table Storage迁移到CosmosDB。你真正能做的就是点查询,这使得将Azure表存储迁移到CosmosDB对我的需求毫无用处。

    如果您也希望看到CosmosDB索引,至少是按字典顺序排列的行键,请支持我的CosmosDB建议: https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/36124006-table-api-sort