该节点中的成员数量何时开始影响性能?
示例节点
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] 删除。
我来说两句