Firebase文档读取优化

Firebase文档读取优化,firebase,google-maps,react-native,google-cloud-firestore,Firebase,Google Maps,React Native,Google Cloud Firestore,我正在为我的react原生应用程序使用firebase firestore,我正在创建一个应用程序,该应用程序将用户地理位置发送到firestore并生成热图,该应用程序将每5分钟发送一次用户位置,我的数据如下所示 现在我有大约1000个文档,每次我刷新应用程序时,它都会尝试获取所有坐标以生成热图 我遇到的问题是,当它生成热图时,它将需要读取所有1000个文档,如果我有5000个coords/文档,并且我有10个用户使用它,它将达到firebase免费计划中的文档读取限制,即50k/天 我知道

我正在为我的react原生应用程序使用firebase firestore,我正在创建一个应用程序,该应用程序将用户地理位置发送到firestore并生成热图,该应用程序将每5分钟发送一次用户位置,我的数据如下所示

现在我有大约1000个文档,每次我刷新应用程序时,它都会尝试获取所有坐标以生成热图

我遇到的问题是,当它生成热图时,它将需要读取所有1000个文档,如果我有5000个coords/文档,并且我有10个用户使用它,它将达到firebase免费计划中的文档读取限制,即50k/天


我知道我可以支付一些钱来提高阅读限制,但我只是想知道是否有人遇到了这个问题,并找到了解决它的优化方法。谢谢

我不知道应用程序的所有限制,但是您可以将一个月的所有坐标存储在一个文档中,以数组的形式存储,从而减少8928次文档读取

如果我做了正确的计算,根据解释存储大小计算的文档页,您可以计算出一个包含3个数组的文档,它们分别名为
lat
long
ts
,位于您的
coords
集合下,该集合存储288*31个三元组值的数据(288=一天内每5分钟一次)将具有最大857088字节的大小,这低于文档的最大可能大小(即1048576字节),如下所示:


当然,您必须处理数组字段,但为此,您可以使用
firebase.firestore.FieldValue.arrayUnion(),请参见

您不是只对上次刷新热图后发生变化的坐标感兴趣吗?另外,为什么要强制刷新数据。。如果几个小时都是静止的呢?如果只是观察更改的节点,让数据只在需要时更新,不是更好吗?是的,这就是我想要做的,我今天发现了这个,甚至认为应该将它添加到云函数中,它甚至会减少读取more@YiZhou实际上,不建议使用侦听器(即onSnapshot)在云函数中,因为它的生命周期通常很短。我现在正在使用它@Yi Zhou Hi,你有时间看看建议的解决方案吗?