過去数年間、NoSQLのまたは非リレーショナル・データベース・ツールは、膨大な量のデータを格納し、それらを簡単に拡大縮小の面で多くの人気を得ています。非リレーショナルデータベースは、将来的にリレーショナルデータベースを置き換えるかどうかについて議論があります。ソーシャルデータやその他の非構造化データの増加によって、以下の質問のいくつかは、リレーショナルデータベースで発生している。
ビッグデータを扱うことができるリレーショナルデータベースはありますか?
大規模をスケールアウトすることができ、リレーショナルデータベースですデータの量?
現代のデータに適しリレーショナルデータベースはありますか?
これらの質問に答える前に、私たちはリレーショナルおよび非リレーショナルデータベースの両方のいくつかの基本を知ってみましょう。
のリレーショナルおよび非リレーショナルデータベースの基礎の
<強い>リレーショナルデータベース:を リレーショナルデータベースの概念は、1970年代に開発されました。すべてのリレーショナルデータベースの最も重要な機能は、すべてのトランザクションが確実に処理されることを保証するACID(Automicity、一貫性、独立性、耐久性)のプロパティのサポートです
を自動性:を 各トランザクションは、ユニークで、トランザクションの論理部分に障害が発生した場合、データが変更されていないので、すべてがロールバックされていることを確認します
を一貫性:を データベースに書き込まれたすべてのデータが定義されたルールに従う(制約、トリガーなど)である
の単離強いです> 彼らがコミットされるまで、トランザクションで行われた変更は、他のトランザクションからは見えません
の耐久性:を 変更は、トランザクションでコミット停電やデータベースが突然オフラインになるがあっても、データベースに格納され、利用可能なされている
を厳密に構造化:を リレーショナルデータベース内のオブジェクトは、厳密に構成されています。テーブル内のすべてのデータが行と列に格納されています。各列は、データ型を持っています。これは主に正規化されています。構造化照会言語(SQL)は、店舗へのリレーショナルデータベースに適しており、構造化された方法でデータを取得します。クエリは平易な英語のコマンドです。追加の列が後から追加することができますが、列の固定数が常にあります。テーブルのほとんどは、このようにオブジェクト間の「参照整合性」を提供する主キーと外部キーと相互に関連しています。主要ベンダーですORACLE、SQL Serverのは、MySQL、PostgreSQLの、など
を非リレーショナルデータベース:を 非リレーショナルデータベースの概念は、非構造化データの急速な成長に対応し、簡単にそれらをスケールアウトするために画像に入って来ました。私たちはリレーショナルデータベースに見るように、「参照整合性」と呼ばれるそのような事はありませんので、これは柔軟なスキーマを提供します。データは非常にデ正規化され、オブジェクト間の結合は必要ありません。これは、リレーショナルデータベースやサポートCAP(一貫性、可用性、およびパーティション)のACIDプロパティを緩和します。しかし、これらの3のうちの2つだけが、任意の時点で保証されています。 ACIDとは対照的に、だから、それだけでBASE(基本的に利用可能なソフトの状態、結果整合性)をサポートします。初期データベースはフェイスブックなど
によってグーグル、ヤフーHBaseのことで、カサンドラでBigTableのこれらの概念に基づいて作成されているの非リレーショナルデータベースのカテゴリー:の 非リレーショナルデータベースは、このようなキー値のデータベース、列のデータベース、文書データベース、およびグラフデータベースの4つの主要なカテゴリに分類することができ
をキー値のデータベース:を これは、各値が一意のキーに関連付けられているのNoSQLデータベースの最も単純な形態である(EX Redisの)
の列データベース:強いです> このデータベースは、ポインタを使用して大量のデータを格納し、処理することができるクラスタにわたって分散されている多くの列を指しています。 (元のHBase)
を文書データベース:を このデータベースは、多くのネストされたレベルを持つ多くのKey-Value文書を含めることができます。効率的なクエリは、このデータベースで可能です。文書はJSON形式で格納されている(EXのMongoDB)
のグラフデータベース:強いです> 代わりに、伝統的な行と列で、このデータベースは、ノードおよびグラフ構造とストアデータを表現するエッジを使用します。 (EXのNeo4j)