【问题标题】:Firestore - Saving Money on Document ReadsFirestore - 节省文档读取费用
【发布时间】:2019-08-21 20:03:11
【问题描述】:

我有来自 Firestore 的 5,000 位艺术家的集合,我想将它们作为可搜索的下拉列表加载到我的应用程序中。每个用户每次页面加载的成本都是昂贵的。我每月有 10,000 个活跃用户。

我尝试了 Algolia,但网站上的用户数量使它成为一个非常昂贵的选择。使用 Firestore,每次加载页面加载 5,000 条记录很快就会增加。我的想法是将所有艺术家的姓名和 ID 存储在 Firestore 中的单个文档数组中,这样每页加载的成本只有 1 个,而不是 5,000 个。然后,在选择艺术家时加载其他数据。

artists = {
  uniqueId: 'Artist Name',
  uniqueId2: 'Second Artist Name',
}

我希望使用这种方法每天可以节省数十万次文档读取。唯一增加的烦恼是在客户端做事。不过,这也不算太麻烦。我希望深入了解其他人在做什么。我应该考虑在 MySQL 中存储一些数据吗?

【问题讨论】:

    标签: google-cloud-firestore


    【解决方案1】:

    如果您想要更容易使用的东西而不是数组,您可以在一个文档中为所有艺术家使用键值对。每个文档的限制为 1MB,因此即使有 5,000 位艺术家,您也应该在限制范围内。

    db.collection('artists').doc(_all).set({
      uniqueId: 'Artist Name',
      uniqueId2: 'Second Artist Name',
    })
    

    然后,一旦您检索文档,您就可以使用 Object.values()Object.entries() 提取名称和/或密钥

    如果您想要更灵活的解决方案,您可以使用云功能在 firebase 实时数据库或其他数据库(如 redis)中保持特定查询或文档集合的最新版本。这是一篇解释如何做后者的文章

    https://thecloudfunction.com/blog/firebase-cloud-functions-and-redis/

    【讨论】:

    • 我从未想过将 Firebase 与 Firestore 一起使用!这可能是最简单和最快的解决方案。也感谢关于 Redis 的提示。
    • 非常欢迎。是的,我发现实时计费模型更适合这种目的,您还可以添加一个云功能来自动同步从 firestore 到 rtdb 的写入数据,或者只是添加您自己的 cron/可触发方法
    猜你喜欢
    • 1970-01-01
    • 2021-09-25
    • 2019-06-09
    • 1970-01-01
    • 2021-11-18
    • 2018-10-25
    • 2021-12-09
    • 2019-10-06
    • 2020-11-03
    相关资源
    最近更新 更多