web-dev-qa-db-ja.com

リレーショナルデータベースと非リレーショナルデータベースの違いは何ですか?

MySQL、PostgreSQL、MS SQL Serverなどのソリューションはリレーショナルデータベースシステムであり、NoSQL、MongoDBなどは非リレーショナルDBMSであることを知っています。

ただし、2つのタイプのシステムの違いは何ですか?

レイマン用語が好ましい。

ありがとう。

78
marcamillion

リレーショナルデータベースには数学的基礎(集合論、リレーショナル理論)があり、SQL == Structured Query Languageに抽出されます。

NoSQLの多くの形式(たとえば、ドキュメントベース、グラフベース、オブジェクトベース、キーバリューストアなど)は、単一の基礎となる数学理論に基づいている場合と、そうでない場合があります。 S. Lottが正しく指摘しているように、 hierarchical データストアには確かに数学的基礎があります。 グラフデータベース についても同じことが言えます。

NoSQLデータベース用のユニバーサルクエリ言語を知りません。

22
duffymo

うーん、あなたの質問が何なのかよくわかりません。

タイトルではデータベース(DB)について尋ねますが、テキストの本文ではデータベース管理システム(DBMS)について尋ねます。この2つは完全に異なり、異なる回答が必要です。

DBMSは、DBにアクセスできるツールです。

データ自体以外に、DBはそのデータがどのように構成されているかという概念です。

そのため、オブジェクト指向ではないコンパイラーでオブジェクト指向手法を使用してプログラミングできるように、またはその逆で、RDBMSを使用せずにリレーショナルデータベースをセットアップしたり、RDBMSを使用して非リレーショナルデータを保存したりできます。

リレーショナルデータベース(RDB)の意味に焦点を当て、システムが他の人に何をするかについての議論を残します。

リレーショナルデータベース(概念)は、さまざまな「テーブル」またはさまざまな種類のデータバケットからの情報をリンクできるデータ構造です。データバケットには、キーまたはインデックスと呼ばれるものが含まれている必要があります(これにより、バケット内のデータのアトミックチャンクを一意に識別できます)。他のデータバケットは、そのキーを参照して、データアトムとキーが指すatomとの間にリンクを作成します。

非リレーショナルデータベースは、異なるバケットからのデータを相互にリンクするための明示的かつ構造化されたメカニズムなしでデータを保存するだけです。

このようなスキームの実装については、インデックス付きの紙のファイルがあり、別の紙のファイルでインデックスを参照して関連情報を取得する場合、非常に単純なものではありますが、リレーショナルデータベースを実装しています。そのため、あなたはコンピューターさえ必要としないことがわかります(もちろん、助けがなくても非常に早く退屈になります)。同様に、RDBMSはおそらく仕事に適したツールですが、RDBMSは必要ありません。ただし、そこにあるさまざまなツールで何ができるかについてはさまざまなバリエーションがあるため、ジョブに適したツールを選択するのはそれほど簡単ではないかもしれません。

これが素人の用語で十分であり、理解に役立つことを願っています。

43
asoundmove

あなたが「知っている」ことのほとんどは間違っています。

まず第一に、いくつかの関係の達人が日常的に(そして時には意外に)指摘しているように、SQLは多くの人が考えるほど関係理論にほとんど適合していません。第二に、「NoSQL」の違いのほとんどは、リレーショナルかどうかとはほとんど関係ありません。最後に、bothはかなり広い範囲の可能性を表しているため、「NoSQL」がSQLとどのように異なるかを言うのはかなり困難です。

期待できる大きな違いの1つは、SQLをサポートするほとんどすべてがデータベース自体のトリガーなどをサポートしていることです。つまり、データが常に内部的に一貫していることを保証することを目的とした、適切なデータベースにルールを設計できます。たとえば、データベースで人必須に住所があると断言するように設定できます。そうすると、人を追加するたびに、基本的にその人を何らかの住所に関連付けるように強制されます。新しい住所を追加するか、既存の住所に関連付けることができますが、何らかの方法でその人に住所が必要です。同様に、住所を削除すると、現在その住所にいるすべての人を強制的に削除するか、それぞれを他の住所に関連付ける必要があります。すべての人が母親を持っている必要がある、すべてのオフィスが電話番号を持っているなど、他の関係についても同じことができます。

これらの種類のことはアトミックに行われることも保証されているため、人を追加しているときに他の誰かがデータベースを見ると、その人はまったく見えないか、その人を見ることになります- with住所(または母親など)

ほとんどのNoSQLデータベースはnotデータベースに適切なこの種の強制を提供しようとします。データベースを使用するコードでは、データに必要な関係を強制するのはあなた次第です。ほとんどの場合、部分的に正しいデータのみを表示することもできます。そのため、すべての人が親と関連付けられることになっている家系図を持っている場合でも、あなたが課した制約が実際にはない場合があります施行されました。いくつかはあなたが自由にそれをさせるでしょう。他の人は、それが一時的にのみ発生することを保証しますが、正確にどれくらいの期間続くことができるか/質問される可能性があります。

21
Jerry Coffin

リレーショナルデータベースは、データをアドレス指定するために、述語の正式なシステムを使用します。基礎となる物理的な実装は実質的ではなく、特定の操作に対して最適化するために変化する可能性がありますが、常に リレーショナルモデルを想定する必要があります 。素人の言葉では、それはちょうどと言っているだけです私はテーブル(リレーション)の各行(タプル)の値(属性)の正確な数を知っており、今、それに応じて、徹底的かつ極端に事実を活用したいですそれが獣のtrueの性質です。

私たちは明らかにリレーショナル育成を行った世代なので、NoSQLデータベースモデルをリレーショナルモデルの観点から見ると、やはり素人の言葉で言えば、最初の明らかな違いは、行の値の数に関する仮定がないことです。含まれるこれは問題を本当に単純化しすぎており、すべてのNoSQLデータベースの物理モデルの複雑さにきれいに適用されるわけではありませんが、リレーショナルモデルの頂点であり、後に残さなければならない最初の仮定、またはむしろ、飛躍する必要があります。

すべてのDBMSに当てはまる2つのことに同意することができます。あらゆる種類のデータを格納できることと、考えられるあらゆる方法でデータを管理できるようにするための十分な数学的基盤があります。現実には、2つのポイントのいずれかをテストに間違えるのではなく、実際のDBMSが実際に何のために作られたものであるかに固執することは決してありません。素人の言葉で:内の獣を尊重します!

(NoSQLデータベースが提供する多くのフレーバーとリレーショナルモデルを中心に(明らかに)十分に確立された標準を比較することを避けていることに注意してください。必要に応じて、NoSQLデータベースをリレーショナルモデルを完全に想定していないDBMS。他のすべてを除外します。違いは多すぎますが、それが主な違いであり、この2つを理解するのに最も役立つと思います。)

9

少しの技術を指すレベルでこの質問を説明してみてください

比較のためにMongoDBと従来のSQLを取り上げ、Twitterにツイートを投稿するシナリオを想像してください。このツイートには9枚の写真が含まれています。このツイートとそれに対応する写真をどのように保存しますか?

従来のリレーションシップSQLの観点では、ツイートと写真を別々のテーブルに保存し、新しいテーブルを作成することで接続を表すことができます。

さらに、画像タイプのフィールドを設定し、9つの写真をバイナリドキュメントに圧縮して、このフィールドに保存できます。

MongoDBを使用すると、次のようなドキュメントを作成できます(リレーショナルSQLのテーブルの概念に似ています)。

{

"id":"XXX",

"user":"XXX",

"date":"xxxx-xx-xx",

"content":{

"text":"XXXX",

"picture":["p1.png","p2.png","p3.png"]

}

したがって、私の意見では、主な違いは、データの保存方法とそれらの間の関係のストレージレベルに関するものです。

この例では、データはツイートと写真です。それらの間の関係の記憶レベルに関する異なるメカニズムも、両方の違いに重要な役割を果たします。

この小さな例が、SQLとNoSQL(ACIDとBASE)の違いを示すのに役立つことを願っています。

インターネットからのNoSQLの目標に関する図のリンクを次に示します。

http://icamchuwordpress-wordpress.stor.sinaapp.com/uploads/2015/01/dbc795f6f262e9d01fa0ab9b323b2dd1_b.png

5
Cam Chu

リレーショナルと非リレーショナルの違いはまさにそれです。リレーショナルデータベースアーキテクチャは、主キー、外部キーなどの制約オブジェクトを提供します。これにより、1つのリレーションで複数のテーブルを結び付けることができます。これは、データベースの表現に関する情報を多くの異なるテーブルに分割し、データの整合性を維持できるようにテーブルを正規化するのに適しています。

たとえば、従業員に関する情報を格納する一連のテーブルがあるとします。他のテーブルからそのようなレコードに関連するすべてのレコードを削除しないと、テーブルからレコードを削除できませんでした。このようにして、データの整合性を実装します。非リレーショナルデータベースは、データの整合性を実装できるこの制約構造を提供しません。

データベースのテーブルを作成するために使用されるフロントエンドアプリケーションにこの制約を実装しない限り、ワイルドウェストと比較できる混乱を実装しています。

3
Zoty De La Mota

素人の言葉で言えば、それは強く構造化されたものと非構造化されたものであり、DBに対する適応度が異なることを意味します。特定の参照インデックスが別のアイテム->このリレーションにリンクできることを確認する必要がある場合、特にインデックス作成に違いが生じます。リレーショナルDBのより厳密な構造は、この要件に基づいています。

NosDBがリレーショナルDBと非リレーショナルDBの両方を提供し、両方をクエリする方法を提供していることに注意してください http://www.alachisoft.com/nosdb/sql-cheat-sheet.html

0
olliaroa