【新卒 / 中途採用】サーバー / クラウドエンジニア 募集中!【大阪】

【新卒 / 中途採用】サーバー / クラウドエンジニア 募集中!【大阪】

【導入実績300社以上】AWS 構築・運用保守サービス

【導入実績300社以上】AWS 構築・運用保守サービス

【ECサイト構築】Shopify カスタムアプリ開発サービス

【ECサイト構築】Shopify カスタムアプリ開発サービス

【100URLの登録が0円】Webサイト監視サービス「Appmill」

【100URLの登録が0円】Webサイト監視サービス「Appmill」

【音声アプリ開発】Twilio アプリ開発サービス』

【音声アプリ開発】Twilio アプリ開発サービス』

【メッセージアプリ】LINE アプリ開発サービス

【メッセージアプリ】LINE アプリ開発サービス

【対談記事】「やっぱクラウド移設っていいですよね」マイネット × ビヨンド エンジニア対談

【対談記事】「やっぱクラウド移設っていいですよね」マイネット × ビヨンド エンジニア対談

ビヨンド公式YouTubeチャンネル「びよまるチャンネル」

ビヨンド公式YouTubeチャンネル「びよまるチャンネル」

【MySQL互換】分散SQLデータベース「TiDB」について【OSS】


技術営業部の大原です。

今回は オープンソース(OSS)の分散SQLデータベース「TiDB(タイデービー)」について記載します。

TiDB の概要

TiDB は オープンソースデベロッパーである PingCAP社 によって開発され、現在では PingCAP社 が所属する CNCF(Cloud Native Computing Foundation)のコミュニティによって管理されています。

■ TiDB は HTAP(Hybrid Transactional and Analytical Processing)のワークロードをサポートする、オープンソースのNewSQLデータベースです。

■ 「MySQL」と互換性があり、水平方向のスケーラビリティ・強力な一貫性・高可用性を備えています。OLTP(オンライントランザクション処理)・OLAP(オンライン分析処理)・HTAPサービスをカバーし、高可用性と大規模データとの強力な一貫性を必要とする、様々なユースケースに適しています。

■ 日本企業での導入事例として、QR決済サービスを展開するPayPay社のインフラで利用されています。

◇ 引用:トランザクションを支える決済プラットフォームエンジニア

TiDB の機能

● 水平分散のスケールアウト / スケールイン

・コンピューティングをストレージから分離するTiDBアーキテクチャ設計により、必要に応じて、コンピューティング / ストレージの容量を、オンラインで個別にスケールアウト / スケールインできます。

● マルチレプリカ と高可用性

・複数のレプリカにデータ保存されたレプリカは、Multi-Raftプロトコルを使用してトランザクションログを取得します。

・トランザクションは、データが大部分のレプリカに正常に書き込まれた場合にのみコミットするため、これにより、少数のレプリカがダウンした場合の強力な一貫性と可用性が保証されます。

・様々な災害耐性レベルの要件を満たすために、必要に応じたリージョンとレプリカの数量を構成できます。

● リアルタイムHTAP

・TiDBは、行ベースのストレージエンジンであるTiKVと、列型ストレージエンジンである TiFlashの2つのストレージエンジンを提供します。

・TiFlashは、Multi-Raft Learnerプロトコルを使用して、TiKVからのデータをリアルタイムで複製し、TiKV行ベースのストレージエンジンとTiFlash列型ストレージエンジン間のデータの一貫性を確保します。

・TiKVとTiFlashは、HTAPリソース分離の問題を解決するために、必要に応じて異なるマシンに展開できます。

● クラウドネイティブの分散データベース

・TiDB は クラウド向けに設計された分散データベースであり、クラウドプラットフォームに柔軟なスケーラビリティ・信頼性・セキュリティを提供し、ユーザーは ワークロードの要件に合わせてTiDBを柔軟にスケーリングできます。

・TiDBでは 各データに少なくとも3つのレプリカがあり、データセンター全体の停止を許容するために、異なるクラウド可用性ゾーンでスケジュールすることができます。

TiDB Operator は、Kubernetes での TiDB の管理を支援し、TiDBクラスターの運用に関連するタスクを自動化するため、管理対象のKubernetesを提供するクラウドに TiDB を簡単にデプロイできます。

・TiDB自体をフルマネージドで管理される「TiDB Cloud」のサービスでは、クラウド上で数回クリックしていくだけで、TiDBのクラスターをデプロイして実行できます。
※ TiDB Cloud は、AWS や Azure・GCPなどのクラウドプラットフォーム内で展開される、マネージドサービス(有料サービス) の一つです。

● MySQL5.7プロトコル 及び MySQLエコシステムと互換性

・TiDBは MySQL 5.7プロトコル・MySQLの一般的な機能・MySQLエコシステムとの互換性があるので、既存のアプリケーションをTiDBに移行する際に、多くのコードを変更する必要はなく、少量のコードを変更するだけで済みます。

・TiDBは アプリケーションデータをTiDBへ移行するのに役立つ一連のデータ移行ツール  もあります。

TiDB のアーキテクチャ

◇ 引用:TiDB Architecture

分散データベースとして、TiDBは複数のコンポーネントで構成されるように設計されています。これらのコンポーネントは相互に通信し、完全なTiDBシステムを形成します。

● TiDBサーバー

・TiDBサーバーは、MySQLプロトコルの接続エンドポイントを外部に公開するステートレスSQLレイヤーです。TiDBサーバーはSQL要求を受信し、SQLの解析と最適化を実行し、最終的に分散実行プランを生成します。

・水平方向にスケーラブルであり、Linux Virtual Server(LVS)/ HAProxy / F5などの負荷分散コンポーネントを介して外部への統合インターフェイスを提供します。データは保存されず、コンピューティングとSQL分析専用であり、実際のデータ読み取り要求をTiKVノード(またはTiFlashノード)に送信します。

● PD(Placement Driver) サーバー

・PDサーバーは少なくとも3つのノードで構成された、クラスター全体のメタデータ管理の役割の担うコンポーネントです。

・すべての単一TiKVノードのリアルタイムデータ分散のメタデータとTiDBクラスター全体のトポロジー構造を格納し、TiDBダッシュボード管理UIを提供し、分散トランザクションにトランザクションIDを割り当てます。

・PDサーバーは、クラスターのメタデータを格納するだけでなく、TiKVノードによってリアルタイムで報告されたデータ分散状態に従って特定のTiKVノードにデータスケジューリングコマンドを送信します。

● ストレージサーバー

◇ TiKVサーバー

・TiKVは、分散型トランザクションKey-Valueストレージエンジンで、TiKVサーバーはデータ保存の役割を担います。

・各リージョンには、StartKeyからEndKeyまでの左閉と右開の間隔である特定のキー範囲のデータが格納され、各TiKVノードには複数のリージョンが存在します。TiKV APIは、キーと値のペアレベルで分散トランザクションにネイティブサポートを提供し、デフォルトでスナップショット分離レベルの分離をサポートします。

・SQLステートメントを処理した後、TiDBサーバーはSQL実行プランをTiKVAPIへの実際の呼び出しに変換します。データはTiKVに保存され、TiKVのすべてのデータは、複数のレプリカ(デフォルトでは3つのレプリカ)で自動的に維持されるため、TiKVはネイティブの高可用性を備え、自動フェイルオーバーをサポートします。

◇ TiFlashサーバー

・TiFlashサーバーは特別なタイプのストレージサーバーです。通常のTiKVノードとは異なり、TiFlashはデータを列ごとに保存し、主に分析処理を高速化するように設計されています。

まとめ

OSS・水平分散型・MySQL互換 という特徴をもった可用性が高いサービスなので、ソーシャルゲーム・ECサイトなどのWebサービス用途のデータベースとして、選定の一つに加えるのも面白いかもしれません。


この記事をかいた人

About the author

大原 裕也

毎日 Google検索 で インターネットの世界を徘徊してます。