Firebase:数据结构

Firebase: Data Structure

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

示例节点

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

我想知道 members 组中的键数何时变得太多,并开始影响性能。

每个组都包含一个与它关联的所有成员的引用ID,可能有0个也可能有1000个或更多。

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

如果想在表视图中列出所有组名称,我会获取所有组节点以获取它们的名称。问题是这样做我同时获取所有成员键 - 我确定它可以用于 10 左右我只是想知道你说的是什么意思 - 是时候重构了。如果有 100 个组和每个组中的 1000 个用户 - 您正在获取大量额外数据。

我知道我可以创建另一个节点来避免这个问题,但这是 Firebase 建议我们构建数据的方式。详尽here

谢谢

这是答案的关键:

If want to list all the group names in a tableview

If there are 100 groups and 1000 users in each group

100 个群组相当小,即使每个群组中有许多用户也是如此。所以仔细想想...

用户登录并完成查询return他们所属的组。

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

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

如果您担心应用程序内存 space,而不是通过 .Value 查询一次 return 所有数据,通过 .ChildAdded 查询将 return 每个节点一个一个,抢组名,把剩下的数据折腾一下

另一个想法是将组名拆分出来,然后根据需要在代码中查看它们。

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"] //加藤的空手道角