Firebase 可扩展性限制
Firebase Scalability Limit
这 post 表示当单个节点开始有 1-10+ 百万个子节点时,FireBase 将出现问题。
如果我们有超过 1000 万用户,应该如何处理应用程序中的用户?在所有示例中,我认为 Users 只是单个节点 "Users".
的子节点
Firebase 不适合处理长项目列表。这些长列表的问题与其说是存储数据,不如说是访问数据。
无论何时访问列表(例如 ref.child('users').on(...
)Firebase 都必须考虑服务器上该列表中的所有项目;即使您只下载几个用户 (.limitToLast(10)
),它也必须考虑每个用户。
但是只要您从不尝试访问该列表,您就可以在其中存储任意数量的用户。但这意味着您始终可以直接访问它们,例如ref.child('users').child(auth.uid).on(...
.
这会限制您可以实施的用例,因此开发人员通常会根据用户的使用需求来创建用户子列表。例如,如果每个用户都有一个朋友列表,您可以保留 ref.child('users_friends').child(auth.id).on(...
之类的列表,然后再次使用 ref.child('users').child(auth.uid)
查找每个人。这样,您只需读取一小部分用户,然后直接加载每个用户。
这 post 表示当单个节点开始有 1-10+ 百万个子节点时,FireBase 将出现问题。 如果我们有超过 1000 万用户,应该如何处理应用程序中的用户?在所有示例中,我认为 Users 只是单个节点 "Users".
的子节点Firebase 不适合处理长项目列表。这些长列表的问题与其说是存储数据,不如说是访问数据。
无论何时访问列表(例如 ref.child('users').on(...
)Firebase 都必须考虑服务器上该列表中的所有项目;即使您只下载几个用户 (.limitToLast(10)
),它也必须考虑每个用户。
但是只要您从不尝试访问该列表,您就可以在其中存储任意数量的用户。但这意味着您始终可以直接访问它们,例如ref.child('users').child(auth.uid).on(...
.
这会限制您可以实施的用例,因此开发人员通常会根据用户的使用需求来创建用户子列表。例如,如果每个用户都有一个朋友列表,您可以保留 ref.child('users_friends').child(auth.id).on(...
之类的列表,然后再次使用 ref.child('users').child(auth.uid)
查找每个人。这样,您只需读取一小部分用户,然后直接加载每个用户。