提高 GeoFire 查询性能 - Firebase
Improve GeoFire query performance - Firebase
我正在 Swift 构建一个应用程序,其中用户(可以 post 他们在街上目睹的事件的位置。每个事件的生命周期为 45 分钟,然后它就不会出现在该阈值之后的地图上。
我这样构建 Json 树(位置和事件共享相同的 ID - 此处未表示):
firebaseapp {
locations {
g
l {
0: "latitude"
1: "longitude"
}
}
events {
timestamp: "UTC timestamp"
description: "my description"
user: "id of user"
}
users {
// User data
}
}
我查询了屏幕上显示的区域对应的所有位置,然后我查询了不到45分钟前发生的事件。我这样做:
regionQuery = geoFire.queryWithRegion(mapView.region)
regionQuery.observeEventType(.KeyEntered, withBlock: { (key: String!, location: CLLocation!) in
// I query my events based on the key here
})
这种方法的问题是,对于特定区域,我查询过去发生的事件的所有位置(可能很多),然后我查询发生时间少于 45 分钟的事件以前使用传统的 Firebase 查询。
是否有更好的解决方案来解决我的问题,因为如果每次用户移动地图时,显示区域的所有位置都会加载,恐怕我会很快超过带宽阈值...
只需将 "recent locations" 与 "historic locations" 拆分:
recent_locations
g
l {
0: "latitude"
1: "longitude"
}
historic_locations
g
l {
0: "latitude"
1: "longitude"
}
现在您可以运行针对最近位置或历史位置进行地理查询。
我正在 Swift 构建一个应用程序,其中用户(可以 post 他们在街上目睹的事件的位置。每个事件的生命周期为 45 分钟,然后它就不会出现在该阈值之后的地图上。
我这样构建 Json 树(位置和事件共享相同的 ID - 此处未表示):
firebaseapp {
locations {
g
l {
0: "latitude"
1: "longitude"
}
}
events {
timestamp: "UTC timestamp"
description: "my description"
user: "id of user"
}
users {
// User data
}
}
我查询了屏幕上显示的区域对应的所有位置,然后我查询了不到45分钟前发生的事件。我这样做:
regionQuery = geoFire.queryWithRegion(mapView.region)
regionQuery.observeEventType(.KeyEntered, withBlock: { (key: String!, location: CLLocation!) in
// I query my events based on the key here
})
这种方法的问题是,对于特定区域,我查询过去发生的事件的所有位置(可能很多),然后我查询发生时间少于 45 分钟的事件以前使用传统的 Firebase 查询。
是否有更好的解决方案来解决我的问题,因为如果每次用户移动地图时,显示区域的所有位置都会加载,恐怕我会很快超过带宽阈值...
只需将 "recent locations" 与 "historic locations" 拆分:
recent_locations
g
l {
0: "latitude"
1: "longitude"
}
historic_locations
g
l {
0: "latitude"
1: "longitude"
}
现在您可以运行针对最近位置或历史位置进行地理查询。