導入TiDBは、PingCAPが独自に設計・開発したオープンソースの分散リレーショナルデータベースです。水平スケーリング、金融グレードの高可用性、リアルタイムHTAP、クラウドネイティブ分散データベース機能、MySQL 5.7プロトコルおよびMySQLエコシステムとの互換性を特徴とする、ハイブリッドトランザクションおよび分析処理(HTAP)を同時にサポートする統合型分散データベース製品です。OLTP(オンライントランザクション処理)、OLAP(オンライン分析処理)、HTAPをワンストップで実現するソリューションをユーザーに提供することを目指しています。TiDBは、高可用性、強力な一貫性、大容量データを必要とする様々なアプリケーションシナリオに適しています。 特徴
従来のスタンドアロン データベースと比較して、TiDB には次の利点があります。
シーン
周知のとおり、金融業界ではデータの一貫性と信頼性、システムの高可用性、拡張性、そして災害復旧に対する高い要件が求められています。従来のソリューションでは、同じ都市にある2つのデータセンターでサービスを提供し、別の場所に別のデータセンターを開設してデータの災害復旧機能を提供するものの、サービスは提供していませんでした。このソリューションには、リソース使用率の低さ、メンテナンスコストの高さ、そしてRTO(目標復旧時間)とRPO(目標復旧時点)が企業の期待に真に応えられないという欠点がありました。TiDBは、マルチレプリカ+マルチRaftプロトコルを用いて、異なるデータセンター、ラック、マシンにデータを分散させます。一部のマシンに障害が発生した場合、システムは自動的に切り替えを行い、RTO <= 30秒、RPO = 0を実現します。
ビジネスの急速な発展に伴い、データは爆発的に増加しています。従来の単一マシンデータベースでは、この爆発的な増加に伴う容量要件を満たすことができません。実現可能な解決策としては、データベースシャーディングやテーブルパーティショニング機能を備えたミドルウェア製品の使用、NewSQLデータベースへの置き換え、ハイエンドストレージデバイスの使用などが挙げられます。これらの中で、TiDBなどのNewSQLデータベースは、最も優れたコストパフォーマンスを提供します。TiDBは、コンピューティングとストレージを分離したアーキテクチャを採用しており、コンピューティングとストレージを個別にスケールアップおよびスケールダウンできます。最大512のコンピューティングノードをサポートし、各ノードは最大1000の同時接続をサポートし、最大クラスター容量はPBです。
5G、IoT、AIの急速な発展に伴い、企業が生成するデータはますます膨大になり、数百テラバイト(TB)、さらにはペタバイト(PB)に達する可能性があります。従来のソリューションでは、オンライントランザクションの処理にはOLTPデータベースを使用し、分析のためにデータをOLAPデータベースに同期させるETLツールが用いられてきました。しかし、このアプローチはストレージコストが高く、リアルタイム性が低いという問題がありました。TiDBバージョン4.0では、列指向ストレージエンジンTiFlashと行指向ストレージエンジンTiKVを組み合わせることで、真のHTAPデータベースを構築できます。ストレージコストをわずかに増加させるだけで、同一システム内でオンライントランザクション処理とリアルタイムデータ分析を実現し、企業のコストを大幅に削減します。
現在、多くの企業の業務データは、統一された集約が行われていないため、さまざまなシステムに散在しています。ビジネスが成長するにつれて、企業の意思決定者はタイムリーな意思決定を行うために、ビジネス全体の状況を把握する必要があります。そのため、さまざまなシステムに散在するデータを単一のシステムに集約し、二次処理を行ってT+0またはT+1レポートを生成する必要があります。従来の一般的なソリューションはETL + Hadoopを使用することですが、Hadoopシステムは複雑すぎて、運用、保守、およびストレージのコストが高すぎてユーザーのニーズを満たせません。Hadoopと比較して、TiDBははるかにシンプルです。企業はETLツールまたはTiDBの同期ツールを使用してデータをTiDBに同期し、SQLを使用してTiDBで直接レポートを生成できます。 建築TiDB分散データベースのカーネル設計では、全体的なアーキテクチャを複数のモジュールに分割し、それらが相互に通信することで完全なTiDBシステムを形成します。対応するアーキテクチャ図は以下のとおりです。
ストレージTiKVはデータを直接ディスクに書き込むのではなく、RocksDBに保存し、RocksDBが実際のデータの永続化を処理します。これは、単一マシンストレージエンジンの開発、特に高性能なエンジンの開発には、様々な綿密な最適化が必要となるため、非常に手間がかかるためです。Facebookがオープンソース化した優れた単一マシンKVストレージエンジンであるRocksDBは、TiKVの単一マシンエンジンに対する様々な要件を満たすことができます。簡単に言えば、RocksDBは単一マシン永続キーバリューマップと考えることができます。 TiKVはデータレプリケーションにRaftを使用します。すべてのデータ変更はRaftのログエントリとして記録されます。Raftのログレプリケーション機能により、データはレプリケーショングループ内のすべてのノードに安全かつ確実に同期されます。ただし、実際の書き込み操作では、Raftプロトコルに従って、データが過半数のノードに同期されている限り、正常に書き込みが完了したと安全に判断できます。 要約すると、TiKVは単一マシンのRocksDBを使用してデータをディスクに迅速に保存し、Raftを介して複数のマシンにデータを複製することで、単一マシンの障害を回避できます。データはRocksDBに直接書き込まれるのではなく、Raftインターフェースを介して書き込まれます。Raftを実装することで、TiKVは分散キーバリューストアになります。たとえ数台のマシンに障害が発生しても、ネイティブのRaftプロトコルによって自動的にレプリカが復元されるため、ビジネスオペレーションはシームレスに行えます。 取引TiDB は分散トランザクションをサポートし、楽観的トランザクション モードと悲観的トランザクション モードの両方を提供します。TiDB バージョン 3.0.8 以降では、デフォルトで悲観的トランザクション モードに設定されます。TiDB では、トランザクションを明示的に使用すること (`[BEGIN|START TRANSACTION]/COMMIT` ステートメントで定義) も暗黙的に使用することも (`SET autocommit = 1`) できます。TiDB では、ステートメント実行失敗後のアトミック ロールバックがサポートされます。ステートメントでエラーが発生した場合、変更は有効になりません。トランザクションは開いたままになり、`COMMIT` または `ROLLBACK` ステートメントが発行される前にさらに変更を加えることができます。基盤となるストレージ エンジンの制限により、TiDB では 1 行が 6 MB を超えないようにする必要があります。1 行のサイズは、行のすべての列をその型に基づいてバイト数に変換し、その結果を合計することで見積もることができます。 TiDBは楽観的トランザクションと悲観的トランザクションの両方をサポートしており、楽観的トランザクションは悲観的トランザクションの基礎となります。楽観的トランザクションは変更をプライベートメモリにキャッシュするため、TiDBは単一トランザクションのサイズを制限します。 TiDBでは、1つのトランザクションの合計サイズはデフォルトで100MBに制限されています。このデフォルト値は、設定ファイルの「txn-total-size-limit」設定オプションを使用して変更でき、最大10GBまでサポートされます。1つのトランザクションの実際のサイズ制限は、サーバー上で利用可能なメモリの残量にも依存します。トランザクション実行時、TiDBプロセスのメモリ消費量はトランザクションサイズに応じて増加し、コミットされたトランザクションのサイズの6倍以上に達する可能性があります。 バージョン4.0より前のTiDBでは、単一トランザクション内のキーと値のペアの総数が300,000個以下に制限されていました。バージョン4.0以降、この制限は解除されました。 互換性TiDBは、MySQL 5.7プロトコル、MySQL 5.7で一般的に使用される機能、および構文と高い互換性があります。MySQL 5.7エコシステムのシステムツール(PHPMyAdmin、Navicat、MySQL Workbench、mysqldump、Mydumper/Myloader)、クライアントなどはすべてTiDBと互換性があります。ただし、TiDBはまだ一部のMySQL機能をサポートしていません。これは、以下の理由が考えられます。
さらに、TiDB は MySQL レプリケーション プロトコルをサポートしていませんが、MySQL でデータを複製するための専用ツールを提供しています。
|