276

誇大宣伝されているため、これをいつ使用するかについて信頼できる情報を見つけるのは非常に難しいようです. そこで私は次の質問を投げかけます。これらが本当にばかげた質問である場合は申し訳ありません。

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

いいえと思いますか?また、NoSQL は、データが失われても構わない、すばやくアクセスできるもののためのものだと思います。しかし、データを失わないように、NoSQL アプリには冗長性が組み込まれているとも読みました。

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

4

2 に答える 2

200

それは本当に「場合による」ちょっとした質問です。いくつかの一般的なポイント:

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

さまざまなタイプの NoSQL ストアが何であるか、およびそれらがスケーラビリティ/データ セキュリティなどをどのように提供しているかを実際に見て理解する必要があります。 .

例としてMongoDbについては、ユースケースをチェックして、MongoDbの「適切な」使用法と「あまり適していない」使用法として提案されているものを確認してください。

于 2012-05-11T15:21:34.913 に答える
10

少なくともこれらのシナリオではNosqlが「より適している」と思います(より多くの補足は大歓迎です)

  1. ノードを追加するだけで水平方向に簡単にスケーリングできます。

  2. 大規模なデータ セットに対するクエリ

    毎日たくさんのつぶやきがツイッターに投稿されていると想像してみてください。RDMS では、数百万 (または数十億) の行を持つテーブルが存在する可能性があり、それらのテーブルに対して直接クエリを実行したくはありません。言及するまでもなく、ほとんどの場合、複雑なクエリにはテーブル結合も必要です。

  3. ディスク I/O のボトルネック

    Web サイトがユーザーのリアルタイム情報に基づいてさまざまなユーザーに結果を送信する必要がある場合、おそらく 1 秒あたり数万または数十万の SQL 読み取り/書き込み要求について話していることになります。その場合、ディスク I/O が深刻なボトルネックになります。

于 2013-06-17T19:57:06.310 に答える