2017-07-20 18 views
1

最近、nosqlデータベースについて多くのことを読んでいます。その経験則は、私たちの見解に基づいてデータを構造化することです(もちろん、ユースケースに依存します)。Firebaseデータベース構造 - 非正規化データ?

ここでソーシャルアプリがあり、ユーザーにプロフィールがありますが、投稿を作成してデータベースに保存する必要があるとします。

だから、私はいくつかの開発者がそうのようなことを行うことを選択を参照してください。

Posts 
-----UserID 
-----------PostID 
-----------------username: John 
-----------------profileImage: https://... 
-----------------posted_photo: https://... 

これは完全にビューの構造基盤に適合します。私たちは投稿と私たちのuserIDに行き、私たちの見解が必要とするすべてのデータを得ることができました。今私の質問は、ユーザーが100Kの投稿をしたときにどうなり、プロフィール写真を変更するかなどを決めることです。今までの彼の投稿には彼の古い写真が含まれていましたので、100Kの投稿(または彼の投稿全般)を繰り返して写真を更新する方法を書かなければなりません。 2時間後、彼は「ナー、私はこの写真が気に入らない、私はそれを元に戻す」と決め、さらに100Kの質問をしなければならない。

どのように(非正規化されたデータ)ですか?確かに、それは簡単ですが、フラットですが、1つのプロフィール写真を変更するためにはばかげた量のクエリを作成する必要があります。これを実際に処理する方法は何ですか?

答えて

3

私はこれをユーザーのデータを場所に格納し、userIDをpost属性として設定しました。

posts: 
    userID: 
     postID: 
      userID: 'user1', 
      attachedImageURL: 'http:..', 
      message: 'hey', 
      reblogID: 'post4', 
      type: 'audio|poll|quote' 
users: 
    user1: 
     name: 'john', 
     profileImage: 'http..' 

これは、ユーザーのプロファイルデータを取得するためにFirebaseにもう一度問い合わせる必要がありますが、これを解決する良い方法です。実際にどのようにそれらのデータを使用するかによって異なります。

+0

これは私がこれを行うことを考えていたのとまったく同じです。さて、あなたのために質問があります。 1種類以上の投稿がある場合は、どのように保存しますか?たとえば、画像投稿、動画投稿、テキスト投稿、投票ポストなどを持つことができます。そのすべてにはコメント、好きなブログ、ブログがあります。 – Dani

+0

あなたはただのデータをポストに保存することができます:)私は自分の答えを更新しました –

+0

あなたはそれを誤解しました:)私の主な関心事は、私は9種類の投稿(ビデオ、画像、引用符など)と私はそれを構造化する方法を知っていないので、あまりにも入れ子になる...ポスト - > AudioPosts - > UserID - > PostID(...投稿情報...) – Dani

関連する問題