分散データベースとは何かを理解する方法

coldplay.xixi
リリース: 2022-05-13 11:46:09
オリジナル
9734 人が閲覧しました

分散データベースには次のものが含まれます: 1. 単一ノードまたは複数のノードに存在できる Elasticsearch データベース; 2. 豊富なデータ型をサポートする Redis データベース; 3. より便利にデータを取得できる Mongodb データベース; 4 . Mysql 分散クラスター、高可用性。

分散データベースとは何かを理解する方法

#分散データベースには次のものが含まれます:

1. Elasticsearch データベース

おすすめコース→: 「Elasticsearch 全文検索実践実戦」 (実践動画)

コースから

「1000万レベルのデータ同時実行ソリューション」 ( 理論と実践)》

1. Elasticsearch の概要

分散型リアルタイム ファイル ストレージ、各フィールドはインデックス付けされ検索可能、分散型リアルタイム分析と検索エンジン

は、PBレベルの構造化データまたは非構造化データを処理するために数百のサーバーに拡張できます

2. Elasticsearchアプリケーションのシナリオ

分散検索エンジンおよびデータ分析エンジン、完全版・テキスト検索、構造化検索、データ分析

大量データの準リアルタイム処理、現場検索(EC、人材採用、ポータル等)、ITシステム検索(OA、CRM、 ERP など)、データ分析

3. Elasticsearch の長所と短所

短所: ユーザー検証と権限制御がない、トランザクションの概念がない、ロールバック サポートがない、誤って削除した場合は復元できないには Java 環境が必要です。

利点: ドキュメントを異なるコンテナーまたはシャードに分割し、単一ノードまたは複数のノードに存在できます。

各シャードを複製してデータのバックアップを提供し、ハードウェアの問題を防ぎます。失った。

クラスター内の任意のノードからの相互リクエストをルーティングして、取得したデータが必要なものであることを確認します。クラスターがシャードを追加または再配布する場合、新しいノードは失われたノードのシャード データを回復するために停止しません。

4. Elasticsearch 永続化ソリューション

gateway は elasticsearch インデックスの永続的な保存方法を表します。デフォルトでは、elasticsearch は最初にインデックスをメモリに保存し、メモリがいっぱいになるとハードディスクに永続化します。 elasticsearch クラスターがシャットダウンまたは再起動されると、インデックス データがゲートウェイから読み取られます。 Elasticsearch は、ローカル ファイル システム (デフォルト)、分散ファイル システム、Hadoop の HDFS、Amazon の S3 クラウド ストレージ サービスなど、複数のタイプのゲートウェイをサポートします。

ElasticSearch は、まずインデックスの内容をメモリに保存し、メモリが足りない場合にはインデックスをハードディスクに永続化すると同時に、インデックスをハード ディスクに自動的に書き込むキューも備えています。システムがアイドル状態のときのディスク。

2. Redis データベース

1. Redis の概要

redis は、オープン ソースの BSD ライセンスを取得した高度なキー値ストレージ システム (NoSQL) です。使用可能 文字列、ハッシュ構造、リンク リスト、セットの保存に使用されるため、データ構造サービスの提供によく使用されます Redis はデータの永続化をサポートします メモリ内のデータをディスクに保存し、ロードすることができます再起動時に再度使用します。単純なキーと値のタイプのデータをサポートし、リスト、セット、zset、ハッシュなどのデータ構造のストレージも提供します。 Redis はデータ バックアップ、つまりマスター/スレーブ モードでのデータ バックアップをサポートしています。

2.Redis アプリケーション シナリオ

A) 定期的なカウント: ファン数、Weibo 数

B) ユーザー情報の変更

C) キャッシュ処理, mysqlのキャッシュ

D)キューシステム、優先キューシステムとログ収集システム

3. Redisのメリットとデメリット

メリット:

(1) HashMap と同様にデータがメモリに保存されるため高速です。HashMap の利点は、検索と操作の時間計算量が O(1)

(2) 豊富なデータ型をサポートしていることです。文字列、リスト、セット、ソートされたセット、ハッシュをサポートします

#(3) トランザクションをサポートし、操作はアトミックです。いわゆるアトミック性とは、データに対するすべての変更が実行されるか、まったく実行されないかのどちらかを意味します

(4) 豊富な機能: キャッシュ、メッセージ、キーによる有効期限の設定に使用でき、有効期限が切れると自動的に削除されます

欠点:

(1) Redis は次のことを行います。自動フォールト トレランスと回復機能がない場合、ホスト マシンとスレーブ マシンのダウンタイムにより一部のフロントエンドの読み取りおよび書き込みリクエストが失敗します。マシンが再起動するまで待つか、フロントエンド IP を手動で切り替えて回復する必要があります

(2) ホストがダウンしており、ダウンタイム前に一部のデータに障害が発生しました。時間内にスレーブ マシンに同期してください。IP を切り替えた後、データの不整合が発生し、システムの可用性が低下します。

(3) Redis のマスタースレーブレプリケーションはフルレプリケーションを採用しており、レプリケーション処理中にホストが子プロセスをフォークしてメモリのスナップショットを作成し、子プロセスのメモリスナップショットをファイルとして保存して送信しますこのプロセスでは、ホストに十分な空きメモリがあることを確認する必要があります。スナップショット ファイルが大きい場合、クラスターのサービス機能に大きな影響を与え、さらに、スレーブ マシンがクラスターに新規に参加するとき、またはスレーブ マシンとホスト ネットワークが切断されて再接続されるときに、レプリケーション プロセスが実行されます。つまり、ネットワークの変動により、ホストとホストが再接続されます。スレーブ マシン間での完全なデータのコピーは、実際のシステム動作に多大な問題を引き起こします。

(4) Redis はオンライン拡張に対応しにくく、クラスタ容量が上限に達するとオンライン拡張が非常に複雑になります。この問題を回避するために、運用および保守担当者は、システムがオンラインになったときに十分なスペースを確保する必要がありますが、これによりリソースが大幅に浪費されます。

4. Redis 永続化ソリューション

Redis は、永続化のための 2 つの方法を提供します。1 つは RDB 永続化 (原則として、メモリ内の Redis データベース レコードをディスク RDB 永続化に定期的にダンプすることです)、もう 1 つは RDB 永続化です。もう 1 つは AOF (追加専用ファイル) 永続化です (原則として、Reids の操作ログを追加形式でファイルに書き込むことです)。

RDB 永続化とは、指定された時間間隔内でメモリ内のデータ セットのスナップショットをディスクに書き込むことを指します。実際の操作プロセスでは、子プロセスをフォークし、最初にデータ セットを一時ファイルに書き込みます。書き込みが成功したら、前のファイルを置き換えてバイナリ圧縮して保存します。

3. Mongodb データベース

1. Mongodb の概要

MongoDB 自体は非リレーショナル データベースです。その各レコードはドキュメントであり、各ドキュメントは一連のキーと値のペアで構成されます。 MongoDB のドキュメントは JSON オブジェクトに似ています。 Document 内のフィールドの値には、他のドキュメント、配列などが含まれる場合があります。

2.Mongodb アプリケーション シナリオ

mongodb の主な目標は、キー/値ストレージ方式 (高いパフォーマンスと高いスケーラビリティを提供) と従来の RDBMS システム (豊富な機能) を基盤として構築することです。両方の長所を組み合わせたブリッジです。 Mongo は次のシナリオに適しています:

a. Web サイト データ: Mongo はリアルタイムの挿入、更新、クエリに非常に適しており、Web サイト上のリアルタイム データ ストレージに必要なレプリケーションと高いスケーラビリティを備えています。 。

b. キャッシュ: mongo はパフォーマンスが高いため、情報インフラストラクチャのキャッシュ層としても適しています。システムの再起動後、mongo によって構築された永続キャッシュにより、基礎となるデータ ソースが過負荷になるのを防ぐことができます。

c. サイズが大きく、価値の低いデータ: 従来のリレーショナル データベースを使用して一部のデータを保存すると、コストが高くなる可能性があるため、これまでは、多くのプログラマーが保存用に従来のファイルを選択することがよくありました。

d. 高いスケーラビリティのシナリオ: mongo は、数十または数百のサーバーで構成されるデータベースに非常に適しています。

e. オブジェクトと JSON データのストレージに使用: mongo の BSON データ形式は、ドキュメント形式のストレージとクエリに非常に適しています。

3. Mongodb のメリットとデメリット

メリット:

(1) 弱い整合性 (結果整合性) により、ユーザーのアクセス速度をより確実に確保できる

(2) より便利にデータを取得できる文書構造の保存方法

(3) 内蔵GridFSで大容量ストレージをサポート

(4) ユースケースでは数千万レベルドキュメント オブジェクト (ほぼ 10G のデータ) の場合、インデックス付き ID のクエリは mysql より遅くなりませんが、インデックスのないフィールドに対するクエリは全体的には優れています。

欠点:

(1) サポートされていない

(2) 多くのスペースを占有し、ディスクの無駄が発生します

(3) 単一マシンの信頼性比較的悪い

#(4) 大量のデータが継続的に挿入され、書き込みパフォーマンスが大きく変動する

4. Mongodb の永続化ソリューション/例外処理

書き込み操作を実行する場合, MongoDB は、正確なディスクの場所と変更されたバイトを含むジャーナルを作成します。したがって、サーバーが突然クラッシュした場合、サーバーの起動時に、クラッシュ前にディスクにフラッシュされなかった書き込み操作がジャーナルによって再実行されます。

データ ファイルはデフォルトで 60 秒ごとにディスクに更新されるため、ジャーナルは 60 秒以内に書き込まれたデータのみを保持する必要があります。ジャーナルは、この目的のために、/data/db/journal にある _j.0、j.1 などの名前のいくつかの空のファイルを事前に割り当てます。

MongoDB を長時間実行すると、ジャーナル ディレクトリに _j.6217、_j.6218、および _j.6219 のようなファイルが表示されます。これらのファイルは現在のジャーナル ファイルであり、MongoDB が常に実行されている場合、これらの数は増加し続けます。 MongoDB が正常にシャットダウンされると、これらのログは必要なくなるため、これらのファイルはクリアされます。

サーバーがクラッシュするか、-9 が強制終了された場合、mongodb が再起動すると、ジャーナル ファイルが再生され、長くてわかりにくい検証行が出力され、正常に回復したことを示します。

4. Mysql 分散クラスター

1. Mysql 分散クラスターの概要

MySQL クラスターはシェアードナッシング、分散ベースのストレージ ソリューションです。ノード アーキテクチャ。フォールト トレランスと高いパフォーマンスを提供することを目的としています。

データ更新では、読み取りコミット分離レベルを使用してすべてのノード上のデータの一貫性を確保し、2 フェーズ コミット メカニズム (two-phasedcommit) を使用して、すべてのノードが同じデータ (存在する場合) を持つことを保証します。書き込み操作が失敗すると、更新も失敗します)。

シェアードナッシングピアノードにより、あるサーバーでの更新操作が他のサーバーでもすぐに確認できるようになります。更新の伝達には、ネットワーク全体で高スループットを提供するように設計された複雑な通信メカニズムが使用されます。

複数の MySQL サーバーに負荷を分散してプログラムのパフォーマンスを最大化し、データを異なる場所に保存することで高可用性と冗長性を確保します。

2.Mysql 分散クラスター アプリケーション シナリオ

Jingdong B2B で使用される Mysql 分散クラスターなどの大容量ストレージの問題を解決します。

DBへの数十億PVアクセスに適しています。

3. Mysql 分散クラスターの長所と短所

利点:

a) 高可用性

b) 高速自動フェイルオーバー

c) 柔軟な分散アーキテクチャ、単一障害点なし

d) 高スループットと低遅延

e) 強力なスケーラビリティ、サポートオンライン拡張

欠点:

a) 外部キーのサポートなしなど、多くの制限があります。

b) 導入、管理、構成が複雑です

c) 大量のディスク容量とメモリを消費します

d) バックアップとリカバリが不便です

e) 再起動時にデータ ノードのロードに時間がかかります時間

4. Mysql分散クラスター永続化ソリューション

負荷分散。

ノードのバックアップを管理します。

関連する無料学習の推奨事項: mysql ビデオ チュートリアル

以上が分散データベースとは何かを理解する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!