みなさんこんにちは、私は悟空です。 前回の記事では、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 リレーショナルの利点
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 一般的な非リレーショナルデータベース
1.2.3 非リレーショナルの利点
1.2.4 非リレーショナルの欠点
2. 分散データベース2.1 分散データベースの定義実際のところ、分散データベースの公式な定義は存在しません。これは、弊社の技術スタッフが提案した、一般的に受け入れられている用語です。 データベース分野では、製品が進化し続け、徐々に皆に認知され受け入れられるようになると、それが標準になります。たとえば、Microsoft の SQL Server データベースは他のデータベースの比較に使用されるため、SQL Server データベースが標準になります。 しかし、分散データベースは近年になって提案されたばかりです。それらはまだ比較的新しいため、参照がありません。しかし、これらの大企業の専門家がまとめた経験を通じて、分散データベースを理解することができます。 分散データベースは、分散アーキテクチャを使用して実装されたデータベースです。 2.2 分散データベースの利点流通は私がずっと研究してきたテーマです。現在、多くの一般的なテクノロジーは、マイクロサービスやメッセージ キューなどの分散アーキテクチャを使用しています。 では、なぜ分散アーキテクチャを使用するのでしょうか?簡単に言えば、複数のマシンを使用して、単一のマシンの性能を水平拡張することです。もう 1 つの非常に重要な理由は、複数マシンのバックアップや災害復旧などの配布の信頼性です。 データベースのパフォーマンスを向上させ、信頼性を確保する必要があるでしょうか?答えはイエスです。 分散データベースを使用している大企業はどれですか? アリババは毎年11月11日に自社の取引実績を誇示することを好んでおり、分散型データベースのOceanBaseはこれに欠かせない役割を果たしてきました。テンセント、バイトダンス、美団などの大手企業も分散データベースの利用を開始しており、大手銀行も分散データベースを導入しています。 したがって、分散データベースがトレンドになっています。ビジネス シナリオで高いパフォーマンスと高い信頼性が求められる場合は、分散アーキテクチャでのデータベースの使用を検討できます。 2.3 分散データベースの特徴まず、データベースがトランザクションの種類によって分割される 2 つの主要なシナリオを見てみましょう。
OLTP はトランザクション指向のプロセスです。単一のトランザクションのデータ量は少ないですが、結果は非常に短時間で提供される必要があります。典型的なシナリオとしては、ショッピング、支払い、送金などが挙げられます。
OLAP シナリオは通常、大規模なデータ セットの計算に基づいています。一般的なシナリオとしては、個人の年次請求書や企業の財務諸表の作成などがあります。 OLTP の特徴は、書き込みが多く読み取りが少ないこと、レイテンシが低いこと、同時実行性が高いことです。では、OLTP シナリオでは、データベース + 分散にはどのような特性があるのでしょうか? 特徴:
3. 10 分散データベース3.1 PingCAPのTiDBオープンソース + 優れたコミュニティ運営、非常に高い人気。 定義: オンライン トランザクション処理とオンライン分析処理 (HTAP) の両方をサポートするハイブリッド分散データベース製品です。水平拡張または縮小、金融グレードの高可用性、リアルタイム HTAP、クラウドネイティブ分散データベース、MySQL 5.7 プロトコルおよび MySQL エコシステムとの互換性などの重要な機能を備えています。目標は、ユーザーにワンストップの OLTP (オンライン トランザクション処理)、OLAP (オンライン分析処理)、および HTAP ソリューションを提供することです。 TiDB は、高可用性、強力な一貫性の要件、大規模なデータ スケールなどのさまざまなアプリケーション シナリオに適しています。 TiDB アーキテクチャ図 TIDB は、次の 3 つの役割を持つ階層型アーキテクチャを使用します。
TiDB派生プロジェクト:
デメリット: グローバル展開をサポートしていないため、地域をまたがる大規模なクラスター アプリケーションには障害が生じます。 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 コックローチDBCockroachDB は、スケーラブルで、地理位置情報とトランザクションに対応したデータ ストレージ システムです。 なぜゴキブリと呼ばれるのでしょうか? このデータベース内の損傷したノードの数が総数の半分を超えない限り、クラスターは正常に動作し、非常に強力な活力を持ちます。 一貫性は、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 はよく比較されます。 違い:
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 テンセントのTDSQLTDSQL ノードはすべて MySQL を使用します。分散クラスタアーキテクチャを採用しています(下図参照)。このクラスター アーキテクチャは柔軟性が高く、ノード間の通信メカニズムが簡素化され、ハードウェア要件も簡素化されます。これは、TDSQL のリレーショナルインスタンス、分散インスタンス、分析インスタンスを同じクラスターに展開できるだけでなく、単純な x86 サーバーでもミニコンピュータや共有ストレージと同じくらい安定して信頼性の高いデータベースを構築できることも意味します。 TDSLアーキテクチャ 3.7 ZTEのGoldenDBGoldenDB は、国内の銀行業界で使用されているほぼ最大の分散データベースです。 TDSQL と同様に、データ ノードには MySQL を使用しますが、グローバル クロック ノードを追加することで、標準的な PGXC アーキテクチャになります。 3.8 テンセントのTBaseTBase は、オープンソースの PostgreSQL をベースに Tencent データ プラットフォーム チームによって開発された、エンタープライズ レベルの分散 HTAP データベース管理システムです。
クラスターにはそれぞれ異なる機能を持つ 3 種類のノードがあり、ネットワークを介して接続されてシステムを形成します。 3 つのノード タイプは次のとおりです。
3.9 ボルトDBVoltDB 公式サイトによる紹介: VoltDB は世界最速のインメモリ データベースです。従来のリレーショナル データベースの強力な一貫性要件を継承し、インターネット クラウドに展開する機能と分散データベースの水平拡張機能を提供します。 VoltDB は、データベース全体をメモリに保存することで、データとログに対する大量のディスク アクセス操作を排除します。シングルスレッド アプローチにより、ディスク ロックとレコード ロックが排除されます。データベース シャーディング テクノロジーを通じて高同時実行リクエストをサポートし、分散クラスターを通じてデータベースの水平拡張をサポートします。クエリ速度は従来のデータベースの 100 倍以上です。 2019 年に正式にクローズドソースとなり、純粋な商用製品となりました。同時に、VoltDB は中国で完全なサービスサポートシステムを確立しておらず、それがそのプロモーションに大きな影響を与えています。 3.10 セコイアDBSequoiaDB は、高同時実行オンライン トランザクション シナリオ向けに、高性能、信頼性、安定性、無制限の水平スケーラビリティを備えたデータベース サービスを提供する、オープン ソースの金融グレード分散リレーショナル データベースです。 論理アーキテクチャ ユーザーは、さまざまな上位アプリケーションのニーズを満たすために、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ラウンドの戦いに至った
パブリッククラウドストレージサービスは簡単に拡張できます。ユーザーは、ストレージ容量のニーズに応じて...
「ポスト疫病時代」では、クラウドコンピューティングのエネルギーが加速的に解放されています。データによ...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス企業が社会の進歩に追いつ...
タオバオの若い販売員が過労で亡くなったことは、オンラインストアの起業家が直面している困難を反映してい...
国内需要はセキュリティに配慮するどころか、コンテナ化にはまだまだ遠いと言われている。音は大きいですが...
AWS(Amazon Web Services)のクラウドコンピューティング分野において、NAT ゲ...
インターネットの初期の頃は、最適化は比較的神秘的な職業だと思っていたかもしれませんが、インターネット...
導入コンテナ化は、アプリケーションの管理と展開に対する一般的なアプローチとなり、さまざまな環境にわた...
2012年に1年間放浪しましたが、何も得られませんでした。 2 日前に、2013 年に行うことの 1...
インターネットの発展に伴い、オンラインマーケティングはますます人気が高まっています。今日では、オンラ...
NodeServさん、このVPS事業は2年以上もやっているんですよね?フロリダのコンピュータールーム...
ビジネス アプリケーションは、クラウドで実行するように特別に構築され、クラウド コンピューティングの...
タイトルは図書館の本の背表紙のようなもので、読者がその本を手に取るか、記事をクリックするかを決定しま...
最近、Duode は深セン証券取引所の成長企業市場に目論見書を提出しました。興味深いことに、この知識...
起業家:劉平洋スタートアッププロジェクト: Huaban.comスタートアップ場所:杭州開始時期: ...