NoSQL ユースケース シナリオまたは NoSQL を使用するタイミング [closed] 質問する

NoSQL ユースケース シナリオまたは NoSQL を使用するタイミング [closed] 質問する

これだけ大騒ぎになっているため、これをいつ使用すべきかに関する信頼できる情報を見つけるのは非常に難しいようです。そこで、次の質問をします。これらが本当に愚かな質問であれば、あらかじめお詫びします。

  1. ユーザーデータには NoSQL を使用する必要がありますか? 例: プロファイル、ユーザー名 + パスワードなど。
  2. 重要なコンテンツには NoSQL を使用する必要がありますか? 例: 記事、ブログ投稿、製品在庫など。

ないと思いますか? また、NoSQL は、データを失っても問題ない、すぐにアクセスできるものだけを対象としているように感じます。 しかし、NoSQL アプリには冗長性が組み込まれているため、データが失われることはないとも読みました。

また、上記の 2 つの例が適切でないとしたら、NoSQL を使用する具体的なビジネス ユース ケースを教えていただけますか? 一般的な説明はたくさん見かけますが、実際の例はあまり見かけません。思いつくのは、ユーザー間のメッセージングと分析だけです。

ベストアンサー1

それは本当に「状況による」というタイプの質問です。一般的なポイントをいくつか挙げます。

  • NoSQL は、通常、非構造化/「スキーマレス」データに適しています。通常、事前にスキーマを明示的に定義する必要がなく、特別な手続きなしで新しいフィールドを追加できます。
  • NoSQL では、RDBMS の世界では JOIN がサポートされていないため、通常は非正規化スキーマが優先されます。そのため、通常は、データの表現はフラット化され、非正規化されます。
  • NoSQL を使用すると、データが失われる可能性があるというわけではありません。DB ごとに戦略が異なります。たとえば、MongoDB では、基本的にパフォーマンスとデータ損失の可能性をトレードオフするレベルを選択できます。つまり、最高のパフォーマンス = データ損失の範囲が広くなるということです。
  • NoSQL ソリューションをスケールアウトするのは、多くの場合非常に簡単です。データをレプリケートするノードを追加することは、a) スケーラビリティの向上、b) 1 つのノードがダウンした場合のデータ損失に対する保護の強化を実現する 1 つの方法です。ただし、これも NoSQL DB/構成によって異なります。NoSQL は、必ずしもあなたが推測するような「データ損失」を意味するわけではありません。
  • 私の意見では、複雑で動的なクエリやレポートは RDBMS から提供するのが最適です。多くの場合、NoSQL DB のクエリ機能は制限されています。
  • どちらか一方を選択する必要はありません。私の経験では、特定のユースケースでは RDBMS と NoSQL を組み合わせて使用​​しています。
  • NoSQL DB には、複数の「テーブル」にわたってアトミック操作を実行する機能が欠けていることがよくあります。

さまざまな種類の NoSQL ストアがどのようなものか、また、それらがどのようにスケーラビリティやデータ セキュリティなどを提供しているかを調べて理解する必要があります。実際には、それらはすべて異なり、異なる方法で対処するため、一律に答えることは困難です。

MongoDbの例については、ユースケースMongoDb の「適した」使用法と「あまり適していない」使用法として提案されているものを確認します。

おすすめ記事