分散 SQLデータベースは、複数のサーバー間でデータを複製する単一のリレーショナル データベースです。分散 SQL データベースは強力な一貫性を備えており、ラック、データ センター、クラウド アベイラビリティ ゾーンやクラウド ジオグラフィック ゾーンを含む広域ネットワーク間での一貫性をほとんどサポートしています。分散 SQL データベースでは通常、 PaxosまたはRaftアルゴリズムを使用して、複数のノード間で 合意を形成します。
分散 SQL データベースはNewSQLと呼ばれることもありますが、NewSQL は分散データベースではないデータベースも含む、より包括的な用語です。
歴史
GoogleのSpanner は、現代の分散 SQL データベースの概念を普及させました。Google は、2012 年のホワイトペーパー「Spanner: Google のグローバル分散データベース」で、このデータベースとそのアーキテクチャについて説明しました。このホワイトペーパーでは、Spanner はビッグ テーブルのようなキー値ストアから、データが「スキーマ化されたセミリレーショナル テーブル」に保存される一時的なマルチバージョン データベースに進化したと説明されています。[1]
Spanner は、Paxos アルゴリズムで原子時計を使用して、サーバー間で分散された状態に関する合意を実現します。2010 年、以前の実装では、ClustrixDB (現在のMariaDB Xpand) はハードウェア アプライアンスから Paxos ベースのソフトウェア データベースに移行し[2] 、後にMariaDB [3]に買収され、 SkySQLと呼ばれるSaaSクラウド サービスに追加されました。[4] 2015 年には、2 人の Google エンジニアが同社を離れ、原子時計やカスタム ハードウェアなしで Raft アルゴリズムを使用して同様の結果を実現するCockroach DBを作成しました。[5]
Spanner は主にトランザクションと時系列のユースケースに使用されます。しかし、Google はこの研究をさらに進め、 Spanner 上に構築されたハイブリッド トランザクション/分析処理データベースである Google F1 に関するフォローアップ論文を発表しました。[1]
建築
分散 SQL データベースには、次のような一般的な特性があります。
- 同期レプリケーション
- 少なくともアベイラビリティゾーンをまたがる強力なトランザクション一貫性(すなわちACID準拠)[6]
- リレーショナルデータベースのフロントエンド構造 - 他のRDBMSと同様に行と列を持つテーブルとして表現されるデータを意味します。
- 自動的に分割されたデータストレージ
- 基礎となるキーバリューストレージ[7] [1]
- ネイティブSQL実装
CAP 定理に従い、分散 SQL データベースは「CP」、つまり一貫性があり、パーティション耐性があります。アルゴリズム的には、プライマリ ノードの障害によりデータベースへの書き込みができなくなるため、可用性が犠牲になります。
すべての分散SQL実装では、一貫性を保証するために何らかの時間同期が必要です。Spannerを除いて、ほとんどの実装では原子時計を提供するためにカスタムハードウェアを使用していません。Spannerは時間保証付きで書き込みを同期できます。カスタムハードウェアを使用しない実装では、サーバーがクロックオフセットを比較し、読み取りを再試行する必要があります。[8]
分散SQL実装
NewSQLと比較
CockroachDB、YugabyteDB などは、自分たちをNewSQLデータベースと呼ぶことがあります。Citus や Vitess などの一部の NewSQL データベースは、根本的に異なるアーキテクチャを持っていますが、この用語を作った Matthew Aslett によって NewSQL の例として引用されました。[11]本質的に、分散 SQL データベースはゼロから構築され、NewSQL データベースには、PostgreSQLなどの既存のクライアント サーバー リレーショナル データベースに追加されたレプリケーションとシャーディングのテクノロジが含まれています。[12]一部の専門家は、分散 SQL データベースを NewSQL データベースのより具体的なサブセットとして定義しています。[13]
参考文献
- ^ abc https://storage.googleapis.com/pub-tools-public-publication-data/pdf/41344.pdf [単なる URL PDF ]
- ^ Higginbotham, Stacey (2010 年 5 月 3 日)。「Clustrix が Web スケールの聖杯を構築: スケールするデータベース」gigaom.com。
- ^ 「MariaDBがClustrixを買収」2018年9月20日。
- ^ Baer (dbInsight)、Tony。「MariaDB にとって、今こそすべてをまとめる時です」。ZDNet。
- ^ Morgan, Timothy Prickett (2017 年 2 月 22 日)。「Google Spanner が CockroachDB に追い越しのきっかけを与える」The Next Platform。
- ^ データベースの未来: 分散 SQL と MariaDB ® 、 2022 年 12 月 21 日取得
- ^ 「分散 SQL データベースのアーキテクチャ」。2020 年 9 月 23 日 – www.youtube.com 経由。
- ^ 「原子時計なしで生きる」。Cockroach Labs。2020年4月21日。
- ^ "citus/LICENSE 185ac5e01e8c62757c81cdc1d92cffcf6b55f500 · citusdata/citus". GitHub 。2024-09-26に取得。
- ^ 「YDB は、高可用性とスケーラビリティを強力な一貫性と ACID トランザクションと組み合わせたオープンソースの分散 SQL データベースです」。ydb.tech。
- ^ 「NewSQL について話すときに何を話すか — 情報が多すぎる」。
- ^ 「SQL データベースと NoSQL データベースの違いは何ですか?」www.ibm.com . 2022 年 6 月 12 日。
- ^ Prabagaren, Gokul (2019 年 10 月 30 日)。「NewSQL — データベースの次の進化」。Medium。
