我正在为一个可能有相当多的密钥(可能是数百万)的项目测试 firebase。
我已经测试了使用 node 加载几 10k 的记录,并且加载性能看起来不错。但是,如果我展开我的根节点,“FORGE”Web UI 会变得异常缓慢并呈现每条记录。
Firebase 不是为这种数据量而设计的,还是我做错了什么?
我正在为一个可能有相当多的密钥(可能是数百万)的项目测试 firebase。
我已经测试了使用 node 加载几 10k 的记录,并且加载性能看起来不错。但是,如果我展开我的根节点,“FORGE”Web UI 会变得异常缓慢并呈现每条记录。
Firebase 不是为这种数据量而设计的,还是我做错了什么?
这只是 Forge UI 的局限性。它仍然相当初级。
Firebase 中的实时功能不仅适用于大型数据集,而且专为大型数据集而设计。实时记录流的事实非常适合这一点。
与任何大型数据应用程序一样,性能仅与您的实施一样好。所以这里有一些关于大型数据集的注意事项。
去规范化,去规范化,去规范化
如果要迭代一个数据集,并且它的记录可以数以千计,则将其存储在自己的路径中。
这不利于迭代大型数据集:
/users/uid
/users/uid/profile
/users/uid/chat_messages
/users/uid/groups
/users/uid/audit_record
这对于迭代大型数据集很有用:
/user_profiles/uid
/user_chat_messages/uid
/user_groups/uid
/user_audit_records/uid
在大型数据集上避免“价值”
使用child_added
sincevalue
必须将整个记录集加载到客户端。
注意对孩子的隐藏value
操作
当您调用时child_added
,您实际上是value
在调用每个子记录。因此,如果这些孩子包含大型列表,他们将不得不加载所有数据才能返回。因此,上面的 DENORMALIZE 部分。