Firebase:数据结构

狗咖啡

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

示例节点

Groups
    id_0
      groupName: Bills Cooking
      members
        uid_0: true
        uid_1: true
        uid_2: true

我想知道成员组中的键数何时过多,并开始影响性能。

每个组均包含与其相关联的所有成员的参考ID,可能为0,也可能为1000或更多。

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

如果要在表视图中列出所有组名,我将获取所有组节点以获取其名称。问题是这样做的,所以我要同时获取所有成员密钥-我确定10个左右就可以了,所以我只是想知道您所说的意思-重构时间了。如果有100个组,每个组1000个用户-您将获取大量额外数据。

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

谢谢

周杰伦

这是答案的关键:

如果要在表视图中列出所有组名

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

即使每个组中有许多用户,100个组也相当小。所以仔细考虑一下...

用户登录并完成查询,该查询返回他们所属的组。

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

更重要的是,为了获得良好的用户体验,您可能不会一次显示100个群组-这将是其中的一部分。大概15左右。

如果您担心应用程序的存储空间,则可以通过.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组,并且您已经有了组字典中的那些名称

let groupName = groups_dict.objectForKey [“ gid_2”] // Kato的空手道Korner

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章