Firebase Geofire需要大量时间来加载密钥
我有一个android应用程序,它使用GPS定位和Firebase Geofire需要大量时间来加载密钥,firebase,geofire,Firebase,Geofire,我有一个android应用程序,它使用GPS定位和GeoFire获取附近的钥匙。firebase数据库中大约有15000个密钥。从Android应用程序加载附近的按键大约需要20秒。为什么会这样?尽管Firebase Geofire官方文件指出 GeoFire仅选择性地加载某些位置附近的数据,即使使用非常大的数据集,也能保持应用程序的轻量级和响应速度 遵循推荐的数据库结构时,GeoFire的性能非常好。要了解有关使用goefire构建数据的最佳方法的更多信息,请查看此链接 现在有以下方法可以改进
GeoFire
获取附近的钥匙。firebase数据库中大约有15000个密钥。从Android应用程序加载附近的按键大约需要20秒。为什么会这样?尽管Firebase Geofire官方文件指出
GeoFire仅选择性地加载某些位置附近的数据,即使使用非常大的数据集,也能保持应用程序的轻量级和响应速度
遵循推荐的数据库结构时,GeoFire的性能非常好。要了解有关使用goefire构建数据的最佳方法的更多信息,请查看此链接 现在有以下方法可以改进您的查询以快速获得结果,即使我不知道您的确切用例,这可能会有所帮助
当我们遵循推荐的数据库结构时,GeoFire的性能非常好。要了解更多关于使用goefire构造数据的最佳方法,请查看此链接 现在有以下方法可以改进您的查询以快速获得结果,即使我不知道您的确切用例,这可能会有所帮助
确保只在geofire集合中存储GeoHash和Lat/Lon数据。如果需要存储其他数据,可以使用相同的键将其存储在另一个集合中,并根据需要发出单独的查询以获取该数据 我使用这个结构,它似乎工作得很好
app-id
-> geodata
--> geofire
---> key
----> g: <geohash>
-----> l:
-------> 0: Lat
-------> 1: Lon
--> other
---> key
----> <otherhash object>
然后将数据单独保存在firebase中:
mDatabase = FirebaseDatabase.getInstance().getReference("geodata");
mDatabase.child("other").child(people.key).setValue(people);
希望这有帮助。:) 确保只在geofire集合中存储GeoHash和Lat/Lon数据。如果需要存储其他数据,可以使用相同的键将其存储在另一个集合中,并根据需要发出单独的查询以获取该数据 我使用这个结构,它似乎工作得很好
app-id
-> geodata
--> geofire
---> key
----> g: <geohash>
-----> l:
-------> 0: Lat
-------> 1: Lon
--> other
---> key
----> <otherhash object>
然后将数据单独保存在firebase中:
mDatabase = FirebaseDatabase.getInstance().getReference("geodata");
mDatabase.child("other").child(people.key).setValue(people);
希望这有帮助。:) 谢谢你的回答
我通过在Firebase数据库的安全规则中添加
“.indexOn:[“g”]
,在g(geohash)
上建立索引,解决了我的问题。谢谢您的回答
我通过在Firebase数据库的安全规则中添加
“.indexOn:[“g”]
在g(geohash)
上建立索引来解决我的问题。您是否向数据库中添加了g
属性的索引,如本文所述和所示?是否向数据库中添加了g
属性的索引,如本文所述和所示?