近年、データベース技術は驚異的な進化を遂げています。その中でも、NewSQLという概念が注目を浴びています。本記事ではNewSQLの概要や特徴、主な製品についてご紹介します。
NewSQLとは?
NewSQLは、従来のリレーショナルデータベース(RDBMS)のトランザクション性と整合性を保持しつつ、分散型システムのスケーラビリティとパフォーマンスを兼ね備えた新しいデータベースシステムです。
従来のRDBMSは、ACID(Atomicity, Consistency, Isolation, Durability)特性を満たす一方で、大規模な読み書きを行う分散環境においてはスケールアウトが難しいという課題がありました。一方、NoSQLは分散環境でのパフォーマンスとスケーラビリティを追求した結果、ACIDトランザクションが使えず、大規模かつトランザクションを扱うシステムにおいて採用が難しいものとなっていました。
NewSQLは、この二つの問題を解決するために登場しました。つまり、RDBMSがもつACIDトランザクションおよび分散環境でのスケールアウトの両方を可能とするために生まれたデータベースがNewSQLと言えます。
NewSQLの特長
NewSQLの主なメリットは次のとおりです。
強い整合性
NewSQLは、ACIDトランザクションをサポートすることで、分散環境においても一時的なデータの不整合が起きることなく、厳密なデータの参照・更新が可能です。これにより、企業レベルのクリティカルなアプリケーションでも安心して利用できます。
スケーラビリティ
NewSQLデータベースは、容易にスケールアウトができる機能を標準で備えています。昨今のネイティブクラウドなアプリケーション開発においてはクラウドかつスケーラブルなデータベース環境が求められますが、NewSQLであれば容易に可能となります。
SQLインターフェースの提供
NewSQLは従来のRDBMSのSQLインタフェースをサポートしています。開発者は専用のクエリを新たに学ぶ必要なく、従来のRDBMSと同じ使い勝手でデータベースが操作できます。
NewSQLの技術
では、NewSQLではどのような技術で従来の課題を解決したのでしょうか。RDMBSに対して主な違いは以下2点です。
分散合意アルゴリズム(Raftアルゴリズム)の採用
従来のRDBMSでも読み取りの速度は速かったものの、シングルプロセスのため、データの更新(書き込み)速度にボトルネックがありました。そこで、NewSQLでは「Raft」というアルゴリズムを採用し、複数ノードから書き込みを発信できるようにしています。
図.RDBMSとNewSQLのデータ書き込み方法の違い
従来のRDBMSは「マスター」ノードが書き込みを指示するのに対し、Raftアルゴリズムは書き込みを命令する「リーダー」ノードを定期的に入れ替えます。この方式により、書き込みのボトルネックを軽減しています。
ストレージエンジンの変更
従来のRDBMSでは「B-Tree」と呼ばれるストレージ構造を採用していました。B-Treeはデータの読み取りが高速にできる反面、書き込みに時間がかかる欠点がありました。一方、NewSQLでは「LSM-Tree」と呼ばれるストレージ構造を採用しています。
図.RDBMSとNewSQLのストレージエンジンの違い
LSM-Treeは、書き込みの際はメモリに書いておき、バックグラウンドでマージソートを行いながらストレージを更新します。この方法により書き込み速度を高速化しています。読み取り速度はB-Treeより遅くなりますが、スケールアウトのボトルネックは書き込み速度であったことから、全体のボトルネックが解消されるものとなっています。なお、LSM-TreeはAmazonのAuroraやMongo-DB等でも採用されています。
その他にもレコードや列単位でデータを複数ノードに自動で分散する「自動シャーディング」などの機能も兼ね備えており、従来のRDBMSの課題を解消しています。
主なNewSQL製品
現在では様々なNewSQL製品が登場していますが、代表的なNewSQL製品は以下の通りです。
TiDB
PingCAP社によって開発された、分散型SQLデータベースです。オープンソースのソフトウェアであり、MySQL互換のSQLインターフェースを提供しながら、分散できるデータストレージを提供しています。
CockroachDB
Googleの元エンジニアによって設立されたCockroach Labsという企業が開発したデータベースです。PostgreSQLと互換性サポートの他、自己修復機能を持ち、ノードがダウンしてもデータの一貫性を保つことが特長となっています。
YugabyteDB
Yugabyte社によって開発されたデータベースです。PostgreSQL互換性を持つ他、ノードを追加することで容易にスケールアップし、一部のノードがダウンしても全体のシステムは正常に機能できる仕組みとなっています。
いずれも既存のRDBMSと互換性を備えており、移行ツールも提供していることから乗り換えもしやすいものとなっています。ただし、現状は従来のデータベースの全ての機能を備えておらず、ストアドプロシージャやトリガー、Read Commited以外のトランザクション分離レベルや表ロックができないなどの課題もあります。また、NoSQLのように非構造なデータの格納も不可となります。今後、これらの課題が解消されれば、大規模なミッションクリティカルなシステム等で本格的に導入が進んでいくでしょう。
まとめ
NewSQLは、従来のRDBMSやNoSQLの課題を解決し、新しい形のデータベースシステムです。これらの特性により、大規模なデータの読み書き性能を必要とする企業アプリケーションにとって、今後、魅力的な選択肢となるでしょう。
- カテゴリ:
- キーワード: