序文
近年では、本研究でのNoSQLデータベースの上昇、別の後の新製品の様々な、のNoSQLの基礎理論、および共通の理解のNoSQLデータベースの下で。
NoSQLデータベースの台頭の理由
技術の出現やビッグデータのWeb2.0の時代の立ち上がりに。従来のリレーショナルデータベースは、データベースの現在のニーズを満たすことができませんでした。
主に3つの点での飽くなき需要:
- 大量のデータの保存と管理(従来のリレーショナルデータベースがサポートすることができませんでした)
- 大量のデータに並行処理(大量のデータ操作をもたらす伝統的なリレーショナルデータベース厳密トランザクション機構は並行性を低下させる、データのロックの広い範囲につながります)
- 高可用性、高スケーラビリティ(ユーザは、膨大な量のデータがデータベースのニーズを満たすために拡張する必要があります。機能が利用可能であるかどうかを懸念している肖像画を満たすことができませんでした)
オリジナルのリレーショナルデータベースの利点は、多くの企業に比べて必要とされていないと、主に3つのポイントがあります。
- 厳密なデータベース・トランザクション(例えば、マイクロチャネルとして、シナマイクロブロギングと、メッセージの損失のような他のインターネット企業、ACIDを実現するかが非常に重要ではありません)
- 厳格な読みとリアルタイムの書き込み(同様に、サーバは他の人にメッセージを書き込み、すぐにそれほど重要かどうか)
- 複雑なクエリ(条件冗長ハードウェアを削減するメモリ空間を節約するために、意志従来のリレーショナルデータベーステーブルに格納情報の様々なポイントが、今すべて格納されている情報の十分なハードウェアの性能を有している。そして、複雑な複数のクエリテーブルを必要としません)
大量のデータにビジネスニーズを満たすために、従来のリレーショナルデータベースには、さまざまな技術を開発したが、最終的に、それは、NoSQLのデータベースは、最も適切な選択であるが判明しました。ソリューション、従来のリレーショナル・データベースでの経験、次のフェーズ:
- マスター・コピーから、別のは、読み取りと書き込み。マスターは、複数のサーバから、設定します。プライマリサーバは、書き込み操作、およびサーバからコンテンツを変更するためのリアルタイムレプリケーションを担当しています。サーバーからの読み取り操作を担当しています。(しかし、まだ書き込み要求を解決するために余裕がありません)
- サブライブラリー、要求の分割部分。サブライブラリーは、長手方向及び横方向のサブライブラリーサブライブラリーに分割され、サブライブラリーの横方向分解能は、サービスサーバシナリオ、異なるデータベースクエリに応じて、異なるサービスデータベースオープン寸法程度です。サブライブラリーは、特定のルールに従って長手方向の列についてであるが、異なるデータベースに格納されています。以下のような:ハッシュ、生産時間に応じました。(ただし、直接異なるデータベースクエリにつながり、そしてさらに大きなデータの要件を満たすことができません)
- サブライブラリーのような表を、ポイント。水平または垂直スライシングテーブルによって。
NoSQLデータベースの4種類の二つ
彼らは以下のとおりです。
- 鍵データベース
- カラムファミリー・データベース
- 文書データベース
- 地図データベース
2.1一般的な特性(長所)
- 柔軟なデータ構造。(従来のリレーショナルデータベースフィールドには厳格な要件、複雑さおよびそれに続く修飾を有します)
- (スケーラビリティ規模に簡単に、非常に複雑な従来の拡張リレーショナルデータベースと比較し、支持および拡張低複雑分散)
- 高い同時操作をサポートしています。
それぞれの2.2特徴
- キーと値のデータベース。データベースに格納されたキーと値のペア。
- 利点:大量の書き込み操作のために。
- 短所:が、データは複雑なクエリの構造化され、低効率に格納されていません。
- アプリケーション:一般的にキャッシュの内容を作るために使用されます。
- 代表的な製品:Redisの、memcachedの
- 列グループデータベース、基礎となる列ファミリに基づいてデータベースを保存します。(検索は、行キールックアップ列のファミリーに基づいて、バリアントキーデータベースとして見ることができる場合)
- 利点:高速クエリは、横方向伸張性は、分散システム、分散シールドの複雑さのために特に良好です。
- 短所:簡単な特徴、大規模なトランザクションの整合性をサポートしていません。(HadoopののHBaseのは、サポートされています)
- アプリケーション:分散ファイルシステム。
- 代表的な製品:カサンドラ、HBaseの
- 文書データベース、キーベースのストア文書。(変異体はまた、キーデータベースとして見ることができます)
- 利点:JSON、XML:半構造化データフォーマットのような、自明であることができます。このようなデータ構造は、柔軟で高い並行性です。
- 短所:統一されたクエリ構文の欠如
- アプリケーションは:文書型データ、半構造化データを格納します。
- 代表的な製品:MongoDBの、CouchDBの
- 図データベース、図に基づいてデータベースのデータ構造。
- 長所:複雑な関係マップやグラフアルゴリズムをサポート
- 短所:唯一のアプリケーションや他の分野で、図貧弱なパフォーマンスとの関係について。
- アプリケーション:図複雑なソーシャルネットワークなどの構造、関係マップ。
- 代表的な製品:のNeo4j、InfoGrid
3つのNoSQLデータベースの3個の礎石
3つのプロパティの3.1 CAP理論
- C:一貫性(結果の前に完了するために、常に書き込み読み出し動作のいずれかを読んで)
- :可用性(各操作は常に決められた時間内に戻すことができる、すなわち、システムは常に利用可能です)
- P:パーティショントレランス(ネットワークパーティションが発生し、システム全体がまだ使用可能です)
実績のある、分散システムは、最大2満たすために、同時に3つのプロパティを満たすことができません。
CAを満たすために、従来のリレーショナル・データベース、P.を放棄しました そのため、拡張が難しいです。ほとんどのインターネットシステムは、現在のシステムを分散していると、P特性を放棄することは不可能です。
人気の説明の下で、なぜ2つのだけの特性を満たしています。
AとCは仮定およびP.を満たします 従って、Pは、次いでCを確保するために、システムは、情報の他のノードとデータを同期しようと、システム内の異なるネットワークノードの存在を保証するが、ネットワークの問題は、システムパーティションを引き起こす(すなわち、ノードが相互に通信することができない)、同期化を引き起こし、すぐに完了できません会うことができなくなります。
この時点で、唯一つの特徴を削除することができます。
- 削除P、予約CA. そこにはネットワーク通信の問題は、データの一貫性のCを実装する際に、迅速に完了することができませんが、またA.を確保するために、
- Aの除去は、CPを禁じます。ネットワークパーティションPがある場合でも、データの整合性Cを達成するとすぐに完了するために必要とされていない、ゆっくり待っているかもしれません。
- C、保持APを削除します。データの整合性を確保するために、ネットワークが分割されている場合でも、各ノードを個別に実行することができ、ユーザーが利用可能であることを確認必要はありません(とにかく気にしない、システムは、データの各ノード一貫しています)。
3.2 BASE理論
BASEモデル抗ACIDモデル、完全に異なるACIDモデル、高い一貫性を犠牲に、アクセスの可用性。
- BA:基本利用できます。ゾーニングの問題の一部は、システムは、主にコア機能が利用可能であることを保証するために、依然として利用可能です。(大型電気プロバイダが促進する場合、トラフィックの急増に応じて、一部のユーザーがページをダウングレードするように指示することができる、サービスレイヤはまた、サービスをダウングレードするためにのみ提供されてもよい。これは、一部の可用性の損失に反映されます)
- S:柔らかい状態。時間の可能な期間を短縮するために必要なデータの一貫性は、一貫性を満たしていません。ハード状態に対応します。(データの部分の少なくとも3つのコピーを有する分散ストレージは、一般に、異なるノード間の同期レプリカ遅延は非同期コピー.mysql複製の柔らかい状態の徴候である可能にする反射です。)
- E:最終的な一貫性。弱い一貫性、フォローアップアクションがすぐに更新された情報を取得することはできません。それに対応して強い整合性。最終的一貫性は、特別な弱い一貫性、唯一の保証です。
3.3最終的な一貫性
(もちろんBASEは、最終的な一貫性を含んでいる本が3つの理論的な根拠の一つとして単独でそれを回すなぜ、私は知りません)