我正在为可能有大量密钥(可能有数百万个)的项目测试Firebase。
我已经测试过使用node加载几万条记录,并且加载性能看起来不错。但是,如果我扩展根节点,“FORGE” Web UI将变得异常缓慢,并呈现每条记录。
Firebase不是针对此数据量设计的,还是我做错了什么?
最佳答案
这只是Forge UI的局限性。它仍然很初级。
Firebase中的实时功能不仅适用于大型数据集,而且还设计用于大型数据集。实时记录流的事实对此很完美。
与任何大数据应用程序一样,性能仅与您的实现一样好。因此,在使用大型数据集时要牢记一些陷阱。
DENORMALIZE,DENORMALIZE,DENORMALIZE
如果将迭代一个数据集,并且其记录可以计数成千上万,则将其存储在其自己的路径中。
这不利于迭代大数据集:
/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
,因为value
必须将整个记录集加载到客户端。监视子代上的隐藏
value
操作调用
child_added
时,实际上是在每个子记录上调用value
。因此,如果这些子项包含大列表,则它们将必须加载所有数据以返回。因此,上面的DENORMALIZE部分。