1. ホーム

[解決済み】NoSQLのユースケースシナリオ、またはNoSQLを使用するWHEN【クローズド

2022-04-03 01:45:37

質問

これだけ大々的に宣伝しておきながら、これをいつ使えばいいのか、信頼できる情報を見つけるのは本当に難しいようです。そこで、以下のような質問を投げかけてみたのですが、これらが本当に馬鹿げた質問であった場合は、あらかじめご了承ください。

  1. ユーザーデータにはNoSQLを使うべきですか?例:プロフィール、ユーザー名+パスワードなど。
  2. 重要なコンテンツにはNoSQLを使うべきですか?例:記事、ブログ記事、製品在庫など。

ダメなんでしょう?NoSQLは、データを失っても大丈夫な、素早くアクセスできるものだけのような気がしますし。でも、NoSQLのアプリはデータを失わないように冗長性を内蔵しているとも書いてありましたよ?

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

どのように解決するのですか?

それはまさに、「人それぞれ」なのです。いくつか 一般的 点です。

  • NoSQLは通常、非構造化/スキーマレス/quot;データに向いています。
  • NoSQLは、RDBMSのようにJOINをサポートしないため、通常、非正規化スキーマが好まれます。そのため、通常はデータを平坦化し、非正規化した表現になります。
  • NoSQLを使っても、データを失う可能性があるわけではありません。例えばMongoDBでは、パフォーマンスとデータ損失の可能性をどのレベルでトレードオフするか、基本的に選択することができます。
  • NoSQLソリューションのスケールアウトは非常に簡単なことが多い。データを複製するノードを増やすことは、1)拡張性を高め、2)1つのノードがダウンした場合のデータ損失に対する保護を強化するための1つの方法です。ただし、これもNoSQLのDBや構成に依存します。NoSQLは、あなたが推測するように、必ずしもデータ損失を意味するものではありません。
  • 複雑で動的なクエリやレポーティングは、RDBMSで行うのがベストだと思います。NoSQL DBのクエリ機能は制限されていることが多いのです。
  • 1か2かの選択である必要はないのです。私の経験では、特定のユースケースでは、RDBMSとNoSQLを併用しています。
  • NoSQL DBは、複数のテーブルをまたいでアトミックな操作を行う機能がないことが多いです。

さまざまな種類のNoSQLストアがあり、それらがどのようにスケーラビリティやデータ・セキュリティなどを提供しているのか、よく見て理解する必要があります。それぞれ特徴があり、取り組み方も異なるので、一概に答えられるものではありません。

MongoDbの例としては、MongoDbのウェブサイトをご覧ください。 使用例 MongoDbの用途として、「適しているもの」と「あまり適していないもの」があります。