2011-02-09 5 views
3

私はCouchDbを試してみたいと思います。PhotoAlbumの小さなアプリケーションを開発して、さまざまなユーザーが多数の写真を含む多くのアルバムを持つことができます。添付ファイル付きの写真が含まれているアルバムの配列を含む、各ユーザーのためのドキュメントを作成すればいいのですか?couchdbで簡単なフォトアルバムのデータベースデザインを構成する方法は?

{ 
    user: "Dominik", 
    albums: [ 
     { name: "USA Trip", photos: 
      [ 
       { title: "Golden Gate Bridge", _attachments: [ the photo ] }, 
       { another photo } 
      ] 
     }, 
     { ...} ] 
} 

これを行うには別の方法がありますか?

また、ユーザー、アルバム、写真をそれぞれ別のドキュメントに保存する方が良いですか?これはmysqlのように外部キーを必要とするでしょうか?

{ type: "user", name: "Dominik", albums: [ "a1", "a2", "a3" ] } 
{ type: "album", _id: "a1", title: "USA Trip", photos: [ "p1", "p2" ... ] } 
{ type: "photo", _id: "p1", _attachments: {...}, title: "Golden Gate Bridge" } 

...

や周り?:

{ type: "user", _id: "u1", name: "Dominik" } 
{ type: "album", _id: "a1", title: "USA Trip", user: "u1" } 
{ type: "photo", _id: "p1", _attachments: {...}, title: "Golden Gate Bridge", album: "a1" } 

答えて

1

他の方法で私の視点から、それはそれの小さな部分にデータを分割する方が良いでしょう。しかし、これはあなたの選択です。私はmemcachedサーバの制限が "key-value-instance"(memcachedのCouchDBドキュメントをキャッシュしています)あたり1Mbになっていたため、1つのドキュメントにデータを保存できませんでした。

もちろん、1つのドキュメントにデータを保存する利点があります。私は他の人が自分の経験について話してくれることを願っています。

+1

データの一部を別々に保存することについてもう一つ忘れています。アルバムの写真のタイトルを変更すると、文書全体が更新されます(そしてETagも)。これは良くないことがよくあります。 –

1

1999です。さらに二つのマイナーポイント:

  1. 覚えておいてください、のApache CouchDBのはだけで、文書内のアトミックトランザクション —をサポートしています。単一のアトミック操作でドキュメント内のすべてを変更できます。
  2. CouchDBセキュリティフレームワークでは、セキュリティポリシーは1つのドキュメントにまとめて適用されます。 validate_doc_update関数は、ユーザーが何を行う可能性があるかを決定する必要があるときに、外国の文書を見ることができません。 (アカウントや認証にCouchDBを使用していない場合は、これは関係ありません)
+0

検証は良い点です、私はこれを使用する必要があります、THX –

関連する問題