我尝试在Firebase中创建一个世界模型的人。这意味着我需要放置500 miljon +记录,就像这个Firebase json:
"USER" : {
"HnhLyXRxUINmlltKOfxx2QBYiQ53" : { // FireBase user ids
"FRIENDLYS" : {
"-KWrFrMx1yQe0jhyA7HP" : { // Push ids
"animal" : "dog"
},
"-KWrG7EsLkZvASjpcW3A" : {
"animal" : "cat"
},
"-KWrG9hbQxrZwdfjqbuQ" : {
"animal" : "horse"
}
},
"email" : "someemail@gmail.com",
"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) {
}
});
问题是这是否是一种继续发展的好方法,尤其是拥有一个"用户"像我一样搜索这个大对象?
我能期待什么?
答案 0 :(得分:2)
您的代码不是正在搜索的用户。您正在构建对子节点的直接引用,该操作本身没有任何性能影响。直接查找密钥总是很快,因此用户数量不会对您的应用程序产生负面影响。
但是,在用户下存储“FRIENDLYS”[sic]不会缩放。加载单个用户节点会使每个额外的子项放在那里变慢。您应该将它们分别存储在不同的根节点下,并且只有在您真正需要它们时才加载它们。
另请参阅实时数据库指南的Structure Your Data部分。