2021年に「NewSQL」はどう進化したのか? CockroachDB、YugabyteDB、TiDBのアップデートを振り返る:詳説探究!DBエンジニアが征く(2)
本連載2022年の初めを飾る記事として2021年のNewSQL市場がどう動いたか、NewSQLベンダーの製品リリースを基に解説します。
本連載第1回では、データベース(DB)エキスパートの篠田さんとDBの「これまで」そして「これから」を対談した模様をお届けしました。その中では「NewSQL」と呼ばれる分散SQLDBの使いどころや、それらが解決しようとしている課題などを洞察しました。また分散SQLDBが米国、中国で開発され、そうしたベンダーに投資や人材が集まっている現状も言及しています。
今回は本連載2022年の初めを飾る記事として2021年のNewSQL市場はどう動いたか、各ベンダーの製品リリースを基に解説していきます。
今回対象としたDB製品は、前回の連載でも取り上げた「CockroachDB」「YugabyteDB」「TiDB」の3つとしました。
上記記事では「Google Cloud Spanner」も取り上げましたが、イベントなどでリリース内容の発表が頻繁に行われているため、今回の振り返りには含めていません。詳細はリリースノートを参照してください。
これら3つのDBは2017年以降にバージョン1.0として市場に現れ、RDB(リレーショナルデータベース)としての機能を拡充しながら、安定的な運用と性能向上のための改善をしてきています。これらのリリース内容を分析することで、分散SQLDBの方向性が見えてきます。
2021年の状況を見る前に、2020年に見られた3つのトレンドを見ておきましょう。
- 悲観的ロックのサポート……CockroachDBのSELECT FOR UPDATE対応など
- バックアップの機能改善……YugabyteDBのトランザクション対応バックアップ
- OLAP(分析系)の機能強化……TiDBにおけるTiFlashなど
大きく見れば、2020年にはまだ分散SQLDBに不足していた大きな機能追加が見られました。悲観的ロックのサポートなどは、既存のDBMS(データベースマネジメントシステム)向けに作られたアプリケーションの移行を容易にするものです。分散SQLDBではバックアップも重要で、一貫性を保証しながら効率良く取得できるように改善が進みました。NewSQLでは苦手とされてきた、分析系のワークロードにも利用できるような大きな機能開発もありました。
2021年のリリース概要
では、本題の2021年のリリース内容を概要から解説していきます。
製品名 | 2021年12月時点の最新リリース | 2021年リリースの特徴的な機能、改善内容 |
---|---|---|
CockroachDB | 21.2.2 | Bounded Staleness Readのサポート、マルチリージョン関連の改善、式インデックスやON UPDATE句などのサポート、EXPLAIN文のサポート強化 |
YugabyteDB | v2.8(CURRENT STABLE) v2.11(LATEST) |
分離レベル Read-Committedの対応、Follower Readのサポート、Point-in-Timeリカバリーのサポート、スマートクライアントドライバ |
TiDB | v5.3 | 非同期コミットの対応、Stale Readのサポート、データ配置をSQLで操作可能に、式インデックス、CTEなどのサポート |
それぞれのリリース内容で共通しているのは、分散SQLDBにおいて他トランザクションをブロックせずに、Readのスケーラビリティとレイテンシを向上させる取り組みが進んでいることです。
Stale Readなどのキーワードで紹介されるこの機能は、Google Cloud Spannerでも実装されており、グローバルに配置されたDBクラスタの性能向上で利用価値の高い機能です。式インデックスやCTEなど、RDBでは利用可能な“痒(かゆ)い所に手が届く”機能の追加も共通して見られる傾向です。
CockroachDB
それでは詳細なリリースの内容について、CockroachDBから見ていきましょう。
バージョン | リリース日 |
---|---|
v21.1.0 | 2021年5月18日 |
v21.2.0 | 2021年11月16日 |
CockroachDBの2021年における主要なリリースは上記2バージョンのみでした。しかし、リリース情報からも分かるように、2020年にリリースされたv20.2は高頻度で更新されており、開発ペースが落ちていたようには見えません。
2021年のCockroachDBといえば、2021年10月に発表された「CockroachDB Serverless」が非常に注目を集めました。同社のブログによれば、このサービスはKubernetesを用いて構築されたマルチテナントなDBクラスタであり、その際に必要だった機能がv21.1以降のバージョンで重点的に開発されていたという印象を受けます。
v21.1およびv21.2では、以下のような機能追加、改善が見られました。
- テーブルや行単位でリージョン指定が可能となるなど、マルチリージョン関連の機能改善(v21.1.0)
- EXPLAIN句のサポートにより、クエリの可観測性向上(v21.1.0)
- PostgreSQL 13のサポート(v21.1.0)
- PGDUMP/MYSQLDUMPで作成されたファイルからのデータインポートを可能に(v21.1.0)
- 式インデックス、ON UPDATE句による列値設定の機能追加(v21.2.0)
- 大規模バックアップとリストア高速化し、運用性を向上(v21.2.0)
- Bounded Staleness Readで、分散環境でもローカルレプリカにアクセスし、Readのレイテンシを改善(v21.2.0)
- トランザクションガードレールがサポートされ、ReadまたはWriteで処理可能な行数を制限可能に(v21.2.0)
YugabyteDB
次にYugabyteDBですが、同製品のリリースではマイナーバージョンが奇数のものと偶数のものでその意味合いが分かれています。公式ドキュメントにあるように、奇数リリースは最新版で開発中の機能を含みます。偶数リリースは安定版であり、サポートが提供される商用利用バージョンとなります。
これらを踏まえて、2021年にはYugabyteから下表のリリースがありました。
バージョン | リリース日 | 備考 |
---|---|---|
v2.4 | 2021年1月22日 | v2.5の安定版 |
v2.7 | 2021年5月5日 | − |
v2.6 | 2021年7月5日 | v2.7の安定版 |
v2.9 | 2021年8月31日 | − |
v2.8 | 2021年11月15日 | v2.9ベースの安定版 |
v2.11 | 2021年11月22日 | 最新版 |
後述するように、YugabyteDBはCockroachDBやTiDBと比較してSQL関連のサポート追加のリリースが多くありません。これはYugabyteDBがもともとPostgreSQLと高い互換性を持っているため、他の機能拡充を優先できるという事情があります。
2021年9月に「Yugabyte Cloud」の提供が開始されましたが、その際にも利用できる自動再シャーディングの対応など、分散SQLDBとしての運用性がさらに向上しています。
2021年のリリースでは、以下のような機能追加、改善が見られました。
- 監査ログやスロークエリログのサポート(v2.4)
- Point-in-Timeリストアをサポート(v2.7)
- Tablespaceを用いて、地理的に分散したデータ配置を効率化(v2.7)
- スマートクライアントドライバが実装され、効率的な分散SQLDBへの接続が可能に(v2.9)
- タブレット(シャード)の分割による自動再シャーディングをサポート(v2.9)
- SerializableとSnapshot Isolationに加えて、Read Committedの分離レベルをサポート(v2.11)
- Follower Readがサポートされ、グローバルに配置されたDBクラスタでもReadレイテンシを向上可能に(v2.11)
- ANALYZEがサポートされ、より適切なクエリプランの選択が可能となった(v2.11)
TiDB
TiDBのリリース内容も確認していきます。
バージョン | リリース日 |
---|---|
v5.0.0 | 2021年4月27日 |
v5.1.0 | 2021年6月24日 |
v5.2.0 | 2021年8月27日 |
v5.3.0 | 2021年11月30日 |
2021年4月に5系のTiDBがGA(正式提供)となりました。v4.0で実現されたリアルタイムなHTAPデータベースという方向性はそのままに性能や運用性が改善されています。その後も継続的に5.x系のリリースは行われ、2021年12月にはv5.3に達しています。
TiDBを他2つの分散SQLDBと大きく分ける要素であるHTAP(Hybrid Transaction/Analytical Processing)の対応は、v5.0.0以降でも大きく進化しました。MPP(Massively Parallel Processing)モードをサポートすることでOLAPクエリの性能が向上しています。非同期コミットやStale Readなどの機能追加が行われ、OLTPでもRead/Writeともに性能改善が実現されています。
全体としてはv4.0のころのような飛躍的な新機能は見られませんが、TiKVを含めたエコシステム全体で広範に最適化が行われており、既存ワークロードからの移行と運用を見据えた改善が続いています。
v5.0.0以降では、以下のような機能追加、改善が見られました。
- 非同期コミットをサポートし、書き込みレイテンシを削減(v5.0.0)
- MySQL8系に存在するCTEのサポートを追加(v5.1.0)
- TiFlashでMPPモードのサポートし、OLAPクエリの性能改善(v5.0.0)
- AS OF TIMESTAMP句によるStale Readに対応し、Readレイテンシの削減(v5.1.0)
- 式インデックスのサポートを追加(v5.2.0)
- Lock Viewが追加され、悲観的ロックにおける可観測性を向上(v5.2.0)
- リージョンやアベイラビリティーゾーン(AZ)、デバイス単位などのデータ配置をSQLで操作可能に(v5.3.0)
- DM(Data Migration)やTiDB Lightningの改善で、移行時の性能や運用性を向上(v5.3.0)
まとめ
2021年にはNewSQLベンダーの3社で多くのリリースがありました。また今回取り上げたCockroachDB、YugabyteDB、TiDBはプラットフォームとしてのパブリッククラウド(AWS、Microsoft Azure、Google Cloud)の対応を大きく進めています。各ベンダーがマネージドサービスを設計、運用する中で必要となった機能は、今後のリリースに盛り込まれていくことになるでしょう。
今回紹介した、CockroachDB ServerlessやYugabyte CloudのGA、TiDB Cloud The Developer Tierの発表など、クラウド関連の動向は今後も注目ですね。
Copyright © ITmedia, Inc. All Rights Reserved.