如何在Firebase中搜索这个庞大的用户列表

如何在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部分。