基礎知識:分散SQLとは何か

基礎知識:分散SQLとは何か

[51CTO.com クイック翻訳] 過去 40 年近くにわたって、SQL はリレーショナル データベース (RDBMS とも呼ばれます) の共通言語になりました。このため、リレーショナル データベースは単に SQL データベースと呼ばれることがよくあります。アーキテクチャの観点から見ると、Oracle、PostgreSQL、MySQL などの従来の SQL データベースはモノリシックです。つまり、データとクエリを複数のインスタンスに自動的に分散することはできません。 NewSQL データベースの出現により、SQL はスケーラブルかつ高性能になりました。もちろん、このようなデータベースには依然として固有の制限があります。

2015 年には、Docker コンテナと Kubernetes オーケストレーションの登場により、柔軟で構成可能なインフラストラクチャ方式でさまざまなマイクロサービス ベースのアプリケーションを作成できるようになりました。その中で、組み込みのスケーラビリティ、柔軟性、地理的分散は、このタイプのクラウドネイティブ アーキテクチャの中心的な機能です。これはよく「分散 SQL」と呼ばれる、新しいタイプのデータベースです。アプリケーションの観点から見ると、このタイプの分散 SQL データベースの注目すべき特徴は、ノードの数に関係なく、データベース クラスター全体がアプリケーションによって単一の論理 SQL データベースとして認識されることです。

データベースアーキテクチャ

分散 SQL データベースは通常、次の 3 層アーキテクチャを備えています。

1. SQL API

名前が示すように、分散 SQL データベースは、アプリケーションがリレーショナル データをモデル化し、さまざまなリレーショナル情報を含むクエリ操作を実行できるように、SQL API サービスを提供する必要があります。インデックス、外部キー制約、JOIN クエリ、複数行の ACID トランザクション (翻訳者注: 原子性、一貫性、独立性、永続性) など、SQL データベースの一般的なデータ モデリング構造が保持されます。

2. 分散クエリ実行

分散 SQL クエリはターゲット クラスター内の複数のノードに自動的に分散できるため、単一のノードがクエリ処理のボトルネックになるという問題を効果的に回避できます。具体的なクエリ プロセスは次のとおりです。ターゲット クラスター内の任意のノードが着信クエリを受け入れることができます。ネットワーク内のノード間でデータを転送し、連携することで、ノードはクエリ要求内のタスクの一部のみを共有し、処理の遅延を最小限に抑えることができます。他のノードは残りの作業の完了を支援します。最後に、リクエストを受信した元のノードはすべてのクエリ結果を集約し、クライアント アプリケーションに送り返します。

3. 分散データストレージ

インデックス情報を含むデータは、クラスター内の複数のノードに自動的に分散(シャード化とも呼ばれます)されます。これにより、単一のノードが高パフォーマンスと高可用性のボトルネックになることがなくなります。さらに、データベース クラスターは、一貫性の高いレプリケーションと複数行 (分散型とも呼ばれる) ACID トランザクションをサポートできるため、単一の論理データベースという基本的な概念が維持されます。

一貫性の高いレプリケーション

データベース管理の概念では、いわゆる強力な SQL API レイヤーのサポートには、基本的に、基盤となるストレージ レイヤーがデータベースのクラスター ノード間で強力な一貫性のあるレプリケーションを確立できることが必要です。つまり、障害発生時にデータの可用性を確保するために、データベースへの書き込み操作が複数のノードで同期的に送信されます。読み取り操作は、最後にコミットされた書き込みデータ、またはエラーが発生する前のデータに基づいて行われます。この特性は、線形化可能性 (http://www.bailis.org/blog/linearizability-versus-serializability/) と呼ばれることがよくあります。有名な CAP 原則 (https://towardsdatascience.com/cap-theorem-and-distributed-database-management-systems-5c2be977950e、翻訳者注: 一貫性、可用性、分断耐性) によれば、分散 SQL データベースは一貫性があり、分断耐性があります。

分散ACIDトランザクション

分散 ACID トランザクションをサポートするには、分散データベースのストレージ層で、複数のノード上の複数のデータ行でトランザクション調整タスクを実行する必要があります。ここでは、2 フェーズ コミット (2PC) プロトコルを使用します。 ACID の I (分離) の要件を参照すると、同時データ アクセスの厳密な分離を実現するために、分散 SQL データベースは、最も厳格な分離レベルとして直列化可能性 (http://www.bailis.org/blog/linearizability-versus-serializability/) を使用し、スナップショットなどの他の方法を通じてより弱い分離レベルをサポートします。

ビジネスアプリケーションの利点

分散 SQL の 4 つの主な利点を下の図に示します。

1. SQLとトランザクション開発をよりアジャイルにする

現在でも、SQL は関係性や複数行の操作を簡単にモデル化できるデータモデリング言語であるため、SQL データベースに対するアプリケーション開発者の継続的な操作習慣とニーズを満たすために、Amazon DynamoDB、MongoDB、FaunaDB などの NoSQL データベースでもトランザクション操作機能が導入され始めています。たとえば、SQL では、複数行のトランザクションを明示的に (BEGIN および END TRANSACTION 構文を使用して) および暗黙的に (外部キーや JOIN クエリなどのセカンダリ インデックスを使用して) 許可します。これは、従来のキー値 NoSQL よりもはるかに便利です。

さらに、開発者は多くの場合、SQL を使用してデータ (およびストレージ) を一度で簡単にモデル化することを好む傾向があります。ビジネス要件が変更された場合は、JOIN を変更してクエリに反映させるだけで済みます。

2. ローカルフェイルオーバーと修復による優れた回復力

分散 SQL データベースでは、シャードごとの分散コンセンサス レプリケーションなどのテクノロジを使用して、障害発生時に各シャード (各インスタンスではなく) の高可用性が維持されるようにします。

このように、インフラストラクチャに障害が発生した場合、クラスター全体に影響することなく、ターゲット データのサブセット (つまり、リーダーによって分離されたフラグメント) のみに影響します。さらに、残りのシャード コピーは数秒以内に自動的に新しいリーダーを選出できるため、障害が発生した場合でもクラスターはある程度の自己修復能力を発揮します。

さらに、クラスター構成へのこれらの変更はバックグラウンドで行われ、アプリケーションに対して完全に透過的であるため、中断やパフォーマンスの低下なしに通常どおり実行を継続できます。

3. オンデマンドの横書きのスケーラビリティ

記事「分散 SQL データベースでのデータ シャーディングの仕組み」では、開発者が分散 SQL データベースで自動データ シャーディングを実装する一般的な方法について説明します。新しいノードが追加されたか、既存のノードが削除されたかに関係なく、シャードは利用可能なすべてのノード間で自動的にバランスが保たれます。

現在、トランザクションを処理する必要があるアプリケーションには、スケーラブルな機能を備えたマイクロサービスが存在します。新しいインフラストラクチャを必要とせず、メモリ内キャッシュ (書き込み要求の処理を維持しながらデータベースから要求を読み取る必要がない) または NoSQL データベース (書き込み操作を拡張できるが ACID を保証することはできない) に直接依存できます。

4. 地理的に分散したデータの低遅延

「低レイテンシでクラウドネイティブな地理的に分散された SQL アプリケーションを構築するための 9 つのテクニック」という記事で強調されているように、分散 SQL データベースは地理的に分散されたアプリケーションを構築するためのさまざまなテクニックを提供できます。これらのテクノロジーは、地域的な障害に対する災害復旧の自動化に役立つだけでなく、データを地域のエンドユーザーに近づけることで、データの遅延を短縮することもできます。

元のタイトル: 分散 SQL とは何ですか?著者: シド・チョードリー

[51CTOによる翻訳。パートナーサイトに転載する場合は、元の翻訳者と出典を51CTO.comとして明記してください。

<<:  Zhuohao ManageEngineは国際スマート教育博覧会への参加を招待されました

>>:  HUYAの急速な海外進出の秘密

推薦する

オリジナルソフト製品は、長期間存続するために明確な目的を持つ必要がある

外部リンク担当者は、もともとフォーラム、ブログ、Baidu 製品にのみ外部リンクを構築していました。...

zjiの3回線サーバーの簡単なレビュー、香港アリババクラウドの専用サーバーのレビュー

「Zji Hong Kong物理マシン:1台のマシンに3つの回線、Alibaba専用回線+Huawe...

cloudcone: 新しい Windows VPS、月額 17.49 ドル、4G メモリ/3 コア/60g SSD/3T トラフィック

Cloudcone は昨日、エンタープライズ レベルのハードウェア、Xeon E5 (3.0GHz)...

クラウドネイティブを語る上で「コンテナ化」は避けて通れない

[[381346]]この記事はWeChatの公開アカウント「Full-Stack Coder Por...

Cloudsilk: 2周年、20%割引、大容量VPS、年間128元から、香港CMI、米国AS4837/AS9929、ドイツAS9929、日本CMI

Cloudsilk は、私たちが気付かないうちに 2 年間設立されました。現在、公式では 20% 割...

ウェブサイトを Baidu に素早くインデックス登録させるにはどうすればよいでしょうか?

ウェブマスターなら誰でも、このような経験をしたことがあるでしょう。一生懸命ウェブサイトを構築した後、...

A5最適化グループ: フォーラムを最適化する際に注意すべき点

ウェブサイトの構築中、ほとんどのウェブマスターはフォーラムの構築と最適化に消極的です。その理由は何で...

vaicdn: 登録不要/実名CDN、高速、広帯域幅、高防御、攻撃によるレイテンシへの影響なし

vaicdn はどのようにして登録や実名登録なしで高速かつ防御力の高い CDN を提供するのでしょう...

感情的なデザインがユーザーにより良い体験を提供する方法についての簡単な議論

先月のTaobao UEDミルクティーパーティーで共有されたトピック。それをテキストにしてみんなと共...

ウェブマスターネットワークからの毎日のレポート:美容eコマースは秘密の戦争状態にあり、中小規模の音楽ウェブサイトが影響を受けている

1. オンラインゲーム業界のグレーチェーンが暴露:詐欺サイトがフランチャイズシステムを通じて会員を募...

AWSテクノロジーサミット2018北京駅が大盛況のうちに開幕

AWS テクノロジーサミット 2018 (北京) が北京国際会議センターで開催されました。北京は、中...

spinservers: 専用サーバーの 50% 割引コード、サンノゼ/ダラス データ センター、月額 149 ドル、2*e5-2630Lv3/256G メモリ/3.2tSSD/10Gbps 帯域幅

spinservers は、旧正月に向けて、サンノゼとダラスのデータセンターに 4 台の安価なサーバ...

gigsgigscloud: 香港サーバー先行販売 30% オフ、$97/E3-1230v2/32g メモリ/480gSSD/PCCW/100Mbps

gigsgigscloud は、香港データセンターの独立サーバーを先行販売する新サービスを開始しまし...

アプリダウンロード数増加のための3大無料新メディアチャネルの概要と比較!

APP 向けの新しいメディアの最終的な目標は、APP へのダウンロードを促進することです。新しいメデ...