首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Firebase:数据结构

Firebase:数据结构
EN

Stack Overflow用户
提问于 2016-06-05 08:50:21
回答 1查看 228关注 0票数 0

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

示例节点

代码语言:javascript
复制
Groups
    id_0
      groupName: Bills Cooking
      members
        uid_0: true
        uid_1: true
        uid_2: true

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

每个组包含与其关联的所有成员的引用id,可能为0,也可能为1000或更多。

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

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

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

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-05 13:33:31

答案的关键是:

如果想在一个表视图中列出所有组名 如果每组有100个组和1000个用户

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

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

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

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

如果您担心应用程序内存空间,而不是由.Value一次返回所有数据的查询‘,而是由.ChildAdded查询(每次只返回一个节点),获取组名并抛出其余的数据。

另一个想法是分解组名,并根据需要在代码中查找它们。

代码语言:javascript
复制
group_names
      gid_0: Bills Cooking
      gid_1: Jay's Big Band Extravagnza
      gid_2: Kato's Karate Korner

只有100个,所以在应用程序开始时,将它们全部加载到字典中。

然后在用户节点中

代码语言:javascript
复制
users
  uid_0
    name: Jesse
    groups:
      gid_1: true
      gid_2: true

用户登录,您知道他属于第1组和第2组,并且您已经从组字典中获得了这些名称。

设groupName = groups_dict.objectForKey"gid_2“//Kato的空手道

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37640076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档