Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase:数据结构_Firebase_Firebase Realtime Database - Fatal编程技术网

Firebase:数据结构

Firebase:数据结构,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,此节点中的成员数量何时开始影响性能? 示例节点 Groups id_0 groupName: Bills Cooking members uid_0: true uid_1: true uid_2: true 我想知道成员组中的键数何时变得过多,并开始影响性能 每个组都包含一个指向与其关联的所有成员的引用id,可能有0个,也可能有1000个或更多 成员节点(未显示)将有自己的引用,指示它们属于哪些组。据我所知,这是

此节点中的成员数量何时开始影响性能?

示例节点

Groups
    id_0
      groupName: Bills Cooking
      members
        uid_0: true
        uid_1: true
        uid_2: true
我想知道成员组中的键数何时变得过多,并开始影响性能

每个组都包含一个指向与其关联的所有成员的引用id,可能有0个,也可能有1000个或更多

成员节点(未显示)将有自己的引用,指示它们属于哪些组。据我所知,这是在Firebase中构建数据的一种好方法,在这两个方面都有参考键

如果要在tableview中列出所有组名,我将获取所有组节点以获取它们的名称。问题是这样做,我同时获取所有成员的密钥-我确信这10个左右都可以-我只是想知道你说的是什么-是时候重构了。如果有100个组,每个组中有1000个用户,那么您将获取大量额外数据

我知道我可以创建另一个节点并避免此问题,但Firebase建议我们这样构造数据。详细的


谢谢

以下是答案的关键:

如果要在tableview中列出所有组名

如果有100个组,每个组中有1000个用户

100个组相当小,即使每个组中都有许多用户。所以仔细想想

用户登录并执行查询,返回他们所属的组

假设每个用户不是每个组的成员(如果他们是,则不需要该结构),它将返回一些少于100的组数

更重要的是,为了获得良好的用户体验,您可能不会一次显示100个组——它只是其中的一个子集;大概15岁左右

如果您担心应用程序内存空间,请不要使用query'ing by.Value一次返回所有数据,而是使用query by.ChildAdded一次返回每个节点,获取组名并丢弃其余数据

另一个想法是将组名分开,并根据需要在代码中查找它们

group_names
      gid_0: Bills Cooking
      gid_1: Jay's Big Band Extravagnza
      gid_2: Kato's Karate Korner
只有100个,所以在应用程序启动时将它们全部加载到字典中

然后在用户节点中

users
  uid_0
    name: Jesse
    groups:
      gid_1: true
      gid_2: true
用户登录后,您知道他属于组1和组2,并且您已经从组字典中获得了这些名称


让groupName=groups_dict.objectForKey[“gid_2”]//加藤的空手道Korner

以下是答案的关键:

如果要在tableview中列出所有组名

如果有100个组,每个组中有1000个用户

100个组相当小,即使每个组中都有许多用户。所以仔细想想

用户登录并执行查询,返回他们所属的组

假设每个用户不是每个组的成员(如果他们是,则不需要该结构),它将返回一些少于100的组数

更重要的是,为了获得良好的用户体验,您可能不会一次显示100个组——它只是其中的一个子集;大概15岁左右

如果您担心应用程序内存空间,请不要使用query'ing by.Value一次返回所有数据,而是使用query by.ChildAdded一次返回每个节点,获取组名并丢弃其余数据

另一个想法是将组名分开,并根据需要在代码中查找它们

group_names
      gid_0: Bills Cooking
      gid_1: Jay's Big Band Extravagnza
      gid_2: Kato's Karate Korner
只有100个,所以在应用程序启动时将它们全部加载到字典中

然后在用户节点中

users
  uid_0
    name: Jesse
    groups:
      gid_1: true
      gid_2: true
用户登录后,您知道他属于组1和组2,并且您已经从组字典中获得了这些名称

让groupName=groups_dict.objectForKey[“gid_2”]//加藤的空手道Korner