銀河を横断する分散データベース 10 選

銀河を横断する分散データベース 10 選

[[404296]]

みなさんこんにちは、私は悟空です。

前回の記事では、MySQL と NoSQL の違い、利点、欠点について説明しました。

MySQL がすでにあるのに、なぜ NoSQL を使用するのでしょうか?

今回は、分散シナリオにおけるデータベースについてお話します。

まず、リレーショナルデータベースと非リレーショナルデータベースの違いと特徴を見てみましょう。

1. リレーショナル vs. 非リレーショナル

1.1 リレーショナル

1.1.1 リレーショナルとは何か?

リレーショナル データベースとは、リレーショナル モデル (2 次元テーブル モデル) を使用してデータを整理するデータベースを指します。これは、2 次元のテーブルとそれらの間の接続で構成されるデータ構成です。

1.1.2 一般的なリレーショナルデータベース

一般的なリレーショナル データベース管理システム (ORDBMS): Oracle、MySql、Microsoft SQL Server、SQLite、PostgreSQ、IBM DB2。

1.1.3 リレーショナルの利点

  • 2 次元テーブル構造は、通常の開発ロジックに非常に近いです。
  • 一般的な SQL (構造化クエリ言語) ステートメントをサポートします。
  • 優れた整合性により、データの冗長性やデータの不整合の問題が大幅に軽減されます。
  • SQL ステートメントを使用すると、複数のテーブル間で非常に複雑なクエリを実行できます。
  • リレーショナル データベースはトランザクションのサポートを提供します。

1.1.4 リレーショナルの欠点

(1)行レコードが格納される。

配列、ネストされたフィールドなどの形式のデータは保存できません。

(2)テーブル構造を拡張するのは不便である。

存在しない列に対して操作するとエラーが報告され、列を追加するには SQL ステートメントを実行する必要があります。また、テーブルが更新されると長時間ロックされ、オンライン環境に重大な影響を与える可能性があるため、変更を行う際には特別な注意を払う必要があります。

(3)メモリ使用量が多い。

リレーショナル データベースが大量のデータを持つテーブルに対して統計などの操作を実行する場合、特定の列のみを操作する場合でも、データの行全体をストレージ デバイスからメモリに読み込むため、大量のメモリを占有します。

(4)全文検索性能が低い

MySQL のようなリレーショナル データベースでは、テーブル全体をスキャンして一致を検出するために LIKE しか使用できないため、非常に非効率的です。最近では、あいまい一致のサポートが必要で、効率的な検索をサポートする必要があるシナリオが数多くあります。たとえば、キーワードを含むログ情報を照会したり、特定の製品キーワードに基づいて製品リストを照会したりできます。

1.2 非リレーショナル

1.2.1 非リレーショナルとは何ですか?

ノーSQL

NoSQL(NoSQL = Not Only SQL)は「SQLだけではない」という意味です。

非リレーショナル データベースは厳密にはデータベースの一種ではなく、ドキュメントやキーと値のペアなどの構造化されたデータ保存方法の集合です。

1.2.2 一般的な非リレーショナルデータベース

  • キーバリューデータベース: Redis、Memcached、Riak。
  • 列指向データベース: Bigtable、HBase、Cassandra。
  • ドキュメント データベース: MongoDB、CouchDB、MarkLogic。
  • グラフ データベース: Neo4j、InfoGrid。

1.2.3 非リレーショナルの利点

  • 柔軟な形式: 保存されるデータの形式は、キー、値、ドキュメント、画像などです。リレーショナル データベースは基本的なタイプのみをサポートしますが、柔軟に使用でき、幅広いアプリケーション シナリオに対応します。
  • 高速: NoSQL はストレージにハードディスクまたはメモリを使用できますが、リレーショナル データベースはハードディスクのみを使用できます。
  • 高いスケーラビリティ。
  • 低コスト: NoSQL データベースは導入が簡単で、基本的にオープンソース ソフトウェアです。

1.2.4 非リレーショナルの欠点

  • SQL サポートは提供されておらず、学習および使用コストが高くなります。
  • 取引はありません。 MongoDB 4.0 はすでにトランザクションをサポートしています。
  • データ構造は比較的複雑で、複雑なクエリはありません。

2. 分散データベース

2.1 分散データベースの定義

実際のところ、分散データベースの公式な定義は存在しません。これは、弊社の技術スタッフが提案した、一般的に受け入れられている用語です。

データベース分野では、製品が進化し続け、徐々に皆に認知され受け入れられるようになると、それが標準になります。たとえば、Microsoft の SQL Server データベースは他のデータベースの比較に使用されるため、SQL Server データベースが標準になります。

しかし、分散データベースは近年になって提案されたばかりです。それらはまだ比較的新しいため、参照がありません。しかし、これらの大企業の専門家がまとめた経験を通じて、分散データベースを理解することができます。

分散データベースは、分散アーキテクチャを使用して実装されたデータベースです。

2.2 分散データベースの利点

流通は私がずっと研究してきたテーマです。現在、多くの一般的なテクノロジーは、マイクロサービスやメッセージ キューなどの分散アーキテクチャを使用しています。

では、なぜ分散アーキテクチャを使用するのでしょうか?簡単に言えば、複数のマシンを使用して、単一のマシンの性能を水平拡張することです。もう 1 つの非常に重要な理由は、複数マシンのバックアップや災害復旧などの配布の信頼性です。

データベースのパフォーマンスを向上させ、信頼性を確保する必要があるでしょうか?答えはイエスです。

分散データベースを使用している大企業はどれですか?

アリババは毎年11月11日に自社の取引実績を誇示することを好んでおり、分散型データベースのOceanBaseはこれに欠かせない役割を果たしてきました。テンセント、バイトダンス、美団などの大手企業も分散データベースの利用を開始しており、大手銀行も分散データベースを導入しています。

したがって、分散データベースがトレンドになっています。ビジネス シナリオで高いパフォーマンスと高い信頼性が求められる場合は、分散アーキテクチャでのデータベースの使用を検討できます。

2.3 分散データベースの特徴

まず、データベースがトランザクションの種類によって分割される 2 つの主要なシナリオを見てみましょう。

  • オンライン トランザクション処理 (OLTP)

OLTP はトランザクション指向のプロセスです。単一のトランザクションのデータ量は少ないですが、結果は非常に短時間で提供される必要があります。典型的なシナリオとしては、ショッピング、支払い、送金などが挙げられます。

  • オンライン分析処理 (OLAP)

OLAP シナリオは通常、大規模なデータ セットの計算に基づいています。一般的なシナリオとしては、個人の年次請求書や企業の財務諸表の作成などがあります。

OLTP の特徴は、書き込みが多く読み取りが少ないこと、レイテンシが低いこと、同時実行性が高いことです。では、OLTP シナリオでは、データベース + 分散にはどのような特性があるのでしょうか?

特徴:

  • 書き込みが多く読み取りが少ないシナリオでは非常に強力です。
  • 低遅延応答。
  • 高い同時実行性をサポートします。
  • 大容量ストレージをサポートします。
  • 高い信頼性。

3. 10 分散データベース

3.1 PingCAPのTiDB

オープンソース + 優れたコミュニティ運営、非常に高い人気。

定義: オンライン トランザクション処理とオンライン分析処理 (HTAP) の両方をサポートするハイブリッド分散データベース製品です。水平拡張または縮小、金融グレードの高可用性、リアルタイム HTAP、クラウドネイティブ分散データベース、MySQL 5.7 プロトコルおよび MySQL エコシステムとの互換性などの重要な機能を備えています。目標は、ユーザーにワンストップの OLTP (オンライン トランザクション処理)、OLAP (オンライン分析処理)、および HTAP ソリューションを提供することです。 TiDB は、高可用性、強力な一貫性の要件、大規模なデータ スケールなどのさまざまなアプリケーション シナリオに適しています。

TiDB アーキテクチャ図

TIDB は、次の 3 つの役割を持つ階層型アーキテクチャを使用します。

  • TIDB: SQL エンジンとして。
  • TiKV: 基盤となる分散キー値ストレージとして。
  • PD: メタデータ管理とグローバル クロックを担当します。

TiDB派生プロジェクト:

  • Ti-Binlog と Ti-CDC はデータのエクスポートをサポートしています。
  • Ti-Operator を使用すると、コンテナ クラウドのデプロイが容易になります。
  • Chaos Mesh はカオスエンジニアリングをサポートします。

デメリット: グローバル展開をサポートしていないため、地域をまたがる大規模なクラスター アプリケーションには障害が生じます。

3.2 Googleのスパナー

Spanner は、Google が開発した、スケーラブルでマルチバージョン、グローバルに分散され、同期的に複製されたデータベースです。外部的に一貫性のある分散トランザクションをサポートします。

Spanner アーキテクチャ (Google 論文より)

F1は主にSQLエンジンとして使用されます

Spanner は主に、トランザクションの一貫性、レプリケーション メカニズム、スケーラブルなストレージなどを担当します。

Spanner アーキテクチャのコア処理モジュールは Spanserver です。

Spanner アーキテクチャ (Google 論文より)

Spanserver のコア作業は、次の 3 つの部分で構成されています。

Paxos プロトコルに基づくデータ複製。 Paxos プロトコルについては、以前私が書いた記事「三国志を使って分散アルゴリズムについて語る、楽ですよね?」をお読みください。

タブレットベースのシャーディング管理。

2PC に基づくトランザクション一貫性管理。 2PC プロトコルの詳細については、以前書いた記事「分散理論を太極拳で説明すると、すごく気持ちいい!」を参照してください。

2017 年に、F1 と Spanner は分離され、結びつきがなくなりました。原則は次のとおりです。

Google Paperより

3.3 コックローチDB

CockroachDB は、スケーラブルで、地理位置情報とトランザクションに対応したデータ ストレージ システムです。

なぜゴキブリと呼ばれるのでしょうか?

このデータベース内の損傷したノードの数が総数の半分を超えない限り、クラスターは正常に動作し、非常に強力な活力を持ちます。

一貫性は、Raft コンセンサス アルゴリズムを使用する分散コンセンサス アルゴリズム インスタンスを規制することによって保証されます。すべての一貫した状態は RocksDB に存在します。

Cockroach は分散 SQL データベースです。主な設計目標は、その名前が示すように、スケーラビリティ、強力な一貫性、および存続可能性です。 Cockroach は、最小限のダウンタイムで、人間の介入なしに、ディスク、ホスト、ラック、さらにはデータセンターの災害に耐えることを目指しています。 Cockroach ノードはピアツーピアであり、設計目標の 1 つは、最小限の構成で依存関係のない分散型ピアツーピア ノードを展開することです。中国語コミュニティアドレス: cockroachdb-cn。

CockroachDB は、スナップショット分離 (SI) とシーケンシャル スナップショット分離 (SSI) セマンティクスの 2 つの異なるトランザクション機能を提供します。後者はデフォルトの分離レベルです。

CockroachDB は、マルチバージョン値のストレージを主な機能として備え、ACID トランザクションをサポートする分散 K/V データ ウェアハウスです。主な設計目標は、ゴキブリの名前からもわかるように、全体的な一貫性と信頼性です。 Cockroach Database は、ディスク、物理マシン、ラック、さらにはデータ センターの障害が発生した場合でも、最小限の遅延でサービスの中断に対処できます。障害プロセス全体に人間の介入は必要ありません。 Cockroach ノードはバランスが取れており、最小限の構成で均質 (バイナリ パッケージが 1 つだけ) になるように設計されています。

CockroachDB、TiDB、YugabyteDB はすべて、その設計が Spanner に触発されたと公に主張しているため、同型製品であると見なされることがよくあります。 CockroachDB と TiDB はよく比較されます。

違い:

  • CockroachDB は標準の P2P アーキテクチャを使用します。損傷したノードの数が総数の半分を超えない限り、クラスターは正常に動作し続けます。
  • CockroachDB は、グローバルな物理範囲にわたってデータの一貫性を実現するハイブリッド論理クロック (HLC) を使用するため、グローバル展開をサポートします。
  • 異なるシャード管理メカニズム。

3.4 ユガバイトDB

グローバル展開のサポート、ハイブリッド論理クロック (HLC)、Percolator ベースのトランザクション モデル、PostgreSQL プロトコルとの互換性など、アーキテクチャの面で CockroachDB と多くの類似点があります。

類似性が非常に高いため、YugabyteDB と CockroachDB 間の競争は非常に熾烈です。

Yugabyte は、クエリ層とストレージ層の 2 層アーキテクチャを使用します。ただし、このアーキテクチャは論理的なものにすぎません。展開構造では、両方のレイヤーが TServer プロセス内に配置されます。これは TiDB とは異なります。

Yugabyte のクエリ レイヤーは、SQL API と CQL API の両方をサポートしています。 CQL は Cassandra と互換性のある方言構文であり、ドキュメント データベースのストレージ モデルに対応しています。一方、SQL API は PostgresQL に直接基づいており、PG 構文と比較的互換性があります。

Yugabyte のストレージ層は本物です。 TServer はタブレットの保存を担当します。各タブレットは Raft グループに対応し、高可用性を確保するために 3 つの異なるノードに分散されます。マスターは、タブレットの位置情報だけでなく、テーブル構造などの情報も含むメタデータの管理を担当します。マスター自体も高可用性を実現するために Raft に依存しています。

YugabyteDB アーキテクチャ

3.5 アリババオーシャンベース

OceanBase は、Ant Group が独自に開発し、2010 年に設立された金融グレードの分散リレーショナル データベースです。OceanBase は、強力なデータ一貫性、高可用性、高パフォーマンス、オンライン拡張、SQL 標準および主流のリレーショナル データベースとの高い互換性、低コストなどの特徴を備えています。

3.6 テンセントのTDSQL

TDSQL ノードはすべて MySQL を使用します。分散クラスタアーキテクチャを採用しています(下図参照)。このクラスター アーキテクチャは柔軟性が高く、ノード間の通信メカニズムが簡素化され、ハードウェア要件も簡素化されます。これは、TDSQL のリレーショナルインスタンス、分散インスタンス、分析インスタンスを同じクラスターに展開できるだけでなく、単純な x86 サーバーでもミニコンピュータや共有ストレージと同じくらい安定して信頼性の高いデータベースを構築できることも意味します。

TDSLアーキテクチャ

3.7 ZTEのGoldenDB

GoldenDB は、国内の銀行業界で使用されているほぼ最大の分散データベースです。 TDSQL と同様に、データ ノードには MySQL を使用しますが、グローバル クロック ノードを追加することで、標準的な PGXC アーキテクチャになります。

3.8 テンセントのTBase

TBase は、オープンソースの PostgreSQL をベースに Tencent データ プラットフォーム チームによって開発された、エンタープライズ レベルの分散 HTAP データベース管理システムです。

  • 高性能でスケーラブルな分散トランザクション機能を備え、RC と RR の 2 つの分離レベルをサポートします。
  • セキュリティ、管理、監査の権限分離システムを通じて、包括的なデータセキュリティ保証メカニズムを提供します。
  • 高性能パーティション テーブルをサポートし、データ取得の効率を 2 倍にします。
  • SQL は、2003 標準、PostgreSQL 構文、一般的な Oracle 関数とデータ型、ウィンドウ関数などと互換性があります。
  • 大規模販売業者と小規模販売業者のデータ分離、ホット データとコールド データの分離など、効率的なデータ管理機能を提供します。

クラスターにはそれぞれ異なる機能を持つ 3 種類のノードがあり、ネットワークを介して接続されてシステムを形成します。 3 つのノード タイプは次のとおりです。

  • **コーディネーター: **コーディネーター ノードは、外部インターフェイスを提供し、データの分散とクエリ計画を担当します。複数のノードが均等に配置され、各ノードは同じデータベース ビューと、CN ストレージ システムのグローバル メタデータを提供します。
  • **データノード:**このノードに関連するメタデータを処理して保存します。各ノードにはデータのシャードも保存されます。機能的には、DN ノードは実行コーディネーター ノードによって配布された実行要求を完了する役割を担います。
  • GTM: グローバル トランザクション マネージャー。クラスターのトランザクション情報と、シーケンスなどのクラスターのグローバル オブジェクトの管理を担当します。 GTM は他の機能は提供しません。

3.9 ボルトDB

VoltDB 公式サイトによる紹介: VoltDB は世界最速のインメモリ データベースです。従来のリレーショナル データベースの強力な一貫性要件を継承し、インターネット クラウドに展開する機能と分散データベースの水平拡張機能を提供します。 VoltDB は、データベース全体をメモリに保存することで、データとログに対する大量のディスク アクセス操作を排除します。シングルスレッド アプローチにより、ディスク ロックとレコード ロックが排除されます。データベース シャーディング テクノロジーを通じて高同時実行リクエストをサポートし、分散クラスターを通じてデータベースの水平拡張をサポートします。クエリ速度は従来のデータベースの 100 倍以上です。

2019 年に正式にクローズドソースとなり、純粋な商用製品となりました。同時に、VoltDB は中国で完全なサービスサポートシステムを確立しておらず、それがそのプロモーションに大きな影響を与えています。

3.10 セコイアDB

SequoiaDB は、高同時実行オンライン トランザクション シナリオ向けに、高性能、信頼性、安定性、無制限の水平スケーラビリティを備えたデータベース サービスを提供する、オープン ソースの金融グレード分散リレーショナル データベースです。

論理アーキテクチャ

ユーザーは、さまざまな上位アプリケーションのニーズを満たすために、SequoiaDB でさまざまな種類のデータベース インスタンスを作成できます。

SequoiaDB は、MySQL、PostgreSQL、SparkSQL、MariaDB の 4 つのリレーショナル データベース インスタンス、MongoDB のような JSON ドキュメント データベース インスタンス、S3 オブジェクト ストレージと POSIX ファイル システムの非構造化データ インスタンスをサポートしています。

7つの異なるインスタンスタイプをサポート

SequoiaDB ストレージ エンジンは分散アーキテクチャを採用しています。クラスター内の各ノードは独立したプロセスであり、ノードは TCP/IP プロトコルを使用して相互に通信します。

同じオペレーティング システムを複数のノードに展開することができ、ノードを区別するために異なるポートが使用されます。

データベース ストレージ エンジンの論理アーキテクチャ

さて、分散データベースについては、分散データベースの使用経験がある場合は、ぜひメッセージを残してください〜

参考文献:

https://docs.pingcap.com/zh/tidb/stable

http://vldb.org/pvldb/vol11/p1835-samwel.pdf

http://ericfu.me/yugabyte-db-introduction/

https://blog.csdn.net/duan_zhihua/article/details/88549173

https://www.voltdb.com/

https://www.zhihu.com/question/24225007/answer/1707736658

https://www.zhihu.com/question/24225007/answer/1326259742

https://time.geekbang.org/column/article/296558

この記事はWeChatの公開アカウント「Wukong Chats about Architecture」から転載したものです。下のQRコードからフォローできます。この記事を転載する場合はWukong Chat Architecture公式アカウントまでご連絡ください。

<<:  中国情報通信研究院が分散クラウドとクラウドエッジ連携標準システムをリリース

>>:  配布中の地域的な問題により、300ラウンドの戦いに至った

推薦する

Ceph オブジェクト ストレージに基づく階層型ハイブリッド クラウド ストレージ ソリューション

パブリッククラウドストレージサービスは簡単に拡張できます。ユーザーは、ストレージ容量のニーズに応じて...

クラウド コンピューティングの「新たな黄金の 10 年」で勝利するのは誰か?

「ポスト疫病時代」では、クラウドコンピューティングのエネルギーが加速的に解放されています。データによ...

中小企業がオンラインマーケティングを成功させるにはどうすればよいでしょうか?

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス企業が社会の進歩に追いつ...

毎日約1万のタオバオオンラインストアが閉鎖:違反に対する苦情と罰金は高い

タオバオの若い販売員が過労で亡くなったことは、オンラインストアの起業家が直面している困難を反映してい...

早速始めましょう。この記事では、クラウドネイティブ時代のコンテナセキュリティについて理解を深めていきます。

国内需要はセキュリティに配慮するどころか、コンテナ化にはまだまだ遠いと言われている。音は大きいですが...

AWS NAT ゲートウェイの使用開始

AWS(Amazon Web Services)のクラウドコンピューティング分野において、NAT ゲ...

成功する最適化担当者として欠かせないスキルについて簡単に説明します

インターネットの初期の頃は、最適化は比較的神秘的な職業だと思っていたかもしれませんが、インターネット...

Kubernetes Gitopsを段階的に実装する方法を説明します

導入コンテナ化は、アプリケーションの管理と展開に対する一般的なアプローチとなり、さまざまな環境にわた...

Baiduの外部リンクツールからMeileleを最適化する方法

2012年に1年間放浪しましたが、何も得られませんでした。 2 日前に、2013 年に行うことの 1...

ネットワークマーケティングの正確な方法

インターネットの発展に伴い、オンラインマーケティングはますます人気が高まっています。今日では、オンラ...

NodeServ - 年間 13 ドル / 512M メモリ / 100G ハードディスク / 1T トラフィック / G ポート

NodeServさん、このVPS事業は2年以上もやっているんですよね?フロリダのコンピュータールーム...

クラウドネイティブアーキテクチャがデジタル変革に重要な理由

ビジネス アプリケーションは、クラウドで実行するように特別に構築され、クラウド コンピューティングの...

タイトルの掲載に影響を与える3つのタイトル作成テクニックについて簡単に説明します。

タイトルは図書館の本の背表紙のようなもので、読者がその本を手に取るか、記事をクリックするかを決定しま...

Zhihu: 有料の知識か広告か?

最近、Duode は深セン証券取引所の成長企業市場に目論見書を提出しました。興味深いことに、この知識...

Huaban.comの劉平洋氏:種子の利用者は重要だが、石炭、水、電気の方がもっと重要

起業家:劉平洋スタートアッププロジェクト: Huaban.comスタートアップ場所:杭州開始時期: ...