【问题标题】:Best way of storing chats in JSON tree databse?在 JSON 树数据库中存储聊天的最佳方式?
【发布时间】:2016-07-21 02:46:15
【问题描述】:

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

我的数据库有这样的结构:

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

我正在尝试找出将聊天存储为该数据库一部分的最佳方式。我现在倾向于的选项只是在用户目录的两个部分中保留两个用户聊天的副本,如下所示:

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

这将使每次发送消息时我都必须更新两个对象,每个用户部分中都有一个。请注意,由于树被格式化为“键/值”对,因此在每个用户的 CHAT 部分中,键将是其他用户的名称,而值将是发送的消息列表。

这是组织这样一个数据库的好方法吗?游戏很小,所以我预计流量不会很大。

【问题讨论】:

    标签: json firebase firebase-realtime-database


    【解决方案1】:

    对于 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

    【讨论】:

    • 我会采纳您的建议,并将聊天记录到数据库的另一部分。您提供的链接提供了一种方法,只需在每次发送消息时更新 1 个对象,所以我会尝试。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2011-10-27
    • 2012-10-25
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 2018-03-16
    • 1970-01-01
    • 2017-01-20
    相关资源
    最近更新 更多