Firebase:数据结构
此节点中的成员数量何时开始影响性能? 示例节点Firebase:数据结构,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,此节点中的成员数量何时开始影响性能? 示例节点 Groups id_0 groupName: Bills Cooking members uid_0: true uid_1: true uid_2: true 我想知道成员组中的键数何时变得过多,并开始影响性能 每个组都包含一个指向与其关联的所有成员的引用id,可能有0个,也可能有1000个或更多 成员节点(未显示)将有自己的引用,指示它们属于哪些组。据我所知,这是
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建议我们这样构造数据。详细的
谢谢以下是答案的关键: 如果要在tableview中列出所有组名 如果有100个组,每个组中有1000个用户 100个组相当小,即使每个组中都有许多用户。所以仔细想想 用户登录并执行查询,返回他们所属的组 假设每个用户不是每个组的成员(如果他们是,则不需要该结构),它将返回一些少于100的组数 更重要的是,为了获得良好的用户体验,您可能不会一次显示100个组——它只是其中的一个子集;大概15岁左右 如果您担心应用程序内存空间,请不要使用query'ing by.Value一次返回所有数据,而是使用query by.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以下是答案的关键: 如果要在tableview中列出所有组名 如果有100个组,每个组中有1000个用户 100个组相当小,即使每个组中都有许多用户。所以仔细想想 用户登录并执行查询,返回他们所属的组 假设每个用户不是每个组的成员(如果他们是,则不需要该结构),它将返回一些少于100的组数 更重要的是,为了获得良好的用户体验,您可能不会一次显示100个组——它只是其中的一个子集;大概15岁左右 如果您担心应用程序内存空间,请不要使用query'ing by.Value一次返回所有数据,而是使用query by.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