1

私は現在、友人の会社の人事 Web アプリを開発していますが、リレーショナル データベースと NoSQL データベースのどちらを選択するか、あるいはハイブリッド データベースを選択するかをまだ決めていません。私は、これらの NoSQL データベースの使用例に非常に興味をそそられました。それが、このプロジェクトで NoSQL データベースを使用するという考えを楽しませた理由です。

データベース内のリレーションのサンプル シナリオ:

従業員には次のものが多数あります (ゼロまたは多数の場合があります)。

  • 学歴記録
  • トレーニングと認定の記録
  • 職務経歴書
  • ボランティア記録
  • 組織およびその他の情報レコード

また、キャリアパスの決定や従業員の後継者計画の作成など、アプリの意思決定支援の側面にも多くの作業が行われます。

NoSQL ルートに進むことは実現可能でしょうか? リレーションシップに基づいて、データベースには従業員テーブルを中心に多くの 1 対多のリレーションシップがあります。RDBMS ではなく NoSQL を選択すると、クエリとパフォーマンスの点でメリットがありますか? MongoDB が私の好みの選択でした (これは、私が読んだ唯一の NoSQL データベースだからです)。

また、従業員の写真やスキャンした文書、証明書の写真はどのように処理すればよいですか? 前回、画像を BLOB としてデータベースに保存するアプリに MySQL を使用しましたが、データのクエリとルックアップ中の応答が遅くなりました。

4

1 に答える 1

2

リレーショナル データベースと NoSQL データベースのどちらを使用するかの決定は、多くの要因に大きく左右されます。

  • 保存する必要があるデータをモデル化する方法。
  • データの予想されるアクセス パターンはどのようなものか
  • スケーラビリティの要件
  • データの整合性に関する要件

通常、次の場合は NoSQL が適しています。

  • スキーマレスまたは動的データ構造。
  • いくつかのインデックスを使用する以外にデータにアクセスする必要はありません (つまり、データへのアクセス方法にあまり柔軟性は必要ありません)。
  • 水平方向にスケーリングする必要がある (リレーショナル DB では従来より難しいこと)
  • トランザクションの一貫性は必要ないかもしれませんが、最終的な読み取りの一貫性で問題ない可能性があります (選択した NoSQL システムによって異なります)。

あなたがリストした使用法は、典型的なリレーショナル DB ベースのアプリケーションで見られるものとより一致しているように思えます。これは、リレーショナル DB のみを使用する必要があることを示唆しているわけではありません。高いスケーラビリティを実現する必要がある十分に複雑な相互関連サービスのセットには、リレーショナル DB、NoSQL、インメモリ キャッシング、永続的なフラット ファイル ストレージなど、幅広いデータ ストレージ メカニズムが必要になる可能性があると思います。必要に応じてこれらを組み込むことを検討してください。

画像の保存に関するご意見について。データベースに画像を保存することが理にかなっているケースはほとんどないことがわかりました。ほとんどの場合、画像の場所への参照 (ファイルパス、URL など) を保存する方法が推奨されます。

于 2013-07-03T21:49:33.117 に答える