新しいプロジェクトに取り組み始めました。このプロジェクトには、潜在的に数千のドキュメントを追跡することが含まれます。各ドキュメントは、少なくとも、タイトル、作成者、説明などのフィールドを持つテーブル (プライマリ ドキュメント テーブル) の行です。
ただし、各ドキュメントは、ファイル システム内でいくつかの異なる形式で表現されているか、少なくとも表現できます。
例えば:
(1) すべてのドキュメントの PDF バージョンが存在するか、少なくとも存在する必要があります。(2) PDF が存在する場合、PDF の各ページが画像ファイルに抽出されます。(3) 各ドキュメントのテキストが抽出されます。 PDF から、または他の方法で派生したもの。
したがって、システム内のすべてのドキュメントには、実際には複数の (ページ数によっては 50 以上の可能性がある) ファイルが関連付けられています。
私が最初にいたよりも簡潔にするために:
各ドキュメントには、1 つまたは複数の異なるデータ オブジェクト (pdf ファイル、jpg、テキスト) を関連付けることができます。ただし、数と種類は任意です。
当初、これらのデータ オブジェクトはサーバーに格納された単なるファイルであり、ディレクトリ構造を使用して整理されていました。例: /documents/{id}/images、/documents/{id}/pdfs など。ファイル システムを頻繁にスキャンする必要がないようにするために、このディレクトリ構造は多数のテーブルを使用して MySQL データベースで表現されました。および外部キー。ドキュメントに関するすべての情報 (ドキュメントに関連付けられているすべてのファイル) を取得するには、複雑な JOIN が必要でした。
MongoDB のような NoSQL ソリューションの方が優れているでしょうか? ドキュメントとそのデータ間の整合性をより確実にするために、最終的にすべてのファイルをデータベースに格納することに特に関心があります。