Firestore - 节省文档读取费用

Eve*_*ier 1 google-cloud-firestore

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

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

artists = {
  uniqueId: 'Artist Name',
  uniqueId2: 'Second Artist Name',
}
Run Code Online (Sandbox Code Playgroud)

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

chr*_*rke 5

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

db.collection('artists').doc(_all).set({
  uniqueId: 'Artist Name',
  uniqueId2: 'Second Artist Name',
})
Run Code Online (Sandbox Code Playgroud)

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

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

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