此节点中的成员数何时开始影响性能?
示例节点
Groups
id_0
groupName: Bills Cooking
members
uid_0: true
uid_1: true
uid_2: true我想知道成员组中的键数何时会变得太多,并开始影响性能。
每个组包含与其关联的所有成员的引用id,可能为0,也可能为1000或更多。
成员节点(未显示)将有自己的引用,指示它们属于哪些组。据我理解,这是一种在Firebase中构建数据的好方法,在这两个领域都有引用键。
如果想在一个表视图中列出所有组名,我将获取所有组节点的名称以获取它们的名称。问题是这样做的话,我会同时抓取所有成员的密钥--我肯定10点左右就可以了,我只是想知道你说的是什么时候--重构时间。如果每组中有100个组和1000个用户,那么您将获取大量额外的数据。
我知道我可以创建另一个节点并避免这个问题,但这就是Firebase建议我们构建数据的方式。作为详细的这里
谢谢
发布于 2016-06-05 13:33:31
答案的关键是:
如果想在一个表视图中列出所有组名 如果每组有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“//Kato的空手道
https://stackoverflow.com/questions/37640076
复制相似问题