NTT DATA

DATA INSIGHT

NTTデータの「知見」と「先見」を社会へ届けるメディア

絞り込み検索
キーワードで探す
カテゴリで探す
サービスで探す
業種で探す
トピックで探す
キーワードで探す
カテゴリで探す
サービスで探す
業種で探す
トピックで探す
2023年12月19日技術ブログ

「NewSQL」とは?改めて知りたいデータベースの最新動向

システムの中核をなすDBMS(データベース・マネジメント・システム)には、数多くの製品が存在する。従来から用いられてきたRDBMSの他、KVS(Key Value Store)やドキュメントDBなどのNoSQLというキーワードに代表されるさまざまなデータモデル・性能特性を持つ製品も活用されている。近年では、RDBMSの苦手とするスケールアウト性を強みに持つNewSQLという製品も新たな選択肢の一つとなっている。
本稿では、NewSQLとは何かを解説したうえで、その特性や製品ベンダーの最新動向について紹介する。
目次

RDBMSの抱える課題

RDBMS(※1)はシステムの中核を担っており、サービスの規模や性能に直結するソフトウェアの一つです。RDBMSは古くからある反面、最近のハードウェアやプラットフォームの良さを生かしきれない課題を抱えています。最も大きな課題の一つがスケールアウトです。もともとRDBMSは単一のマシンで稼働する前提の作りのため、多数のマシンリソースを活用した水平スケールアウトが苦手です。一部の商用製品の専用機能やアプリケーション側での工夫によりスケールアウトを実現する方法もありますが、高コストであったり、難度の高い設計が必要となったりする場合があります。そのため、昨今のサービス規模が短期間で増大するユースケースなどでは、このスケーラビリティの確保の問題に直面することがしばしばあります。

新しい選択肢となる「NewSQL/分散SQLデータベース」

このようなRDBMSの課題に一石を投じたのがGoogleのSpannerに関する論文(※2)です。Spannerはスケーラブルで、グローバルに分散された、同期的レプリケーションされているデータベースです。RDBMSの特性を備えつつ、スケールアウト性も兼ね備えるという点で注目を浴びました。後年にGoogleはGoogle Cloud上でこの論文をベースにしたCloud Spannerをサービスとしてリリースしました。そして同時期に、このSpannerに影響を受けたOSS製品が登場します。代表的な製品を以下に挙げます。

  • TiDB(※3):PingCAP社が開発主導するMySQL互換の製品
  • YugabyteDB(※4):Yugabyte社が開発主導するPostgreSQL互換の製品
  • CockroachDB(※5):Cockroach Labs社が開発主導するPostgreSQL互換の製品

これらの製品はNewSQLや分散SQLデータベース等と呼ばれており、RDBMSの機能性(SQL、トランザクション)や既存のOSS製品にまつわるエコシステム(フレームワーク、開発ノウハウ)を維持しつつ、アーキテクチャを刷新してスケールアウト性を向上させています。Spannerとそれ以降の製品が大きく異なるのは、リレーショナルモデルを極力維持しつつ動作する環境を選ばずに利用が可能という点です。

(※1)RDBMS

Relational Database Management Systemの略。関係データベース管理システムと訳される。

NewSQLの特性

アーキテクチャ

NewSQLの実装はさまざまですが、アーキテクチャを抽象化して示すと、図のようにRDBMSの機能部をいくつかの疎なコンポーネント(部品)に分けて、コンピュート層とストレージ層の分離を図っています。コンピュート層では主にSQLのパースや実行、ストレージ層では実際のデータの読み書きや管理を担います。

図:NewSQLのアーキテクチャ

図:NewSQLのアーキテクチャ

NewSQLではユーザーからは論理的な一つのデータに見えるテーブルやインデックスを複数の物理的なデータに分割し、複数のマシン上に自動で分散させます。俗にシャーディング(※6)と呼ばれる技法です。分割されたデータに対し、分散トランザクションを用いてRDBMSと同じようなACID(※7)を複数のマシン上で実現しています。またストレージ層では分割したデータをRaft(※8)などのコンセンサスアルゴリズムを用いたレプリケーションにより冗長化し、可用性を高めています。シャーディングや分散トランザクションなどは透過的に作用するため、ユーザーはあまり意識する必要がありません。
これらの仕組みにより、大規模なデータを複数のマシンで処理することが可能になりスケールアウトが容易となっています。特にストレージ層ではWriteに強いKVSが用いられることが多く、Writeの高いスループットを得られます。加えて、CPUに負荷がかかりやすいSQL処理を担うコンピュート層とディスクIOに負荷がかかりやすいストレージ層が分かれているため、ワークロードに応じた最適なリソース割り当てが容易です。

デプロイ方式

OSSのNewSQL製品は、特定のハードウェアやソフトウェア、クラウドサービス等に依存した形にはなっていません。そのためオンプレミス/クラウド問わず、ベアメタル/VM/コンテナ(Kubernetes)のさまざまなプラットフォーム上にデプロイすることが可能となっています。マルチクラウド構成なども含め、ユーザーのニーズに即した構成が取りやすくなっています。
ただしNewSQLは多くの複数のコンポーネントに分かれているため、製品によってはそれぞれのコンポーネントを個別にデプロイするなど、その手順や処理は従来のDBMS製品に比べると複雑かつ煩雑です。前述のNewSQLの3製品ではいずれも専用のツールやユーティリティが用意され、パブリッククラウド上でマネージドサービスも展開しています。そのためデプロイの敷居は低く、利用しやすいと言えます。

OSSのRDBMS製品との互換性

NewSQLでは代表的なOSSのRDBMSとの高い互換性を目指している製品が多いことも特徴の一つです。互換性については、SQLの文法や組み込み関数のほか、JDBCドライバなどのアプリケーションで利用するライブラリまで、ほぼOSS製品と同じものを使えるものもあります。「ほぼ」と表現しているとおり、OSSと同一の製品ではなく、またアーキテクチャや実装が異なるため、細部では非互換な文法や機能があります。
NewSQL製品の中でも、YugabyteDBではPostgreSQLのソースコードの大部分を流用するというユニークな方法を採っています。これにより、YugabyteDBは他のNewSQLよりも相対的に高いRDBMSの機能や互換性を備えています。他のNewSQL製品も非常に速い開発スピードで機能追加を行っているため、いずれはNewSQL製品と互換対象のOSSのRDBMS製品は、ほとんど見た目上の機能差がなくなるかもしれません。

既存RDBMSの上位互換製品ではない

NewSQLのポジティブな特性をいくつか挙げてきましたが、既存のRDBMSを無条件に置き換えていくものではありません。得意とするものがある反面、不得意なものもあります。アーキテクチャの項で示したように、従来のRDBMSならば単一のマシン上で完結した処理が、NewSQLでは複数のマシンでのネットワークをまたぐ処理となります。NewSQLでは複数マシンを使って同時並行で処理ができるためトータルのスループットは向上する一方で、処理あたりのレスポンス性能が低下しやすいのです。十分なスケール性能を得るには処理が適切に分散されるよう、スキーマ設計(テーブルやインデックスの設計)を見直す必要もあります。
RDBMSのさまざまなノウハウや技術を生かせる一方で、NewSQLの特性や落とし穴にも注意が必要です。NewSQLはRDBMSの上位互換ではなく、あくまでDBMSのバリエーションの一つとして捉えておくのが良いでしょう。

(※6)

データベースの負荷分散を目的とした手法のひとつ。巨大な一つのテーブルを複数に分割し、複数のデータベースで管理することで負荷の分散を実現する。

(※7)

データのトランザクション処理の信頼性を保証するために求められる性質。原子性(Atomicity)、一貫性(Consistency)、分離性(Isolation)、永続性(Durability)の頭文字をつなげてACIDと呼ばれる。

ベンダーの取り組みと今後の展望

NewSQLは複雑な構成かつ多数のマシンを利用するため、RDBMSに比べると監視やバックアップなどの運用に関するオペレーションの難度が高くなっています。そのため、NewSQLを開発し推進するベンダーでは製品本体の機能を改善しつつ、特に運用性を充実させる取り組みが目立ちます。

  • TiDBにはバックアップ・リストア用の便利なコマンドや状態診断を行うダッシュボードとレポート機能(※9)を備えています。
  • YugabyteDBにはAnywhere(※10)というユーザーがセルフホステッドなマネージド構成を簡単に構築できるユーティリティが提供されています。

OSS製品の場合、運用に関する機能が比較的少ないイメージがあるかもしれませんが、NewSQLでは商用製品に近いレベルで充実しています。
では、RDBMSではNewSQLの出現を受けて何か動きがあるのでしょうか?近年ではRDBMSの利用形態としてクラウド上のマネージドサービスが一般的になっています。そこで、RDBMSのマネージドサービスを展開している主要なクラウドベンダーの取り組みを見てみます。

  • Google CloudではNewSQLの先駆けとなったCloud Spanner(※11)が既にサービス化されています。
  • AzureではCosmos DB for PostgreSQL(※12)というサービスが開始されています。これは複数のPostgreSQLでシャーディング構成を可能にするCitus(※13)というOSSの拡張機能をベースとしたマネージドサービスで、水平スケールアウトによる大規模なDBの利用を可能としています。
  • AWSは2023年の11月にAmazon Aurora Limitless Database(※14)というサービスを発表しました。本記事の執筆時点(2023年12月)では、まだ詳細は明らかではありませんが、Aurora LimitlessもNewSQLと同じようなAurora(PostgreSQLやMySQL互換)の機能を維持しつつ水平スケールアウトを可能にするサービスのようです。

このように多方面でスケールするRDBMSへの活発なアプローチの動きが見て取れます。

成長の著しいサービスやシステムの統合に伴う性能上の課題や、マイクロサービス採用に伴うアプリケーション側での複数DBへの整合性を持った処理の課題を抱えるユーザーにとって、NewSQLやそれに準じるマネージドサービスは有力な選択肢の一つとなるのではないでしょうか?
NTT DATAでも、Society5.0の実現に向けた空間情報を管理する基盤のDBMS製品としてYugabyteDBなどの評価(※15)にも取り組んでいます。このような取り組みを通じ、従来のRDBMSだけでなく、新しいコンセプトや特性を持つNewSQL等も含めた、最適なデータベース技術の選定と活用を目指しています。

お問い合わせ