我正在使用geofire在用户走动时查询Firestore。这是我的问题:
比方说,我的Firestore数据库中有5000条经过地理哈希处理的记录,它们随机分布在世界各地。记录全部存储在数据库的根节点之外。当我执行半径很小的geofire查询时,会发生以下情况(假设默认的geofire参数):
选项1:第一个地理位置查询会在所有5000个键中搜索匹配项,从而生成5000个可计费的Firebase读取操作。此后,每个地理位置查询(从相同位置或不同位置)都使用5000个键的缓存副本,并且不会生成可计费的读取操作。
选项2:无论地理查询中心点或半径发生变化,每个地理查询都会生成新的5000个可计费Firebase读取操作
选项3:完全不一样!
答案 0 :(得分:2)
在Cloud Firestore中发生的唯一可计费读取是返回给客户端的那些文档。 GeoFire不会改变这一事实。 GeoFire会满足您的要求,并将其转换为Firestore查询,该查询至少与将落入您请求的半径范围内的文档数量相匹配,并且可能会更多。它不会考虑集合中的所有文档。那将是非常低效的,并且首先会破坏地质哈希的目的。
来自他们的documentation:
GeoFire仅在特定位置附近有选择地加载数据,即使有非常大的数据集,也可以保持应用程序的轻量级和响应能力。