我在为Firebase构建数据时遇到了一些困难。我有用途和房间。每个用户可以加入多个房间,每个房间可以有多个用户。
这是我现在的设置:
我将所有房间ID保存在链接设备(room_info)。所有链接的设备都在密钥下 - >在房间孩子的device_info。我在那里保存设备名称以便快速查找。
我使用此网页来验证我的想法: https://www.firebase.com/docs/web/guide/structuring-data.html
有什么可以做得更好吗?
我想保存设备状态(如果设备在线)。我想在房间钥匙下创建一个device_state孩子。我想保存在线的所有设备ID。并在离线时删除它们。这是一个好方法吗?
答案 0 :(得分:3)
您需要知道构建Firebase数据库没有完美的解决方案。最佳解决方案是满足您需求的解决方案,使您的工作更轻松。考虑到一切都是为了观点,我建议你记住一些事情。
深度不是影响技术水平速度的因素。 Firebase可以在级别30上快速查找级别为30的节点。性能的快速主要影响因素是您的应用读取/写入size of the data
以及available bandwidth
。
Denormalization是Firebase中的常见做法。
如果我们谈论可伸缩性,我们还需要记住,firebase中的一个重要规则是尽可能地使数据变得扁平。请参阅以下帖子Structuring your Firebase Data correctly for a Complex App,以便更好地理解。
但是,根据您的使用情况,保持数据平稳通常会更好。因此,如果您不需要,请不要过度复杂化您的结构。不要仅仅为了使数据库非规范化而使用非规范化。
关于您的实际Firebase数据库结构,如果您可以轻松查询以获取所需数据,请继续使用它。如果您需要更多信息,我建议您访问上面的链接。
如果您有SQL背景,我还建议您查看本教程The Firebase Database For SQL Developers。
关于你的上一个问题,是的,这是一个非常好的方法。
希望它有所帮助。