我们正在使用firebase实时数据库为与facebook连接的用户保存每个级别的分数。我们仍在测试此功能,一切正常,但下载使用率非常高。每次用户打开应用程序时,我都会下载非常小的数据,大约20个字节,以及每个级别的5个字节。几分钟后,下载使用开始显示超过100kB,这是很多,并且当我们向用户发布这个时,将无法进行财务扩展。这是我们正在使用的数据结构:
users{
facebook_id{
"firebase_id" : firebaseId,
"max_level" : maxLevel,
"stars" : numberOfStars,
"scores" : {
level : score,
}
}
}
我还做了一些CLI数据库分析,并且有0个非索引查询,用法似乎正确。 以下是截图。
有谁知道可能出错了什么?如果这只是SSL开销(看起来仍然太大),除此之外我们还可以设置我们自己的服务器。
答案 0 :(得分:0)
从JSON文件中检索的数据可能比预期的多得多。 Google制定了一些有关如何最佳构造数据的准则,以使您只影响尽可能少的信息。
避免使用太多索引。索引数量过多会导致 增加写入延迟并增加索引条目的存储成本。
请注意,索引具有单调递增值的字段, 例如时间戳记,可能会导致热点,从而影响 具有高读写率的应用程序。
https://firebase.google.com/docs/firestore/best-practices#indexes
此外,在索引下面的这一部分可能会有所帮助:
避免每秒多次写入文档。欲了解更多 有关信息,请参阅单个文档的更新。
使用批处理操作进行写入和删除,而不是单个操作 操作。批处理操作效率更高,因为它们可以执行 多个操作,其开销与单个操作相同。
在可用的地方使用异步调用,而不是同步调用。 异步调用可最大程度地减少延迟影响。例如,考虑 需要文档查找结果和结果的应用程序 呈现响应之前查询的内容。如果查找和查询 没有数据依赖性,无需同步等待 直到查询完成之前的查询为止。
请勿使用偏移量。而是使用游标。仅使用偏移量可以避免 将跳过的文档返回到您的应用程序,但是这些 文档仍在内部检索。跳过的文件影响 查询的延迟时间,并且您的应用需要为读取付费 检索它们所需的操作。
https://firebase.google.com/docs/firestore/best-practices#read_and_write_operations
希望这对您有帮助!