29

我正在为一个可能有相当多的密钥(可能是数百万)的项目测试 firebase。

我已经测试了使用 node 加载几 10k 的记录,并且加载性能看起来不错。但是,如果我展开我的根节点,“FORGE”Web UI 会变得异常缓慢并呈现每条记录。

Firebase 不是为这种数据量而设计的,还是我做错了什么?

4

1 回答 1

76

这只是 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_addedsincevalue必须将整个记录集加载到客户端。

注意对孩子的隐藏value操作

当您调用时child_added,您实际上是value在调用每个子记录。因此,如果这些孩子包含大型列表,他们将不得不加载所有数据才能返回。因此,上面的 DENORMALIZE 部分。

于 2013-04-26T15:58:23.073 回答