GeoFire 读取操作效率
GeoFire read ops efficiency
我正在使用 geofire 在用户四处走动时查询 Firestore。这是我的问题:
假设我的 Firestore 数据库中有 5000 条经过地理哈希处理的记录,它们随机分布在世界各地。这些记录都存储在数据库中的根节点之外。当我执行半径非常小的 geofire 查询时,发生了哪些情况(假设默认的 geofire 参数):
选项 1:第一个地理查询生成 5000 个可计费的 firebase 读取操作,因为它在所有 5000 个键中搜索匹配项。此后的每个地理查询(来自相同位置或不同位置)都使用 5000 个键的缓存副本,并且不会生成计费读取操作。
选项 2:无论地理查询中心点或半径是否发生变化,每个地理查询都会生成一个新的 5000 个可计费的 firebase 读取操作
选项 3:完全不同!
Cloud Firestore 中发生的唯一计费读取是针对那些返回给客户端的文档。 GeoFire 并没有改变这个事实。 GeoFire 只是接受您的要求,将其转换为 Firestore 查询,该查询至少匹配落入您请求的半径内的文档数量,可能还有一些额外的。它不考虑集合中的所有文档。那将是非常低效的,并且首先会破坏 geohashes 的目的。
来自他们的documentation:
GeoFire selectively loads only the data near certain locations, keeping your applications light and responsive, even with extremely large datasets.
我正在使用 geofire 在用户四处走动时查询 Firestore。这是我的问题:
假设我的 Firestore 数据库中有 5000 条经过地理哈希处理的记录,它们随机分布在世界各地。这些记录都存储在数据库中的根节点之外。当我执行半径非常小的 geofire 查询时,发生了哪些情况(假设默认的 geofire 参数):
选项 1:第一个地理查询生成 5000 个可计费的 firebase 读取操作,因为它在所有 5000 个键中搜索匹配项。此后的每个地理查询(来自相同位置或不同位置)都使用 5000 个键的缓存副本,并且不会生成计费读取操作。
选项 2:无论地理查询中心点或半径是否发生变化,每个地理查询都会生成一个新的 5000 个可计费的 firebase 读取操作
选项 3:完全不同!
Cloud Firestore 中发生的唯一计费读取是针对那些返回给客户端的文档。 GeoFire 并没有改变这个事实。 GeoFire 只是接受您的要求,将其转换为 Firestore 查询,该查询至少匹配落入您请求的半径内的文档数量,可能还有一些额外的。它不考虑集合中的所有文档。那将是非常低效的,并且首先会破坏 geohashes 的目的。
来自他们的documentation:
GeoFire selectively loads only the data near certain locations, keeping your applications light and responsive, even with extremely large datasets.