構造化文書データベースを扱うプロジェクトを行っています。カテゴリのツリー (最大 1000 カテゴリ、各レベルで最大 50 カテゴリ) があり、各カテゴリには数千 (たとえば、最大 10000) の構造化ドキュメントが含まれています。各ドキュメントは、何らかの構造化された形式の数キロバイトのデータです (私は YAML を好みますが、JSON や XML でもかまいません)。
このシステムのユーザーは、いくつかのタイプの操作を行います。
- これらのドキュメントを ID で取得する
- ドキュメント内の構造化属性のいくつかによるドキュメントの検索
- ドキュメントの編集 (つまり、追加/削除/名前変更/マージ); 各編集操作は、コメント付きのトランザクションとして記録する必要があります
- 特定のドキュメントの記録された変更の履歴を表示する (誰が、いつ、なぜドキュメントを変更したかを表示する、以前のバージョンを取得する、要求があればこのバージョンに戻すなど)
もちろん、従来のソリューションでは、この問題に対して何らかのドキュメント データベース (CouchDB や Mongo など) を使用git
していました。このアプリケーションのデータベース バックエンド?
一見すると、次のように解決できます。
- カテゴリ = ディレクトリ、ドキュメント = ファイル
- ID によるドキュメントの取得 => ディレクトリの変更 + 作業コピー内のファイルの読み取り
- 編集コメントでドキュメントを編集 => さまざまなユーザーによるコミット + コミット メッセージの保存
- history => 通常の git ログと古いトランザクションの取得
- 検索 => 少しトリッキーな部分です。検索を許可する列のインデックスを使用して、カテゴリをリレーショナル データベースに定期的にエクスポートする必要があると思います。
このソリューションに他によくある落とし穴はありますか? そのようなバックエンドをすでに実装しようとした人はいますか (つまり、一般的なフレームワーク - RoR、node.js、Django、CakePHP など)? このソリューションは、パフォーマンスや信頼性に何らかの影響を与える可能性がありますか? つまり、git が従来のデータベース ソリューションよりもはるかに遅くなることが証明されているか、またはスケーラビリティ/信頼性の落とし穴があることが証明されていますか? 互いのリポジトリをプッシュ/プルするこのようなサーバーのクラスターは、かなり堅牢で信頼性が高いはずです。
基本的に、この解決策が機能するかどうか、また機能する、または機能しない理由を教えてください。