2017年10月25日水曜日

NoSQLとRDBを両立する「NewSQL」って何だ?

勉強の為に転載しました。
転載元はこちら

日々進歩するIT技術は、ともすると取り残されてしまいそうな勢いで進化の速度を高めています。そこでキーマンズネット編集部がお届けするのが「5分でわかる最新キーワード解説」。このコーナーを読めば、最新IT事情がスラスラ読み解けるようになることうけあい。忙しいアナタもサラっと読めてタメになる、そんなコーナーを目指します。今回のテーマは「NewSQL」。数ペタバイトまでデータが拡大しても、システム拡張はサーバ追加だけで済むという、従来のRDBでは考えられなかった特長を持っています!

1.NewSQLとは?

「Google検索やSNSのように最新情報を常に反映しながら、一方できちんと業務処理もできるデータベース」…そんなデータベースは、これまでありそうでなかった。最新データを迅速に反映することと、業務データに食い違いや間違いを絶対起こさないこととは両立するのが困難な命題だ。ところがその困難を軽々と乗り越え、しかもペタバイト級のデータ量でも性能を劣化させないデータベースが登場した。それが「NewSQL」。いったいどんな仕組みなのだろうか?

1-1 NewSQLの特長とデータベースの歴史

NewSQLの大きな特長は、従来からのデータベースの仕組み(リレーショナルデータベース/RDB)と、RDBよりも大量データの高速処理に優れた「NoSQL」という比較的新しいデータベースの仕組みとのよいとこどりをしているところだ。それぞれのデータベースから何をどう取り込んでいるのかは、少し歴史を振り返ってみるとわかりやすくなる。
 過去30年ほどのデータベースの歴史をまとめてみたのが図1だ。図に見るように、RDBは1980年代以前からずっとデータベースの主役であり続けている。しかしその考え方は近年の「情報爆発」によるデータ量の増大に即応できるものではなかった。Webの世界のように常に膨大なデータが生まれる現場では、もっと効率よく大量データが処理できるデータベースが望まれた。そこで登場したのが「NoSQL」だ。しかしRDBの機能や役目の肩代わりにはならず、特定目的のデータベースとして普及している。
 いわばオープンシステム時代の第1世代のデータベースがRDB、第2世代のデータベースがNoSQLと言うことができよう。NewSQLは、先行する2つの世代の欠点を埋め、長所をうまく採り入れた、第3世代のデータベースだ。
図1 RDBからNoSQLへ、そしてNewSQLへ
図1 RDBからNoSQLへ、そしてNewSQLへ

1-2 「RDB」や「NoSQL」とどこが違うのか?

データベース変遷の時間的経過を頭に入れたところで、NewSQLに至るまでの事情を説明しよう。
 まずはRDBだ。業務部門の方でも「ウチのシステムはオラクルだよ」とか「あのシステムはSQL Serverでできている」などとIT部門の人が話しているのを聞いたことはおありかと思う。オラクルやSQL Server、DB2、MySQL、PostgreSQLなどの歴史ある有名なデータベース管理システムは全部「RDB」だ。企業の基幹業務のほとんどはこうしたRDBへの情報の追加、変更、削除、読み出しを基本にして構成されている。
情報爆発の時代に対応するデータベース「NoSQL」の登場
1970年代末に登場したRDBはたちまちデータベースの世界を席巻したが、2000年代に入るとかつては考えられなかった規模でデータの急速な増大が始まり、欠点が露呈し出した。あまりに多くの情報を相手にすると、データベースを動かすサーバの性能が限界に達するのだ。高性能なサーバに次々に買い換える「スケールアップ」は1つの解決法だが、この手法では必ず限界がやって来る。そこで出てきたアイデアが、たくさんのサーバを使ってデータを並列処理する「スケールアウト」の方法だ。1台1台の性能は限られていても、サーバを増やせば処理性能が無限に上がる。
 しかし従来のRDBではスケールアウトはかなり難しい。小規模の分散・並列処理はできても、データの増大に合わせて柔軟に拡張していくことを考えると複雑になり過ぎて性能が間に合わなくなるのだ。そこで登場したのが「NoSQL」だ。
NoSQLの長所と短所
NoSQLはデータの読み書きの性能を上げることにフォーカスし、簡素なデータストアの方式をとって単純な読み書きを並列・高速に実行できるようにした。GoogleのBigTable、アマゾンのDynamoDB、オープンソースのMongoDB、Apache HBase、Apache CassandraなどがNoSQLの代表例だ。簡単にスケールアウトできる仕組みを備えており、膨大に増え続けるデータを効率的に追加記録し、検索・参照するのに向いている。
 一方、データの更新のほうはRDBに比べて弱く、特に「トランザクション処理」(「関連するキーワード」の項参照)のようにデータの一貫性が厳しく問われる処理には不向きだ。トランザクション処理は基幹系システムには必須のもので、これができなくては業務システムにならないとまで言われている。
 また、RDBの場合のSQLのように標準的な処理の記述法がなく、システム開発に既存のノウハウなどのリソースが流用できないため、開発効率や人材の確保の面でも課題がある。
NewSQLがNoSQLの短所をカバーし、RDBの特長を継承
どうにかしてデータの増大に即応しながらトランザクション処理も完璧にし、しかも開発効率も上げられる方法はないものか……と考えられたのがNewSQLだ。NewSQLと言われる製品にはVoltDBや、ScaleDB、Akiban、CodeFutures、ScaleBaseなどがあり、昨年2月にはNECが国産NewSQLの「InfoFrame Relational Store」を発売した。
 これらに共通しているのはSQLが利用できることだ。これにより標準言語がないというNoSQLの1つの欠点はカバーされ、開発効率の良さが期待できる。
 また製品によって違うがトランザクション処理に対応できるようデータの一貫性を確保する仕組みが盛り込まれている場合がある。RDBに比べて機能が優れているとは言えないが、NoSQLよりは信頼性が保証できるシステムが構築できそうだ。
 そして何より重要なのは、そうした機能を備えながらもRDBよりもはるかに簡単にスケールアウトでき、データ量の増大に対してサーバを追加するだけで性能を落とさずに対応が可能になることだ。

2.NewSQLの具体例

それではNewSQLがどのようなものなのか具体例で紹介しよう。

2-1 どのようにトランザクション処理を行うのか

例えばNECが昨年発売したInfoFrame Relational Storeの場合は、図2に見るように、データアクセス処理を担当するPartiqleサーバ(SQLインターフェースを持つ)、トランザクション処理を担当するトランザクションサーバ、そしてストレージサーバの3種類のサーバで構成されている。
図2 NewSQL製品の構成の例
図2 NewSQL製品の構成の例
資料提供:NEC
ストレージはNoSQLデータベースがよく利用しているKVSだ。これは「Key(キー)」と「Value(バリュー/価)」を1対にして記録するシンプルなデータストア形式。複数のサーバにデータを複製して分散するのが容易な一方、トランザクション処理を行うのは難しい。
 そこで、NECではトランザクションに含まれる複数の更新個所のデータをトランザクションサーバに収集してインメモリで処理できるようにした(マイクロシャーディング技術:特許申請中)。問題になるのはトランザクションが終了するまでほかのユーザが別の値に更新したりしないように排他制御(ロック)できるかどうかだが、サーバが分散していてもメモリキャッシュ(この場合は更新ログと同等)を1つにまとめて持つ仕組みをとっているため、トランザクションは1ヵ所を更新するだけで排他制御(ロック)ができるようになる。ストレージ内のデータはその時点で書き替わるわけではないが、業務処理上はトランザクションサーバ上のメモリキャッシュを参照するので、データの一貫性が保たれる。つまりRDBのようにトランザクション処理が実現するというわけだ。

SQLインターフェースで既存アプリケーションの流用性はどのくらい?

ではもう1つの特長である「SQLを利用できること」により開発効率はどの程度上がるだろうか。
 これはアプリケーションとSQLの作り方次第ではあるが、NECの実績ではアプリケーション全体をNewSQLに移行した場合で99%の流用が可能、SQLだけで見ても90%以上が流用できたという。既存システムがかなり流用できるのは確かなようだ。
 何よりも新しいデータベースだからといって新しい言語習得などの必要がなく、従来からのスタッフが、従来とさほど変わらないやり方でシステム構築できるところに注目したい。

2-3 スケールアウトすることでどんなメリットがあるのか?

KVSによるスケールアウトは当然として、トランザクションサーバもSQLデータアクセス用のPartiqleサーバも、全部が柔軟にスケールアウトできるのがこの製品の特長だ。スケールアウトが容易なことにより2つのメリットが得られる。
 1つは将来の需要を見越しての過大なシステム設計が不要なことだ。とりあえず当面必要な能力だけあれば、あとは需要の伸びに合わせて拡張していけばよいので、余計な投資が防げる(図3)。
図3 RDBを利用する場合とNewSQLを利用する場合の拡張性の違い
図3 RDBを利用する場合とNewSQLを利用する場合の拡張性の違い
資料提供:NEC
また処理能力の増強は単純にサーバを追加すればよく、設計のし直しやDB移行、テストなどの費用と時間を削減できる。
 更に各サーバは常に複製可能な状態なので、複数のバックアップが常時とれるのも利点だ。サーバ障害時のフェイルオーバやサーバ復旧がサービスを続けながら行えるので、システムの信頼性が上がる。

2-4 Hadoop連携でデータ分析・加工が簡単に

NECの製品に限らず、NewSQLの多くがビッグデータ解析に適した分散処理フレームワークである「Hadoop」との連携機能を装備、あるいはこれから追加しようとしている。BIや生産管理、機器制御など、ビッグデータの分析への需要はこれからますます高まると考えられる。その中核となりそうなのがHadoopだ。連携がどこまでスムーズに高速に行えるかが、今後の1つの注目ポイントになりそうだ。
以上、NewSQLのあらましを紹介した。まだ発展途上といえる領域なので、今後もさまざまな製品やオプションが登場するだろう。また古くからのRDBの側からもNoSQLに対応できるオプションが登場してきてもいる。今後の変化は予測できないが、既存のRDBを置き換える存在になるよりは、RDBとの併存、適材適所での活用が図られていくと思われる。
取材協力 :日本電気株式会社
掲載日:2013年3月27日

0 コメント:

コメントを投稿