我们目前在Firebase上使用免费层,其中包含50k读取和20k写入操作配额。
每天大约有100名用户,我们的读取操作已经超过了配额。Firestore的结构如下所示:
Firestore-root
|
--- steps (collection)
| |
| --- 20191206 (document)
| |
| --- users (collection)
| |
| --- 08yzYycNqYMZw7kdeGBNV9jcg1G2 (document)
| |
| --- country: "FR"
| |
| --- name: "florian"
| |
| --- steps: 24
| |
| --- updated_at: "2019-12-05T20:25:05Z"
该应用程序将显示按步骤数排序的用户列表。
因此,作为一个简单的计算,在每次应用程序启动时,如果x
等于users
集合中存储的用户条目数,则应读取代表x1
读取操作的x1
文档。对于打开应用程序的100个用户和100个用户条目,应该已经有10100次读取操作(约为每日配额的20%)。
我的计算对吗?(如果1次读取操作=1次读取文档)。
另一方面,有没有办法优化Firestore结构以减少文档读取的次数?
我们目前有一个补丁使用。limit()
操作,以避免选择所有条目来释放一些读取操作,但这并不是一个永久的解决方案。
将所有步骤数据放在一个文档中似乎也是一个糟糕的解决方案,因为每个文档都必须有一个大小
谢谢你的建议。
以下是在steps集合中使用的查询(此处针对iOS)。
db
.collection("steps")
.document(date.string)
.collection("users")
.whereField("steps", isGreaterThan: 0)
.order(by: "steps", descending: true)
.getDocuments { }
db
.collection("steps")
.document(date.string)
.collection("users")
.document(uid)
.setData([
"steps": steps,
"name": name,
"country": country,
"updated_at": Date.NowISO8601,
])
根据Firebase官方文件,您将按文件读取、写入和删除收取费用。所以你的计算似乎没问题。
根据用户数量,您可能需要考虑转向付费计划。可能是火焰计划。
然而,这里有一个最小化收费的建议:
既然你谈论的是基于步数的排行榜,我想你并不真的需要每隔几秒钟更新一次。
我要做的是,在每个特定的时间范围内进行一次查询,并将值存储在云存储中,在云存储中,您将按存储大小而不是读/写收费(您每月免费获得5GB)。然后让你的应用程序从云存储中获取数据。
通过这种方式,无论用户数量多少,您都将拥有恒定的读取量。
例如:
100个用户
100 x(24x60 / 10) = 14.4K读/天
根据您的用例,您也可以遵循类似的写入逻辑。
问题内容: 我想减少阅读次数,以便从(问题数组)中获取问题的详细信息。 我的应用程序就像stackoverflow的一部分一样工作 。 我想说明 一个问题有 多少 顶,观点和评论 。因此,为了处理这个问题,我创建了多个集合,例如 问题集 ID 标题 创建日期 评论集 ID 评论 创建日期 问题喜欢 QuestionID 用户身份 QuestionViews QuestionID 用户身份 问题标签
上下文:假设我有一个显示餐厅列表的应用程序 方法1:将所有餐厅添加到集合中,并将文档id保存在属于指定类别的数组中。所以,如果我想要所有的印度餐馆,我只需要获取包含所有印度餐馆Id的数组Indian,然后加载它们。 方法2:将所有餐厅添加到集合中,并为每个文档指定一个类别。因此,当用户需要印度餐馆列表时,我会使用where()将其过滤掉。在这种方法中,firestore是否会为所有100000次文
我有一个名为的集合,其中包含100多个文档。应用程序的主屏幕有一个列表视图,显示所有文档的列表,但是这种方法不必要地会在用户每次打开应用程序时花费100次阅读。为了停止这种情况,我在每个文档中添加了一个名为的字段,每次用户更新任务文档时,我都会更新这些字段。现在这就是我如何构建主屏幕。 第一次查询将只获取在上次从服务器获取时间之后更新的文档。第二次查询将从缓存中提取所有文档。我不在乎第一次查询的结
我利用的功能如下: < li >将< code>MySQL表读入< code>DataFrame < li >改造他们 < li >合并它们 < li >写给< code>HDFS 在的整个生命周期中,没有对其执行s。它曾经像预期的那样工作,但最近我遇到了问题。由于的延迟求值,导致读取操作的并行性降低。 因此,如果我读取使用与,然后
我的applet已经可以读取存储在jar中的excel文件,但是要读取excel文件,我必须使用其他5个jar(DOM4J-2.0.0-alpha-2、POI-3.9-20121203、POI-OOXML-3.9-20121203、POI-OOXML-Schemas-3.9-20121203、xbean),总共10.1mb,不包括实际的applet jar(1.36mb)。这些需要一段时间来下载,
我有一个a、B、C的