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