SQL Server 2014の正式版が間もなく登場、インメモリデータベースはもはや当たり前に
今回のSQL Server 2014でもっとも注目されているのはインメモリデータベースの機能だろう。マイクロソフト的にはHekatonと呼ばれるインメモリー機能は、メモリ最適化されたOLTPエンジンという位置づけ。これまでにもメモリを活用する機能はすでに提供しており、カラムストアのxVelocityはBIやデータウェアハウスの用途でメモリを最適化できる。
IT業界においてはSAP HANAがインメモリ市場を切り開いたが、ユーザーサイドにはいまだ漠然とした不安もある。別途インメモリデータベースを導入すると運用管理が大変ではないか、速いのは分かるけれどそれ以上にハードウェアやソフトウェアコストが跳ね上がるのでは、などなど。今回のHekatonはそのあたりの「インメモリの不安」を解消できるものだとマイクロソフトは主張する。運用管理は今までのSQL Serverの管理ツールManagement Studioでインメモリもそうでないデータベースも統合的に管理できる。
そもそもHekatonは、インメモリデータベースを別に用意するのではなく既存のSQL Serverの1機能として実装する。なので、バックアップなどの管理は今まで通りの方法が使える。Management Studioではインメモリデータベースというツリーが新たに出てくるわけではなく、インメモリのテーブルとして存在するだけだ。この機能はオプションではないので、Enterpriseエディションであれば追加料金なしで利用できる。
メモリはたしかにあればあるだけ高速になるわけだが、それなりの量でもそれなりに高速に使えるのがHekatonだ。このあたりは、IBM DB2のBLUアクセラレーションと考え方は似ている。すべてをインメモリに載せるのではなく、載せたいデータだけをインメモリにというところも同様だ。
Hekatonでは、インメモリにあるデータをバックグラウンドでディスクにMemory-optimized Table Filegroupとして非同期で書き出す。当然ながらトランザクションログも蓄積される。これらでデータの永続性を確保する。この永続性のための仕組みを使わないこともできるそうだ。処理が必要なくなるぶんだけ高速性は増す。これは、一時的な計算処理だけを行うなど超高速なエンジンとしてHekatonを使うものだ。ちょっとユニークな機能だろう。
SQL Server 2014には、当然ながらこのインメモリ以外にもさまざまな機能拡張がなされている。個人的に気になった機能が、メモリ最適化テーブルによる読み取り一貫性の実現。読み取り一貫性の課題は、Oracleからチクチクといじめられていたところ。それが今回のバージョンで解決できる。テーブルは行の集まりであり、行は複数のバージョンを持つ。それぞれの行では2つのタイムスタンプを持ち、その間が有効ということに。トランザクションのリード時刻がそのタイムスタンプ内にあればその行を読むことができる。
もう1つ興味深い機能がメモリ最適化列ストア。これは高速な検索や圧縮に効果が高いカラムストアに行の概念を取り込むもの。行そのものだと普通のテーブルと同じになってしまう。SQL Server 2014では行グループという概念でセグメント化した情報をメモリ上に保持する。これ、カラムストアの苦手を克服することができそうな機能だ。
さてSQL Server 2014の登場、さらに今秋にはOracleがインメモリ機能をリリースするかもしれない状況もあり、いよいよデータベースでインメモリが当たり前の時代となりそうだ。来年には当たり前になりすぎてインメモリだということをあえて主張する時代ではなくなるかもしれない。優位性を発揮するポイントはインメモリをどう活用できるか、そしていかに簡単に実現できるかに移行するだろう。データベースの運用では、だんだんとインメモリであることを意識する必要はなくなりそうだ。