此节点中的成员数何时开始影响效果?
示例节点
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建议我们构建数据的方式。详见here
由于
答案 0 :(得分:3)
这是答案的关键:
如果要列出tableview中的所有组名
如果每组有100个组和1000个用户
即使每组中有多个用户,100个组也相当小。所以想一想......
用户登录并完成查询,返回他们所属的组。
假设每个用户不是每个组的成员(如果他们是,结构将是不需要的),它将返回少于100的一些组。
更重要的是,为了获得良好的用户体验,您可能不会一次显示100个组 - 这将是其中的一部分;也许15左右。
如果你担心应用程序内存空间,而不是通过.Value查询一次返回所有数据,而不是通过.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