【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

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

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

【圧倒的 低コスト】Oracle Cloud 構築・運用保守・監視サービス

【圧倒的 低コスト】Oracle Cloud 構築・運用保守・監視サービス

【WordPress専用】高速 クラウド / サーバー『WebSpeed』

【WordPress専用】高速 クラウド / サーバー『WebSpeed』

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【次世代】ゲーム専用データ分析エンジン『ThinkingEngine』

【次世代】ゲーム専用データ分析エンジン『ThinkingEngine』

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

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

【SNSアプリ開発】LINE カスタムアプリ開発サービス

【SNSアプリ開発】LINE カスタムアプリ開発サービス

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

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

【音声アプリ開発】Twilio カスタムアプリ開発サービス

【音声アプリ開発】Twilio カスタムアプリ開発サービス

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【取材記事】サーバーサイド・バックエンドエンジニアを募集中

【取材記事】サーバーサイド・バックエンドエンジニアを募集中

【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サービス用途のデータベースとして、選定の一つに加えるのも面白いかもしれません。

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
4
読み込み中...
4 票, 平均: 1.00 / 14
2,941
facebook twitter はてなブックマーク
【大阪 / 横浜】インフラエンジニア / サーバーサイドエンジニア 積極採用中!

【大阪 / 横浜】インフラエンジニア / サーバーサイドエンジニア 積極採用中!

この記事をかいた人

About the author

ohara

通信業界にて法人向けの NWサービス・OA機器・グループウェア などの IT製品 の導入を担当するセールスとしてキャリアをスタート。

その後、SIer系のデータセンター事業会社で、物理サーバー / ホスティングサービス の プリセールスエンジニア、SaaS型 の SFA / CRM・BtoB ECサービス など の カスタマーエンジニア を経て、現在のビヨンドへ入社。現在は毎日 Google検索 で インターネットの世界を徘徊してます。

所有資格:AWS Certified Cloud Practitioner(CLF)・簿記二級