【问题标题】:Does Firestore count "Re-Reads" as document reads?Firestore 是否将“重新读取”​​计为文档读取?
【发布时间】:2019-10-30 00:08:45
【问题描述】:

我正在尝试使用 Geofirestore 从中心位置查询给定半径的结果。据我所知,GeoFire 无法限制查询的结果数量。我对这个问题的解决方案是逐步增加我的半径,直到我得到 X 数量的结果。似乎这样做,我将多次重新查询结果,这可能会很昂贵。如果我查询 10 个结果但想要 20 个。Firestore 会将其视为 30+ 次读取吗?

【问题讨论】:

标签: swift firebase firebase-realtime-database google-cloud-firestore geofire


【解决方案1】:

我所知道的基于 Firestore 的地理查询实现都使用 geohashes 来实现,这意味着它们将纬度和经度组合成一个值,然后可用于过滤特定地理范围内的所有文档。虽然在技术上可以通过在查询中添加limit(...) 来限制返回的文档数量,但结果不会按照它们到查询中心的距离排序。因此,您很可能只是在查询范围的一个区域中获得结果,而不是最近的文档。

Firestore 会针对从服务器读取的所有文档向您收费。由于它具有本地缓存​​,因此这可能不是您后续查询的所有文档,因为来自先前查询的文档可能已经在本地缓存中。

也就是说:请注意,使用 geohashes 进行地理查询会导致大量过度阅读文档。在我的实验中,这可能导致读取的文档比查询范围内的文档多 3 倍到 10 倍。我强烈建议您阅读/关注 Firestore 上的 geohashes 和 geoqueries,例如观看我不久前关于该主题的演讲:https://www.youtube.com/watch?v=mx1mMdHBi5Q

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 1970-01-01
    • 2020-07-31
    • 2021-11-18
    • 2021-09-25
    • 2020-01-04
    相关资源
    最近更新 更多