在JSON树数据库中存储聊天的最佳方法是什么?

时间:2016-07-20 17:37:24

标签: json firebase firebase-realtime-database

我正在为我玩的在线浏览器游戏制作朋友列表镀铬扩展程序。一个特点是朋友可以互相聊天。我正在使用的数据库名为firebase,它以JSON树格式存储数据。

我的数据库具有以下结构:

   Users
     |
     |_USER1
     |     |
     |     |__FRIENDS
     |     
     |_USER2
           |
           |__FRIENDS

我正在试图弄清楚将聊天存储为此数据库的最佳方式。我现在倾向于的选项只会在Users目录的两个部分中保留两个用户聊天的副本,如下所示:

Users
     |
     |_USER1
     |     |
     |     |__FRIENDS
     |     |
     |     |__CHATS
     |           |
     |           |__chat w/USER2
     |     
     |_USER2
           |
           |__FRIENDS
           |
           |__CHATS
                 |
                 |__chat w/USER1  

这样就可以在每条消息上发送,我必须更新两个对象,每个用户部分一个。请注意,由于树被格式化为“键/值”对,因此在每个用户的CHAT部分中,键将是另一个用户的名称,而值将是发送的消息列表。

这是组织这样一个数据库的好方法吗?游戏非常小,所以我不期待大量的流量。

1 个答案:

答案 0 :(得分:2)

对于Firebase数据库(以及大多数NoSQL数据存储),它通常最适合展平您的数据。

Users
     |
     |_USER1
     |     |
     |     |__FRIENDS
     |     
     |_USER2
           |
           |__FRIENDS
UserChats
     |
     |_USER1
     |     |
     |     |__chat w/USER2
     |     
     |_USER2
           |
           |__chat w/USER1  

这样您就可以查看用户的好友列表,而无需加载他们的聊天列表。

另请参阅此答案,了解构建1:1聊天室标识符的便捷方案:Best way to manage Chat channels in Firebase