Firebase:数据结构
Firebase: Data Structure
此节点内的成员数量何时开始影响性能?
示例节点
Groups
id_0
groupName: Bills Cooking
members
uid_0: true
uid_1: true
uid_2: true
我想知道 members 组中的键数何时变得太多,并开始影响性能。
每个组都包含一个与它关联的所有成员的引用ID,可能有0个也可能有1000个或更多。
成员节点(未显示)将有自己的引用,指示他们属于哪些组。根据我的理解,这是在 Firebase 中构建数据的好方法,在两个区域都有参考键。
如果想在表视图中列出所有组名称,我会获取所有组节点以获取它们的名称。问题是这样做我同时获取所有成员键 - 我确定它可以用于 10 左右我只是想知道你说的是什么意思 - 是时候重构了。如果有 100 个组和每个组中的 1000 个用户 - 您正在获取大量额外数据。
我知道我可以创建另一个节点来避免这个问题,但这是 Firebase 建议我们构建数据的方式。详尽here
谢谢
这是答案的关键:
If want to list all the group names in a tableview
If there are 100 groups and 1000 users in each group
100 个群组相当小,即使每个群组中有许多用户也是如此。所以仔细想想...
用户登录并完成查询return他们所属的组。
假设每个用户不是每个组的成员(如果是,则不需要该结构)它将 return 一些少于 100 的组。
更重要的是,为了获得良好的用户体验,您可能不会一次显示 100 个组 - 它只是其中的一部分;大概15个左右。
如果您担心应用程序内存 space,而不是通过 .Value 查询一次 return 所有数据,通过 .ChildAdded 查询将 return 每个节点一个一个,抢组名,把剩下的数据折腾一下
另一个想法是将组名拆分出来,然后根据需要在代码中查看它们。
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"] //加藤的空手道角
此节点内的成员数量何时开始影响性能?
示例节点
Groups
id_0
groupName: Bills Cooking
members
uid_0: true
uid_1: true
uid_2: true
我想知道 members 组中的键数何时变得太多,并开始影响性能。
每个组都包含一个与它关联的所有成员的引用ID,可能有0个也可能有1000个或更多。
成员节点(未显示)将有自己的引用,指示他们属于哪些组。根据我的理解,这是在 Firebase 中构建数据的好方法,在两个区域都有参考键。
如果想在表视图中列出所有组名称,我会获取所有组节点以获取它们的名称。问题是这样做我同时获取所有成员键 - 我确定它可以用于 10 左右我只是想知道你说的是什么意思 - 是时候重构了。如果有 100 个组和每个组中的 1000 个用户 - 您正在获取大量额外数据。
我知道我可以创建另一个节点来避免这个问题,但这是 Firebase 建议我们构建数据的方式。详尽here
谢谢
这是答案的关键:
If want to list all the group names in a tableview
If there are 100 groups and 1000 users in each group
100 个群组相当小,即使每个群组中有许多用户也是如此。所以仔细想想...
用户登录并完成查询return他们所属的组。
假设每个用户不是每个组的成员(如果是,则不需要该结构)它将 return 一些少于 100 的组。
更重要的是,为了获得良好的用户体验,您可能不会一次显示 100 个组 - 它只是其中的一部分;大概15个左右。
如果您担心应用程序内存 space,而不是通过 .Value 查询一次 return 所有数据,通过 .ChildAdded 查询将 return 每个节点一个一个,抢组名,把剩下的数据折腾一下
另一个想法是将组名拆分出来,然后根据需要在代码中查看它们。
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"] //加藤的空手道角