NoSQL とは何ですか、どのように機能し、どのような利点がありますか?[閉まっている]

StackOverflow https://stackoverflow.com/questions/1145726

  •  16-09-2019
  •  | 
  •  

質問

NoSQL については、DB の対話が Web の速度のボトルネックになることが多いため、最終的には SQL DB ストレージ方式に置き換わる可能性があるという話を聞いています。

そこで、いくつか質問があります。

  1. 正確には何ですか?

  2. どのように機能するのでしょうか?

  3. SQL データベースを使用するよりも優れているのはなぜですか?そしてどれくらい良くなったのでしょうか?

  4. このテクノロジーはまだ実装を始めるには新しすぎるのでしょうか、それとも検討してみる価値はありますか?

役に立ちましたか?

解決

  1. 正確には何ですか?

    一方で、 特定のシステム, 、しかし、それはまた、 さまざまな新しいデータ ストレージ バックエンド リレーショナル DB モデルに従っていないもの。

  2. どのように機能するのでしょうか?

    汎用名が付けられた各システムの動作は異なりますが、基本的な考え方は、汎用 RDBMS のすべての機能をサポートしているわけではなくても、有用な機能は十分に備えている DB モデルを使用することで、より優れたスケーラビリティとパフォーマンスを提供することです。ある意味では、かつてはトランザクションのサポートが欠けていた MySQL に似ていますが、まさに なぜなら そのうち、他の DB システムよりも優れたパフォーマンスを発揮しました。トランザクションを必要としない方法でアプリを作成できれば、それは素晴らしいことです。

  3. SQL データベースを使用するよりも優れているのはなぜですか?そしてどれくらい良くなったのでしょうか?

    サイトを大規模に拡張する必要があり、できるだけ最適化された、余裕のある最高のハードウェア上で実行される最高の RDBMS が負荷に追いつけない場合には、その方がよいでしょう。これがどれだけ優れているかは、特定の使用例によって異なります (多数の結合と多数の更新アクティビティを組み合わせると、「従来の」RDBMS では非常に困難です)。極端な場合には 1000 倍になる可能性があります。

  4. このテクノロジーはまだ実装を始めるには新しすぎるのでしょうか、それとも検討してみる価値はありますか?

    主に、何を達成しようとしているかによって異なります。確かに、十分に使える成熟したものです。しかし、実際にそこまで大規模に拡張する必要があるアプリケーションはほとんどありません。ほとんどの場合、従来の RDBMS で十分です。ただし、インターネットの使用が常にユビキタスになっているため、インターネットを使用するアプリケーションがより一般的になる可能性が非常に高いです (おそらく主流ではありませんが)。

他のヒント

NoSQL などというものは存在しません。

NoSQL はバズワードです。

何十年もの間、人々がデータベースについて話すとき、それはリレーショナル データベースを意味していました。そして、人々がリレーショナル データベースについて話しているとき、それは Edgar F.Codd の構造化クエリ言語。他の方法でデータを保存しますか?狂気!それ以外のものは単なるフラットファイルです。

しかしここ数年、人々はこの定説に疑問を抱き始めました。人々は、行と列を含むテーブルが本当にデータを表す唯一の方法なのかどうか疑問に思いました。人々は考えてコードを書き始め、データを整理する方法について多くの新しい概念を考え出しました。そして、これらの新しいデータ操作方法向けに設計された新しいデータベース システムの作成を開始しました。

これらすべてのデータベースの哲学は異なっていました。しかし、これらすべてのデータベースに共通していたのは、構造化照会言語がそれらのデータベースの使用に適さなくなっているということです。そのため、各データベースは SQL を独自のクエリ言語に置き換えました。そして、古典的なリレーショナル データベース モデルに反するすべてのデータベース テクノロジを表すラベルとして、NoSQL という用語が生まれました。

では、NoSQL データベースの共通点は何でしょうか?

実際にはそれほど多くはありません。

次のようなフレーズをよく聞きます。

  • NoSQL はスケーラブルです。
  • NoSQL はビッグデータ用です!
  • NoSQL は ACID に違反します!
  • NoSQL は輝かしいキー/値ストアです。

本当?これらのステートメントの一部は、一般に NoSQL と呼ばれる一部のデータベースでは正しいかもしれませんが、少なくとも他の 1 つではすべてが偽でもあります。実際、NoSQL データベースの唯一の共通点は、SQL を使用しないデータベースであるということです。それでおしまい。それらを定義する唯一のものは、それらを互いに区別するものです。

では、NoSQL データベースの特徴は何でしょうか?

そこで、一般に NoSQL と呼ばれるこれらのデータベースはすべて、一緒に評価するにはあまりにも異なっていることを明確にしました。特定の問題を解決するのに適しているかどうかを判断するには、それぞれを個別に評価する必要があります。しかし、どこから始めればよいのでしょうか?ありがたいことに、NoSQL データベースは、さまざまなユースケースに適した特定のカテゴリに分類できます。

ドキュメント指向

例:MongoDB、CouchDB

強み:異種データ、実用的なオブジェクト指向、アジャイル開発

それらの利点は、一貫したデータ構造を必要としないことです。これらは、要件、したがってデータベースのレイアウトが常に変化する場合、または同じに属していても見た目が大きく異なるデータセットを扱う場合に役立ちます。「キー」と「値」という 2 つの列を含むテーブルが多数ある場合は、これらを検討する価値があるかもしれません。

グラフデータベース

例:Neo4j、GiraffeDB。

強み:データマイニング

ほとんどの NoSQL データベースはデータ関係を管理するという概念を放棄していますが、これらのデータベースは、いわゆるリレーショナル データベースよりもさらにそれを取り入れています。

彼らは、他のデータとの関係によってデータを定義することに重点を置いています。他の 2 つのテーブルの主キーである主キー (おそらくそれらの間の関係を説明するデータ) を持つテーブルが多数ある場合、これらは役に立つかもしれません。

Key-Value ストア

例:Redis、Cassandra、MemcacheDB

強み:既知のキーによる値の高速検索

これらは非常に単純ですが、そのため高速で使いやすくなっています。ストアド プロシージャ、制約、トリガーなどの高度なデータベース機能が必要なく、データの高速な保存と取得だけが必要な場合には、それらが最適です。

残念ながら、彼らはあなたが探しているものを正確に知っていると想定しています。User157641 のプロフィールが必要ですか?問題ありません。数マイクロ秒しかかかりません。しかし、16 歳から 24 歳までで、好物が「ワッフル」で、過去 24 時間以内にログインしたすべてのユーザーの名前が必要な場合はどうすればよいでしょうか?不運だ。特定の結果に対する明確で一意のキーがない場合、K-V ストアからそのキーを簡単に取得することはできません。

SQLは時代遅れなのでしょうか?

NoSQL 支持者の中には、自分たちのお気に入りの NoSQL データベースが新しいやり方であり、SQL は過去のものだと主張する人もいます。

彼らは正しいでしょうか?

いいえ、もちろんそうではありません。SQL には適していない問題もありますが、それでも長所はあります。多くのデータ モデルは、相互に参照するテーブルのコレクションとして単純に表すのが最適です。特に、ほとんどのデータベース プログラマーはデータをリレーショナルな方法で考えるように何十年も訓練されており、その考え方をそのために作られていない新しいテクノロジーに押し付けようとしても、うまくいくことはほとんどありません。

NoSQL データベースは SQL の代替品ではなく、代替品です。

さまざまな NoSQL データベースのほとんどのソフトウェア エコシステムはまだ成熟していません。進歩はありますが、一般的な SQL データベースで利用できるものと同じくらい成熟していて強力な補助ツールはまだありません。

また、SQL に関するノウハウは他にもたくさんあります。何世代にもわたるコンピューター科学者は、リレーショナル データベースに焦点を当てた研究に数十年のキャリアを費やしてきました。それは次のことを示しています。SQL データベースとリレーショナル データ モデリングについて書かれた文献は、実践的なものと理論的なものの両方で、複数の図書館が本でいっぱいになる可能性があります。データ用のリレーショナル データベースを構築する方法は、よく研究されているトピックであるため、一般に受け入れられている定説のベスト プラクティスがない特殊なケースを見つけるのは困難です。

一方、ほとんどの NoSQL データベースはまだ初期段階にあります。私たちはそれらを使用する最良の方法をまだ模索中です。

誰かが私の前のポストがオフトピック、私はNoSQLの:-)補償していませんしようとするでしょうし、そしてより多くの主流のSQLデータベースに代わることを意図し、決してなかったが、言葉のカップルがしていることを言ったので、右の視点で物事を得るため。

NoSQLの哲学には、おそらく商業や移植性の理由から、SQLエンジンは、UNIXオペレーティングシステムおよびその誘導体の驚異的な力を無視する傾向があり、配慮があります。

ファイルシステムベースのデータベースを使用すると、着実にムーアの法則に従って今、長年にわたって増加している基礎となるオペレーティングシステム、の増え続ける能力とパワーの利点をすぐに活用することができます。このアプローチでは、多くのオペレーティング・システムのコマンドも、自動的に「データベース・オペレータ」(「LS」「ソート」、「検索」や他の無数のUNIXシェルユーティリティを考える)になります。

このことを念頭にある、と創造のビット、あなたは確かにNoSQLの背後にある全体のポイントである、少なくとも特定の使用パターンのために、多くの一般的なSQLエンジンの限界を克服することができ、ファイルシステムベースのデータベースを考案することができます哲学、私はそれを見る方法。

私は、Webサイトの何百もを実行し、それらはすべて多かれ少なかれのNoSQLを使用しています。実際に、彼らは、大量のデータをホストしていないが、それらのいくつかはやっても、私はおそらく任意のボトルネックを克服するためのNoSQLの創造を使用してファイルシステムを考えることができます。おそらく伝統的なSQL「刑務所」と、より困難である何か。私はあなたが私が何を意味するか理解するために、「UNIX」、「マニス」と「シェイファー」のためにGoogleに促すます。

私が正しくリコール場合は、

、それは必ずしもリレーショナル形式に従わないデータベースの種類を指します。文書データベースには、特定の構造を持たないデータベース、心に来て、そしてその特定のクエリ言語としてSQLを使用しないでください。

これは、データベースのパフォーマンスに依存し、関係データベースエンジンのより高度な機能を必要としないWebアプリケーションに一般的に適しています。例えば、IDインターフェースによって、簡単なクエリを提供するキー - >値ストアが低い現像剤メンテナンスコストと、対応するSQLサーバの実装より10~100倍速いかもしれません。

は一つの例は、のためにnoreferrer">紙をrel="nofollow href="http://www.vldb.org/conf/2007/papers/industrial/p1150-stonebraker.pdf"この単一スレッド処理のためにトランザクションを屠殺OLTP のタプルストア、(全く同時実行が許可されないため、無並行性の問題) 、およびメモリ内のすべてのデータを保持。同様の RDBMS の駆動方式に比べて10~100倍優れた性能を達成します。基本的に、それはから離れて動いているSQLとデータベースシステムのビューのワンサイズは、すべてのフィット "を。

実際には、NoSQLのは、キーベースのアクセス方式を使用して、大きなバイナリオブジェクト(ドキュメント、JPGのみなど)への高速アクセスをサポートするデータベースシステムです。これは、英数字の値のために十分に良いだけである従来のSQLアクセスからの出発です。内部ストレージとアクセス戦略だけでなく、表示形式の構文と制限だけでなく、伝統的なSQLを制限します。従来のリレーショナルデータベースのBLOBの実装では、あまりにもこれらの制限に苦しんでいます。

シーンの背後には、新しいdataformatsのためのOLTPやサポートのいずれかの形式をサポートするためのSQLモデルの故障の間接的な入場料です。プログラム的とquerywise標準モデルを使用して - 「サポート」だけでアクセス機能を格納しますがフルではないことを意味します。

リレーショナル愛好家にはないオンリー-SQLに絵にまだSQLを保つためにはない-SQLからのNoSQLのdefnitionを変更することが速かったです!我々は、基礎となるリレーショナルモデルのORMマッピングにほとんどのJavaプログラム、今日のリゾートを見る場合は特にこれは良いではありません。新しい概念は、皆伐定義を持っている必要があります。そうでなければ、それは、SOAのようになってしまいます。

値のペア -

のNoSQLシステムの基本は、ランダムなキーです。しかし、これは新しいものではありません。 IMSおよびIDMSなどの伝統的なデータベースシステムをサポート(任意のインデックスを使用せずに)ramdomキーをハッシュ化されなかったし、彼らはまだやります。実際、IDMSは、すでに彼らはNONSQLと呼ぶ彼らの古いネットワーク・データベースへのSQLアクセスをサポートするキーワードNONSQLを持っています。

これは、ジャグジーのようなものだ:ブランドと一般名の両方。これは、GoogleのBigTableのか、CouchDBのように大規模に(多くの場合、スパース)「データベース」を参照この場合には、単に特定の技術ではなく、技術の具体的なの種類のではありません。

NoSQLの実際ののプログラムは、バックエンドでフラットファイルを使用してawkの実装リレーショナルデータベースであるように思われます。彼らは公言ものの、「NoSQLのは、本質的に任意の制限を持っていない、と他の製品は。データフィールドサイズ、列の数、またはファイルサイズに制限はありませんたとえば、することはできませんどこ働くことができる」、私はそれがあるとは思いません将来の大規模データベース。

ジョエルが言うように、 BigTableののか<のhref = "HTTPのような大規模なスケーラブルなデータベース: //en.wikipedia.org/wiki/Hbase」のrel = "nofollowをnoreferrer"> HBaseのの、はるかに興味深いです。 GQLはBigTableのとApp Engineと関連するクエリ言語です。これは、SQLは、Googleが(参加するような)、ボトルネックを考慮した機能を回避するために微調整し、大部分です。しかし、私はこの前に「NoSQLの」と呼ば聞いていない。

のNoSQLは、データをフェッチするために、文字列ベースのSQLクエリを使用しないデータベース・システムである。

の代わりにあなたは彼らが提供するAPIを使用してクエリを構築し、例えばアマゾンDynamoDBのは、NoSQLのデータベースの良い例です。

のNoSQLデータベースは拡張性が重要である大規模なアプリケーションのために優れています。

  

のNoSQLは、非リレーショナルデータベースを意味するのでしょうか?

はい、NoSQLのは、RDBMSとOLAPは異なっています。これは、従来のリレーショナルデータベースよりも緩い一貫性モデルを使用しています。

一貫性モデルは、分散共用メモリ・システムまたは分散ファイルシステムのような分散システムで使用されます。

  

それが内部的にどのように動作する?

のNoSQLデータベースシステムは、しばしば高度に検索および操作を追加するために最適化し、多くの場合、レコード記憶超えて少し機能(例えば、キーと値の記憶)を提供しています。完全なSQLのシステムに比べて減少し、実行時の柔軟性は、特定のデータモデルのための拡張性とパフォーマンスの著しい向上により補償されます。

これは、構造化データと非構造化データ上で動作することができます。これは、テーブルの代わりに、コレクションを使用しています。

  

どのようにあなたは、このような "データベース" を照会していますか?

のNoSQL対ウォッチ SQL:のバックエンドの戦い。それはすべてを説明します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top