2016-07-20 13 views
2

私はプレイしているオンラインブラウザゲーム用の友人リストのクロム拡張機能を作成しています。 1つの特徴は、お友達同士が互いにチャットできることです。私が使用しているデータベースはfirebaseと呼ばれ、そのデータはJSONツリー形式で保存されます。私は、このデータベースの一部としてチャットを保存するための最良の方法だろうかを把握しようとしているJSONツリーデータベースにチャットを保存する最も良い方法は?

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

私のデータベースには、この構造を有しています。私は今に傾いてるのオプションは、ちょうどこのように見て、ユーザーディレクトリのそのセクションの両方で二人のユーザチャットのコピーを保持します:

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

I「が送信する各メッセージのように、これはそれを作るだろう2つのオブジェクト(各ユーザーセクションに1つずつ)を更新する必要があります。ツリーは「キー/値」の組としてフォーマットされているので、各ユーザーのCHATセクションでキーは他のユーザーの名前になり、値は送信されるメッセージのリストになります。

このようなデータベースを整理するうまい方法ですか?ゲームはかなり小さいので、私は巨大なトラフィックを期待していません。

答えて

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

+0

私はあなたの提案を取り、データベースの別の部分にチャットを分離します。提供されたリンクは、各メッセージの送信時にオブジェクトを1つだけ更新する必要があるため、これを試してみます。ありがとう。 – MarksCode

関連する問題