gpt4 book ai didi

google-cloud-datastore - Google Cloud 数据存储分页

转载 作者:行者123 更新时间:2023-12-02 07:21:58 24 4
gpt4 key购买 nike

我们将数据存储在 Google Cloud Datastore 中。我们希望为我们的用户提供 API。
我们的 API 的分页规范与 github API 一样是基于 header 的。我们希望用户使用页面参数。

分页规范

e.g.

Link: <https://api.github.com/search/code?q=addClass+user%3Amozilla&page=15>; rel="next",
<https://api.github.com/search/code?q=addClass+user%3Amozilla&page=34>; rel="last",
<https://api.github.com/search/code?q=addClass+user%3Amozilla&page=1>; rel="first",
<https://api.github.com/search/code?q=addClass+user%3Amozilla&page=13>; rel="prev"

https://developer.github.com/guides/traversing-with-pagination/

API
End-Users <--- Backend Code (PHP) <--- Google Cloud Datastore

如您所知,Google Cloud Datastore 建议使用游标来提高性能和成本。但是我们不希望最终用户使用游标。最终用户是否有可能使用整数页码而不是游标,并且在后端使用游标?

我们使用 Google 的 PHP 客户端。

https://github.com/google/google-api-php-client-services

最佳答案

我相信你可以通过使用 GQL 来获得类似 OFFSET 的东西,但是这样的操作会花费你很多钱(做相当于 LIMIT 1000, 10 的操作将被视为 1,010 次读取 - 而不仅仅是你实际得到的 10 次)。

降低分页的 OFFSET 成本

假设您的页面大小为 10 个项目,并且用户要求跳转到第 5 页。您需要查询前 40 个实体,获取游标并再次运行查询,现在提供游标并限制为 10 个。

建议在第一个查询中使用 keys_only=True 获取。这样你可以:

  • 省钱,因为只有键的查询被算作查询本身读取的单个实体 (see Datastore pricing info)
  • 有更快的查询(see this benchmark - 页面加载需要一段时间)。
  • 关于google-cloud-datastore - Google Cloud 数据存储分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43310917/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com