如何在Firebase中搜索这个庞大的用户列表
问题描述:
我尝试在Firebase中创建世界模型的人。这意味着地方我需要把500分miljon +的记录,像这样火力地堡JSON:如何在Firebase中搜索这个庞大的用户列表
"USER" : {
"HnhLyXRxUINmlltKOfxx2QBYiQ53" : { // FireBase user ids
"FRIENDLYS" : {
"-KWrFrMx1yQe0jhyA7HP" : { // Push ids
"animal" : "dog"
},
"-KWrG7EsLkZvASjpcW3A" : {
"animal" : "cat"
},
"-KWrG9hbQxrZwdfjqbuQ" : {
"animal" : "horse"
}
},
"email" : "[email protected]",
"lastName" : "Doe",
"firstName" : "John",
"googleId" : "10086464927329323e2326"
},
"HnhLyXHKJH67677GJKMnbBYiQ53" : { // FireBase user ids
"FRIENDLYS" : {
"-KWrFrMdjnjs982s7HP" : { // Push ids
"animal" : "ant"
....
}
我想寻找一个USER
这样的:
firebase.child("USER/HnhLyXRxUINmlltKOfxx2QBYiQ53").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
的问题是,如果这是一个好方法继续建设,特别是像我这样搜索时,有一个“USER”对象这么大可行吗?
我可以期待什么?
答
您的代码不是正在为用户搜索。您正在构建对子节点的直接引用,该操作本身没有任何性能影响。直接查找密钥始终很快,因此用户数量不会对应用程序产生负面影响。
但是,将“FRIENDLYS”[原文]存储在用户下不会缩放。加载单个用户节点的速度会随着每个额外的孩子放在那里而变慢。您应该将它们分别存储在不同的根节点下,只有在实际需要时才加载它们。
另请参阅实时数据库指南的Structure Your Data部分。