首页 > 解决方案 > GeoFire 读取操作效率

问题描述

当用户四处走动时,我正在使用 geofire 来查询 Firestore。这是我的问题:

假设我的 Firestore 数据库中有 5000 条地理哈希记录,它们随机分布在世界各地。这些记录都存储在数据库中的根节点之外。当我执行半径非常小的 geofire 查询时,会发生哪些情况(假设默认的 geofire 参数):

选项 1:第一个地理查询生成 5000 个计费 Firebase 读取操作,因为它搜索所有 5000 个键以查找匹配项。此后的每个地理查询(来自相同位置或不同位置)都使用 5000 个密钥的缓存副本,并且不会生成计费读取操作。

选项 2:无论地理查询中心点或半径是否发生变化,每个地理查询都会生成一个新的 5000 计费 Firebase 读取操作

选项3:完全不同的东西!

标签: firebasegoogle-cloud-firestoregeofiregeohashinggeofirestore

解决方案


Cloud Firestore 中发生的唯一可计费读取是针对返回给客户端的那些文档。GeoFire 并没有改变这个事实。GeoFire 只需满足您的要求,将其转换为 Firestore 查询,该查询至少与您请求的半径范围内的文档数量相匹配,可能还有一些额外的。它不考虑集合中的所有文档。那将是非常低效的,并且首先破坏了geohashes的目的。

从他们的文档中

GeoFire 有选择地仅加载某些位置附近的数据,即使对于非常大的数据集,也能保持您的应用程序轻巧且响应迅速。


推荐阅读