web-dev-qa-db-ja.com

SQL対noSQL(速度)

人々がSQLとnoSQLを比較し、それぞれの長所と短所を結論づけているとき、私は誰も話を聞いたことがないのが速度です。

一般に、SQLクエリを実行しない高速 noSQLクエリを実行するよりも

つまり、knowデータベースの構造がそうでない場合よりも常に速いので、何かを見つけることができるはずだからです。

しかし、人々は決してこれに言及しないようですので、私の結論が正しいか間違っているかを知りたいです。

63
janko-m

NoSQLシステムの定義は非常に広範なものです。SQLを使用しないデータベースはRDBMSではありません。したがって、あなたの質問への答えは、要するに「それは依存する」です。

一部のnoSQLシステムは基本的に、永続的なキー/値ストレージです( Project Voldemort など)。クエリが「特定のキーの値を検索する」タイプの場合、そのようなシステムは(または少なくとも) RDBMS。これは、必要な機能セットがはるかに小さいためです。

NoSQLシステムのもう1つの一般的なタイプは、ドキュメントデータベース( CouchDB など)です。これらのデータベースには、事前定義されたデータ構造はありません。それらの速度の利点は、非正規化と、実行するクエリに合わせたデータレイアウトの作成に大きく依存しています。たとえば、ブログの場合、コメントとともにブログ投稿をドキュメントに保存できます。これにより、結合と検索の必要性が減り、クエリが高速になりますが、クエリに関する柔軟性が低下する可能性もあります。

48
Carsten

NoSQLを使用する傾向のある人は、ユースケースに適合するため、特に使用します。通常のRDBMSテーブルの関係と制約、およびデータのACID性から離婚しているため、非常に簡単に実行できます。

ユーザーがサイト上で非常に限られたものしか実行しないため、NoSQLを使用するTwitterを検討してください。また、(1)誰もあなたのツイートを変更できず、(2)通常複数のデバイスから同時にツイートすることはないため、同時実行性は存在しないと見なすことができます。

72
RichardTheKiwi

アインシュタインが言うように、速度は相対的です。

マスター/詳細のシンプルなアプリケーション(ショッピングカートなど)を保存する必要がある場合、SQLアプリケーションでいくつかのInsertステートメントを実行する必要があります。また、購入を取得するクエリを実行すると、情報のデータセットを取得し、 NoSQLを使用していて、それをうまく使用している場合、1つの注文のすべてのデータが1つの単純な「レコード」に格納されます(djondbのようなNoSQLデータベースの用語を使用する場合のドキュメント)。

したがって、アプリケーションのパフォーマンスは、注文を保存するために複数の挿入を行う必要があり、データベースに1つの単純な挿入のみが必要な場合、単一の要件を達成するために必要なことの数によって測定できると本当に思いますdjondbのように、NoSQLの世界では、データベースレイヤーへの呼び出しが10倍少なくなっているだけで、パフォーマンスは10倍速くなります。

私のポイントを説明するために、NoSQLとSQLデータモデルアプローチの違いについて先ほど書いた例をリンクさせてください: http://djondb.com/blog/?p=4 、私はそれが自己参照ですが、基本的にこの質問に対処するために書きましたが、これはRDBMSの人が持つことができる最も難しい質問であり、NoSQLがSQLの世界とどう違うのか、いつでもパフォーマンスが向上するのかを説明するのに常に良い方法です「nasa」テクノロジーを使用しているからではなく、NoSQLを使用すると開発者の作業量が減り、より多くのコードが得られ、パフォーマンスが向上するからです。

7
Cross

答えは次のとおりです。一般的に、NoSQL DATABASES(「クエリ」なし)の目的はスケーラビリティです。 RDBMSには通常、従来の手段(レプリケーション、クラスタリング、パーティション分割)でこれ以上スケーリングできなかったある時点(数百万と数百万の行について話している)でいくつかの厳しい制限があり、ニーズが増え続けるため、さらに何かが必要になります。または、なんとか拡張できたとしても、全体的なセットアップは非常に複雑です。または、読み取りをスケーリングできますが、書き込みはできません。

また、クエリは、サーバーの特定の実装、実行しているクエリの種類、テーブルの列などに依存します。クエリはRDBMSの一部にすぎないことに注意してください。

2
Diego

何のために速く?データ更新?挿入物?単一行のクエリ?複雑なクエリ?述べられている質問は実際には無意味です。あなたがしていることに応じて、どんな技術でも最適かもしれません。

要するに、いいえ、NoSQLはSQLよりも高速ではなく、SQLもNoSQLよりも高速ではありません。これらはそれぞれ、異なる作業に適した異なるテクノロジーです。

あなたのような質問は一般的ですが、1つの正しい答えがあると単純に仮定します。大工にハンマーがドリルやのこぎりよりも優れているかどうかを尋ねることもできます。これらはすべてツールであり、設計された目的に役立ちます。どちらか一方のみを使用することは意味がありません。

1
Danish Shaikh