firebase - GeoFire 读取操作效率
问题描述
当用户四处走动时,我正在使用 geofire 来查询 Firestore。这是我的问题:
假设我的 Firestore 数据库中有 5000 条地理哈希记录,它们随机分布在世界各地。这些记录都存储在数据库中的根节点之外。当我执行半径非常小的 geofire 查询时,会发生哪些情况(假设默认的 geofire 参数):
选项 1:第一个地理查询生成 5000 个计费 Firebase 读取操作,因为它搜索所有 5000 个键以查找匹配项。此后的每个地理查询(来自相同位置或不同位置)都使用 5000 个密钥的缓存副本,并且不会生成计费读取操作。
选项 2:无论地理查询中心点或半径是否发生变化,每个地理查询都会生成一个新的 5000 计费 Firebase 读取操作
选项3:完全不同的东西!
解决方案
Cloud Firestore 中发生的唯一可计费读取是针对返回给客户端的那些文档。GeoFire 并没有改变这个事实。GeoFire 只需满足您的要求,将其转换为 Firestore 查询,该查询至少与您请求的半径范围内的文档数量相匹配,可能还有一些额外的。它不考虑集合中的所有文档。那将是非常低效的,并且首先破坏了geohashes的目的。
从他们的文档中:
GeoFire 有选择地仅加载某些位置附近的数据,即使对于非常大的数据集,也能保持您的应用程序轻巧且响应迅速。
推荐阅读
- hibernate - 为什么从 saveAndFlush() 返回的实体的 OneToMany 字段映射为 null?
- c# - 发送消息 CTRL + 向上箭头
- python - 如何在 Python 3 中读取 Thorlabs 应变计读取器 KSG101
- python-3.x - MNIST 数据集异常检测
- ruby-on-rails - Ruby where 子句一起查找特定条件和 nil 值
- java - CrudRepository 保存方法不保存任何数据库
- php - 如何处理将数组或单个值传递给函数
- reactjs - 如何更新数组的状态
- amazon-web-services - 执行 aws s3 ls s3://[mybucketname:)] 时出现 InsecureRequestWarning --no-verify-ssl
- python-3.x - 从元数据动态创建 DataFrame 列