※このブログは2022年10月17日に公開された英語ブログ「Technical Paths to HTAP: Greenplum and TiDB as Examples」の拙訳です。
何十年もの間、オンライントランザクション処理 (OLTP) とオンライン分析処理 (OLAP) がデータベースインフラの基準となってきました。OLTPデータベースはトランザクションデータ処理を扱います。OLAPデータベースは、抽出、変換、ロード (ETL) を介してOLTPデータベースからインポートされたデータに基づいて分析クエリを処理します。しかし、このOLTP + ETL + OLAPソリューションは高価で複雑であり、ビジネスの成長に伴い最新のデータ分析にタイムリーにアクセスしたいという需要をなかなか満たすことができません。
ハイブリッド・トランザクション&アナリティカル・プロセッシング (HTAP) データベースは、OLTPとOLAPのワークロードを同じアーキテクチャで処理するソリューションです。HTAPはトランザクションが完了すると、ほぼ即時にデータを分析しクエリすることができ、トランザクションデータと分析データはリアルタイムで強力な一貫性を維持します。
2014年にガートナー社によってバズワードとして作られたHTAPですが、技術的な課題から当初はあまり浸透しませんでした。しかし最近になって、Greenplum、TiDB、AlloyDB、Unistoreのような最新のアーキテクチャが登場すると、HTAPは改めて注目を集めているようです。
>> Download the White Paper: Enabling Data Agility with an HTAP Database (英文) <<
この記事では、HTAPデータベースの主な技術的な道筋を説明し、それぞれの道筋に沿って代表的なデータベースを比較します。
HTAPへの技術的な道筋
HTAPデータベースは、OLTPとOLAPの両方の機能を同じデータベース上で統合したものです。技術的なアプローチとしては、OLAPデータベースでトランザクション処理機能を拡張するか、OLTPデータベースで分析処理機能を拡張するか、至ってシンプルな二択となります。
OLAPから拡張されたHTAP
OLAPデータベースは、1回の書き込みで複数の読み取りを処理し、クエリのスキャン機能に重点を置いています。また、超並列処理 (MPP) やベクトル・コンピューティングなどの主要なテクノロジーも使用されています。しかし、高性能なトランザクションを処理するには、行データへの頻繁かつ高速なアクセスが必要なため、列型ストレージエンジンはそのような目的には設計されていません。列ベースのOLAPデータベースがHTAP機能を提供するためには、データベースは列の一括処理と、単一の行に対する高度に同時的な変更とクエリの両方をサポートする必要があります。
OLTPから拡張されたHTAP
OLTPデータベースはトランザクション処理のために設計されています。行ストレージ、高い並行性制御、ディザスタリカバリなどの技術に支えられ、特定のデータ行をいかに素早く見つけて書き込むかに重点を置き、小さなデータを同時にバッチで書き込む処理を得意としています。しかし、行ベースのOLTPデータベースで高性能な分析クエリを実行するには、データベースが膨大なデータや特定のフィールドを対象とした集計や関連付けなど、複雑な計算をサポートする必要があります。行ストレージエンジンはこのために設計されていません。OLTPデータベースをHTAPデータベースに変換する際の最大の課題は、いかにして大量の行ベースのデータに対する複雑なクエリを処理するかということです。
各道筋ごとの代表的なHTAPデータベース
HTAPの両方の技術的な道筋に沿って、製品の数は増えています。GreenplumとTiDBはその代表的な製品です。
OLAP拡張HTAPの例:Greenplum
Greenplumはシェアード・ナッシング・アーキテクチャで構築されたMPPのOLAPデータベースです。
Greenplum 6.0は、マルチフォーマットストレージによってOLTP機能を強化しました。
Greenplumは、コールドデータ、ホットデータそれぞれに対して、複数のストレージフォーマットのサポートを提供しています。また、論理的にパーティショニングされたテーブルを通して、エンドユーザーにシングルテーブルアクセスのインターフェイスを提供します。しかし、OLTPのパフォーマンス向上のために、頻繁に変更する必要のあるデータは行ストレージに格納されます。ある意味、これは行ストレージでフォーマットされたデータが列ストレージに変換される前の分析パフォーマンスを弱めることにもなります。
Greenplumにおける複数のストレージフォーマット
OLTP拡張HTAPの例:TiDB
MPP技術を使用していることにより、クラスタはスケールアップ時にデータを再分配する必要があります。データ量が大きいと、この処理に時間がかかることがあります。
TiDBはオープンソースの分散SQLデータベースで、強力な一貫性、分散トランザクション、水平スケーリング、MySQLとの互換性を備えています。
TiDB 5.0より前は、典型的なOLTPデータベースでしたが、TiFlashエンジンを導入し、完全にHTAPデータベースに生まれ変わりました。TiFlashはTiDBの行ストレージであるTiKVを列ストレージとして拡張したものです。TiFlashは優れた分離レベルを提供し、強力な一貫性を保証します。
TiDBはRaftプロトコルを拡張し、行フォーマットのトランザクションデータを列フォーマットに変換します。TiFlashに格納することで、トランザクションデータに対する高速な分析クエリをサポートします。TiDBはOLAPとOLTPを同時に処理することができ、データは行フォーマットと列フォーマットの両方で利用可能です。Greenplumとは異なり、ホットデータとコールドデータに対する特別な処理はありません。そのため、すべてのデータに対するパフォーマンスは一貫しています。しかし、TiDBのHTAP機能による代償としては、より多くのストレージが必要になることが挙げられます。
TiDBのHTAPアーキテクチャ
さらに、TiDBはRaftベースの一貫性プロトコルにより、数百ノードまでスケールアップすることが可能です。スケーリングプロセスの間、システムは自動的にデータを再分配し、サービスは継続状態を維持します。
GreenplumとTiDBの比較
以下の表は、GreenplumとTiDBの主な機能をまとめたものです。
GreenPlum | TiDB | |
適用シナリオ | ヘビーOLAP + ライトOLTP | ヘビーOLTP + ライトOLAP |
Database as a Serviceの提供 | いいえ | はい |
オープンソース | はい | はい |
スケーラビリティ | 中くらい | 高い |
スケールの容易さ | いいえ | はい |
SQL互換 | PostgreSQL | MySQL |
ストレージ費用 | 安い | 高い |
分析性能 (ホットデータ) | 低い | 高い |
分析性能 (コールドデータ) | 高い | 高い |
GreenplumとTiDB、そしてそれぞれの技術的な道筋を比較することで、どちらにも長所と短所があることがわかります。
GreenplumのHTAPは、主にオンライン分析が中心となる準リアルタイムのデータウェアハウスと分析に適しています。これには以下が含まれます。
- 準リアルタイムのデータ挿入と更新を必要とする複雑なデータ分析と処理
- ホットデータ分析の需要が高くなく、コールドデータのための複雑なデータ分析と処理
TiDBは、オペレーショナルデータのリアルタイム分析クエリに適しています。これには以下が含まれます。
- 増大する大量のデータと高速クエリによる高同時OLTPオペレーション
- OLTP事業に影響を与えることなく、オペレーショナルデータをリアルタイムで分析
まとめ
HTAPデータベースは、従来のOLTPデータベースやOLAPデータベースが単独でワークロードを処理するのが極めて困難である場合に必要となります。OLTPからHTAP、OLAPからHTAPといった技術的な道筋にかかわらず、TiDBやGreenplumのようなHTAPデータベースの増加は、デジタルトランスフォーメーション時代において、さらなる選択肢を提供します。この2つを組み合わせることで、ユーザーは急成長する複雑なビジネス・ワークロードに常に対応できるようになるのです。
TiDBを体験するには、無料サインアップよりTiDB Serverlessをお試しください。日本語ドキュメントのTiDBクイックスタートガイド、または無料オンライントレーニングのご利用をお勧めします。ご不明な点などございましたら、お問い合わせフォームよりご連絡ください。 また、GitHubにて問題を報告することもできます。
TiDB Cloud Dedicated
TiDB Cloudのエンタープライズ版。
専用VPC上に構築された専有DBaaSでAWSとGoogle Cloudで利用可能。
TiDB Cloud Serverless
TiDB Cloudのライト版。
TiDBの機能をフルマネージド環境で使用でき無料かつお客様の裁量で利用開始。