3

免責事項:この質問がserverfault.comに適しているかどうかをお知らせください


特に音楽に関する情報を保存したい:

  • ジャンル
  • アーティスト
  • アルバム

この情報はWebアプリケーションで使用され、アルバムに関連付けられているすべての曲、アーティストに関連付けられているアルバム、およびジャンルに関連付けられているアーティストを表示できるようにしたいと思います。

現在MySQLを使用していますが、切り替える前に知りたいことがあります。

  1. 水平方向のスケーリングはどのくらい簡単ですか?
  2. SQLベースのソリューションよりも管理が簡単ですか?
  3. 保存したい上記のデータは、スキーマフリーで実行するには難しすぎるでしょうか?
  4. アソシエーションを考えるとき、私はすぐにRDBMSを思います。データはCouchDBのようなものに保存できますが、それでも上記のような何らかの関連付けがありますか?
  5. 私のWebアプリケーションにはレプリケーションが必要ですが、CouchDBまたは他のユーザーはこれをどの程度うまく処理できますか?
4

2 に答える 2

3

あなたのデータはドキュメント指向データベースにとって理想的なようです。
ドキュメントの例:
{
"type":"Album",
"artist":"ArtistName",
"album_name":"AlbumName",
"songs" : [
{"title":"SongTitle","duration":4.5}
],
"genres":["rock","indie"]
}

また、レプリケーションはcouchDBの最も優れた機能の1つです(http://blog.couch.io/post/468392274/whats-new-in-apache-couchdb-0-11-part-three-new
Riakで。

于 2010-03-24T09:36:02.723 に答える
2

この種の情報は、ドキュメント データベースに最適です。多くの現実世界のデータと同様に、それは本質的にリレーショナルではないため、それをリレーショナル スキーマに押し込むと、(ORM を使用した場合でも - 私は経験から話します) 頭痛の種になります。Ubuntu はすでに CouchDB を使用して、音楽のメタデータやその他のものをOne 製品に保存しています。

残りの質問を 1 つずつ取り上げます。

  1. 水平方向のスケーリングは、 RDBMSよりもはるかに簡単です。これは、Facebook、Digg、LinkedIn などの大規模サイトがスキーマレス データベースを使用している、または積極的に調査している多くの理由の 1 つです。たとえば、シャーディング (システム内のさまざまなノードにデータを分割すること) は、結果整合性と呼ばれる概念のおかげでうまく機能します。つまり、しばらくの間、ノード間でデータの一貫性が失われる可能性がありますが、最終的には一貫性のある状態に解決されます。
  2. 「管理」が何を意味するかによって異なります... インストールは通常、迅速かつ簡単に完了します。構成して保護するユーザー アカウントはありません (これは通常、アプリケーションのビジネス ロジック層で行われます)。ドキュメント DB をリアルタイムで操作するのは興味深いことです。たとえば、CouchDB にはアドホックなクエリはありません。Futon UI を使用するか、HTTP リクエスト経由で通信する必要があります。ただし、MongoDB はアドホック クエリをサポートしています。
  3. そうは思わないはずです。Bastien の回答は、一部のデータをシリアル化する JSON ドキュメントの良い例です。スキーマレス DB の優れた点は、フィールドが 1 つのドキュメントから欠落していて別のドキュメントに存在する可能性があること、またはドキュメントが互いに完全に異なる可能性があることです。これにより、多くのさまざまな RDBMS のnull価値に関連する問題の多くが取り除かれます。
  4. はい; 関連付けはネストされたドキュメントとして保存され、アプリケーションでオブジェクト参照、コレクションなどとして解析されます。Bastien の回答では、「曲」キーは曲ドキュメントの配列を識別します。
  5. これは、水平スケーリングに関する最初の質問と非常によく似ています (水平スケーリングとレプリケーションは絡み合っています)。Bastien が言及した CouchIO のブログ投稿にあるように、「レプリケーションは最初から CouchDB に組み込まれています。」私の理解では、すべてのドキュメント データベースはレプリケーションを適切に処理し、RDBMS でセットアップするよりも簡単に行うことができます。

曲ファイル自体をメタデータと一緒に保存することを決定した場合は、CouchDB で曲ファイルを添付ファイルとしてドキュメントに提供することで、それを行うこともできます。さらに、スキーマがないため、これを行った結果としてスキーマの不整合が発生することはありません!

ここで多くの間違いを犯していないことを願っています。私は自分でDBを文書化するのは初めてです。

于 2010-03-24T11:07:47.483 に答える