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

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

質問

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

しかし、2種類のシステムの違いは何ですか?

素人用語が望ましい。

ありがとう。

役に立ちましたか?

解決

リレーショナルデータベースには、SQL ==構造化クエリ言語に蒸留されている数学的基盤(セット理論、リレーショナル理論)があります。

NOSQLの多くのフォーム(ドキュメントベース、グラフベース、オブジェクトベース、キー価値ストアなど)は、単一の基礎となる数学理論に基づいている場合とそうでない場合があります。 S.ロットが正しく指摘したように、 階層 データストアには実際、数学的根拠があります。同じことが言われるかもしれません グラフデータベース.

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

他のヒント

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

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

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

データ自体以外に、DBはそのデータの構造の概念です。

したがって、Orienmed Objectの方法論を使用してプログラムできないように、OO搭載コンパイラ以外のコンパイラ、またはその逆も同様です。そのため、RDBMSなしでリレーショナルデータベースをセットアップするか、RDBMSを使用して非関連データを保存できます。

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

リレーショナルデータベース(概念)は、異なる「テーブル」または異なるタイプのデータバケットから情報をリンクできるデータ構造です。データバケットには、キーまたはインデックスと呼ばれるものが含まれている必要があります(バケット内のデータの原子塊を一意に識別できるようにします)。他のデータバケツは、データ原子とキーによって指す原子との間にリンクを作成するために、そのキーを参照する場合があります。

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

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

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

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

まず第一に、いくつかの関係の達人が日常的に(そして時には激しく)指摘しているように、SQLは多くの人々が考えるほど関係理論にほぼ密接に適合していません。第二に、「nosql」のものの違いのほとんどは、それが関係であるかどうかに関係していません。最後に、「nosql」がSQLとどのように異なるかを言うのはかなり難しいです 両方 かなり幅広い可能性を表しています。

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

これらの種類のことも原子的に発生することが保証されているため、他の誰かがその人を追加するときにデータベースを見ると、彼らはその人をまったく見ないか、そうでなければその人を見るでしょう 住所(または母親など)

NOSQLデータベースのほとんどはそうです いいえ この種の施行をデータベースに適切に提供しようとします。データベースを使用するのは、データに必要な関係を実施するのはあなた次第です。ほとんどの場合、部分的にしか正しいデータを見ることも可能です。したがって、すべての人が親に関連付けられているはずの家系図があっても、あなたが課した制約が実際にはない場合があります強制。いくつかはあなたにそれを自由にさせることを許可します。他の人は、それが一時的にのみ発生することを保証しますが、それが正確にどれだけ長く続くかは疑問を投げかけることができます。

リレーショナルデータベースは、データに対処するために述語の正式なシステムを使用します。基礎となる物理的実装は実質的ではなく、特定の操作に対して最適化するために変化する可能性がありますが、常に リレーショナルモデル. 。素人の言葉では、それはただ言っているだけです テーブル(関係)の各行(タプル)の値(属性)の数(属性)の数を正確に知っていますが、それに応じて徹底的に、そして極端に事実を悪用したいと考えています。 それは 真実 獣の性質。

私たちは明らかにリレーショナルの育成を行った生成であるため、リレーショナルモデルの観点からnoSQLデータベースモデルを見ると、素人の用語では、最初の明らかな違いは、行の数の値に関する仮定がないという仮定がないということです。内容が作成されます。これは実際に問題を過度に単純化しており、すべてのNOSQLデータベースの物理モデルの複雑さにきれいに適用されませんが、それはリレーショナルモデルの頂点であり、私たちが残さなければならない最初の仮定、または最大の場合は最大の仮定です私たちが作らなければならない跳躍。

すべてのDBMに当てはまる2つのことに同意することができます。あらゆる種類のデータを保存でき、想像できるあらゆる方法でデータを管理できるようにするのに十分な数学的基盤があります。現実には、2つのポイントのいずれかをテストに掲載することを間違えたくないということですが、実際のDBMが実際に作られたものに固執するだけです。素人の用語で: 内の獣を尊重してください!

(NOSQLデータベースによって提供される多くのフレーバーと、リレーショナルモデルを中心に展開する(明らかに)適切に設立された標準を比較することを避けてください。必要に応じて、NOSQLデータベースを完全にはないDBMの傘の用語として考慮してください他のすべてに除外されているリレーショナルモデルを仮定します。違いは多すぎますが、それは主な違いであり、私はあなたにとって最も役立つと思うものです。

この質問を少しテクノロジーを参照するレベルで説明してみてください

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

従来の関係SQLに関しては、ツイートと写真を別々のテーブルに保存し、新しいテーブルを構築することで接続を表すことができます。

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

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

{

"id":"XXX",

"user":"XXX",

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

"content":{

"text":"XXXX",

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

}

したがって、私の意見では、主な違いは、データ間の関係のデータとストレージレベルをどのように保存するかについてです。

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

この小さな例が、SQLとNOSQL(酸とベース)の違いを示すのに役立つことを願っています。

これは、インターネットからのNOSQLの目標に関する写真のリンクです。

http://icamchuwwordpress-wordpress.stor.sinaapp.com/uploads/2015/01/DBC795F6F262E9D01FA0AB9B323B2DD1_B.PNG

リレーショナルと非関連性の違いはまさにそれです。リレーショナルデータベースアーキテクチャには、プライマリキー、外部キーなどの制約オブジェクトを提供し、2つ以上のテーブルを関係して結び付けることができます。これは、データベースが何よりも多くの異なるテーブルに表されるものについての分割情報が表示され、データの整合性を維持することができるというテーブルを正規化するためです。

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

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

素人の用語では、それは強力に構造化されている対非構造化されています。これは、DBに対して異なる程度の適応性があることを意味します。特に、特定の参照インデックスが別のアイテムにリンクできることを確認する必要があるため、インデックス化に違いが生じます - >これは関係です。リレーショナルDBのより厳格な構造は、この要件から得られます。

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

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