スケールするリレーショナルデータベース「NewSQL」――その登場の背景と仕組みとは? | 東京エレクトロンデバイス

Publickey新野淳一IT羅針盤

スケールするリレーショナルデータベース「NewSQL」――その登場の背景と仕組みとは?

リレーショナルデータベースはスケーラビリティ(拡張性)に課題を持つとされてきたが、ここ数年、スケーラビリティが強化されたリレーショナルデータベース製品群「NewSQL」が注目を集めている。今回はその登場の背景と仕組みについて解説する。

スケーラビリティが課題だったリレーショナルデータベース

本連載では過去2回、リレーショナルデータベースの動向について紹介してきました。2018年の記事「クラウドの時代に合わせて進化する「新しいデータベース」の姿とは?」では、それまでデータ
センターの中だけで稼働していたリレーショナルデータベースがクラウド上での稼働によって地理的分散の可用性を実現し始めたことを紹介しました。3年後の2021年の記事「一体化が進むクラウドデータベースとAI/機械学習――その最新トレンドとは?」では、大量のデータが保存されているデータベースはクラウド上で機械学習機能との連携が進んでいるというトレンドを紹介しました。

そして現在、再び新たなリレーショナルデータベースの技術トレンドが登場しています。いわゆる「NewSQL」と呼ばれる製品の登場です。今回はこのNewSQLを軸に、2024年におけるリレーショナルデータベースの動向を探っていきましょう。

まずは、NewSQLが注目されるようになった歴史的経緯を振り返ってみます。長年にわたりデータ
ベースの主流として利用されてきたリレーショナルデータベースは、スケーラビリティに欠けることが大きな課題とされてきました。つまり、同時に多数のユーザーがアクセスするといった負荷の高い状況では、なかなか性能を向上させられない状況にありました。

主に社員だけがアクセスする業務アプリケーションのバックエンドデータベースとしてリレーショナルデータベースが使われるうちは、高性能なサーバーやストレージなどを組み合わせることで、スケーラビリティの問題はなんとかやりくりできました。しかし、インターネットやクラウドの普及によって、ショッピングサイトやオンラインゲームといった大量のユーザーがアクセスするサービスのバック
エンドに使われるようになると、このスケーラビリティの問題は深刻さを増すことになりました。

そこで登場してきたのが、いわゆるNoSQLデータベースです。NoSQLデータベースはリレーショナル
データベースが備えていた厳密なデータの一貫性を妥協することで、非常に高いスケーラビリティを実現したのです。

NoSQLはデータの一貫性を妥協してスケーラビリティを実現

厳密なデータの一貫性とは、例えばある銀行口座にATMからアクセスしてお金を全額引き出して残高
ゼロになったら、次の瞬間、別のATMからその銀行口座にアクセスしても必ず残高はゼロになっていることが保証されるということです。

これをデータベース側から考えると、あるデータベースサーバーにアクセスして何らかのデータ書き換えを行ったら、次の瞬間、別のサーバーのデータベースにアクセスしても、必ず書き換え後のデータが保証されるということになります。つまり、スケーラビリティを得るために大量のサーバーを並べて、しかも厳密な一貫性を維持しようとすると、あるサーバーのデータ変更を瞬時にそれ以外のすべての
サーバーに反映させなくてはならないことになります。

サーバーが増えるほどこうした厳密な一貫性の処理をすべてのサーバーに行き渡らせることは難しく、時間のかかる処理になってしまうため、厳密なデータの一貫性という条件の下で大量のサーバーを並べて高いスケーラビリティを実現することは容易ではありませんでした。NoSQLデータベースが登場した当初はこうした厳密な一貫性を妥協し、あるサーバーで変更されたデータは、瞬時ではないけれども、いずれ他のサーバーにも反映されるということを前提に、大量のサーバーを並べてのデータベース構築というスケーラビリティを実現したのです。

NewSQLの登場とその仕組み

こうして、厳密なデータの一貫性を備えることで業務アプリケーションなどに向いているリレーショナルデータベースか、あるいは厳密な一貫性はないけれどもスケーラビリティによってネットサービスのバックエンドに使えるNoSQLデータベースか、といった状況が生まれました。

そして、この両方の利点、すなわち厳密なデータの一貫性を備えつつ、NoSQLのような
スケーラビリティを備えた新たなリレーショナルデータベースがここ数年で登場してきたのです。

それが「NewSQL」と呼ばれるソフトウェア群です。代表的な製品にはMySQL互換の「TiDB」、PostgreSQL互換の「YugabyteDB」や「CockroachDB」などがあります。

これらはいずれもオープンソースとして公開されており、無料でも使えますが、それぞれ商用製品として商用サポートを得た利用も可能です。

なぜNewSQLはスケールするのか

NewSQLがデータベースのスケーラビリティを実現するうえで採用している代表的な仕組みが
シャーディングです。シャーディングとは、テーブルを分割して複数のデータベースサーバーに分散させることでスケーラビリティを実現する手法です。

例えば、あるテーブルのプライマリキーが偶数の値はサーバーAに、奇数はサーバーBに分散するテーブルの水平分割、あるいは4つの列を持つテーブルがあったとき、4つのうち2つの列をサーバーAに、残りの2つの列をサーバーBに受け持たせるテーブルの垂直分割などを駆使して、データへのアクセスを複数のサーバーに分割する方法です。そして、このルールをアプリケーションやデータベースエンジン側に組み込んで、クエリを複数のサーバーに分散させるわけです。

人間がシャーディングを行う場合には、上記のように人間がわかりやすいルールを用いてマニュアル操作でシャーディングを行いますが、その場合には複数サーバーにまたがるクエリをどう実現するかといった、テーブル間のジョインをクエリでどう表現するかなどをあらかじめ考えておかなくてはいけません。

NewSQLでは、このシャーディングをデータベースエンジン自体が独自のルールによって行い、複数
サーバーへのクエリ発行をはじめとする分散データベースの処理もすべてデータベースエンジン側で自動的に行ってくれます。さらに、サーバーを追加すると自動的にシャーディングの分割数を増やすなどの仕組みも備え、スケールの増減にも対応しています。

これらにより、利用者はこれまでのリレーショナルデータベースと同様、クエリの発行などを行えると同時に、シャーディングを用いた分散データベースによるスケーラビリティの利点を得ることができるわけです。

下記はYugabyteDBの簡単なアーキテクチャー図です。クエリが複数のクエリエンジンに自動的に分散されることを示しています。

YugabyteDBではクエリが複数のクエリエンジンに自動分散
(YugabyteDBの公式Webサイトから引用 https://www.yugabyte.com/)

「リレーショナルデータベースはスケールしない」はもはや過去の話

最近では既存のリレーショナルデータベースにシャーディングの機能を組み込んでスケーラブルにする取り組みも出てきました。AWSが発表した「Amazon Aurora Limitless Database」がそれです。

Amazon AuroraはMySQLやPostgreSQLなどのリレーショナルデータベースをマネージドサービスとして提供するサービスです。Amazon Aurora Limitless DatabaseはPostgreSQLのデータベースエンジンにシャーディング機能を組み込み、読み込み性能も書き込み性能もスケールする大規模なデータベースシステムの構築を可能としました。

前述のNewSQLとして紹介したデータベースに限らず、このように既存のリレーショナルデータベースエンジンにもスケーラビリティを組み込んでいくことが今後も続いていくと予想されます。
「リレーショナルデータベースはスケーラビリティが課題」と言われた時代は、おそらく数年後には過去のものとなることでしょう。

IT羅針盤

※このコラムは不定期連載です。
※会社名および商標名は、それぞれの会社の商標あるいは登録商標です。

新野淳一

新野淳一Junichi Niino

ブログメディア「Publickey」( http://www.publickey1.jp/ )運営者。IT系の雑誌編集者、オンラインメディア発行人を経て独立。新しいオンラインメディアの可能性を追求。