Dr.Sum

界を超えろ!
速さを追求したインメモリデータベースエンジン開発への挑戦

第1部 Re:Birth Dr.Sum

新生Dr.Sumへの挑戦はこうして始まった

ウイングアークは2017年10月5日、6年ぶりのメジャーバージョンアップとなるBIツールの主力製品Dr.Sum Ver.5.0を発売した。実はこのBIツール、これまでのDr.Sumの延長線上にあるわけではない。完全なゼロベースで開発されたインメモリデータベースエンジンを実装しているのだ。「100億件のデータを1秒で実行する」という目標を掲げて始まった、札幌オフィスDr.Sum開発グループのチャレンジに迫った。

継ぎ足しを重ねて拡張を図っていくにも限界

JR札幌駅北口から徒歩3分のオフィスビル内にウイングアークの札幌オフィスはある。この札幌オフィスこそ、過去10年以上にわたってBIツールの主力製品Dr.Sumの開発を脈々と続けてきた中心拠点だ。

もっとも、中心拠点と呼ぶには少々気が引ける。世に広く名の知れた外資系ソフトウェアベンダーの開発体制を見ると、シリコンバレーあたりに広々とした専用ラボを構え、ワールドワイドで採用した数千人を超えるエンジニアを擁しているのが当たり前である。これに対して札幌オフィスの開発体制は、貧弱と言わざるを得ないからだ。

Dr.Sumはデータベースエンジン部分とクライアントツールであるDatalizerの大きく2つのコアモジュールから成り立っているが、そのデータベースエンジン部分の設計やコーディング、テスト、アップグレードにあたっている開発チームの体制はわずか10名にすぎない。

外資系の大手ソフトウェアベンダーと比べれば、そもそも手がけているプロダクトのラインナップが根本的に違うという点を考慮しても、札幌オフィスの開発体制はせいぜい町工場のレベルだ。

そんな小さなソフトウェア開発のチームに最初の奇跡を起こしたのが、まさにDr.Sumの初期バージョンだった。ひとりの伝説的な"天才開発者"が設計したアルゴリズムを基に、世界でも例のないカラムナ型データベース技術を確立し、データ集計の圧倒的な高速化を成し遂げた。その後、日本発のBIツールとしてエンタープライズIT市場で確固としたポジションを獲得し、Ver.4.2まで拡張や改善を重ねてきた。Dr.Sumの歩みについては、いまさら説明するまでもないだろう。

とはいえ、継ぎ足しに継ぎ足しを重ねて拡張を図っていくにも限界がある。10年前には圧倒的だったDr.Sumのデータ集計スピードだが、気がつけば他ベンダーのBI/データベース製品も遜色のないレベルまで迫ってきている。また、Ver.4.2はマルチビュー構成をとることで数十億件のデータを処理することができるが、昨今の爆発的なデータ量の急増に求められるパフォーマンスとは言えない。

日本のソフトウェア開発者の底力を見せつけたい

そんな停滞感が漂い始めた2014年のある日、技術本部 Dr.Sum開発部の部長を務める笹原 徹のもとに、本社から新たな開発方針が提示された。

「そろそろDr.Sumのデータベースエンジンを全面的に作り直さないか。100億件のデータを1秒で実行できるくらい高速なエンジンを作って、もう一度世間を驚かせたい」

こんなことを思いつくのは、執行役員CTO 技術本部本部長の島澤 甲のほかにはいない。笹原も最初のうちこそ突拍子もない話と聞き流すつもりだったが、次第に前のめりになっていく自分自身を感じずにはいられなかった。

「島澤さん、いつもやり方が上手い......」

実際、そうなのだ。完全に荒唐無稽な要求であるならば、いくら直属の上司からの進言であっても「無理なものは無理」と突っぱねることができる。だが、本気で頑張れば何とかなるのではないかという絶妙なところを島澤は突いてくるのだ。いきなり100億件のデータを1秒で実行するのは無理でも、目標を3段階くらいに分けて地道なステップアップを狙うのなら成果を出せるかもしれない。あるいはデータのスケーラビリティを拡大するだけなら案外簡単に実現できるかもしれないといった具合だ。

しかも今回は島澤自らがプロトタイプを作って実験し、「ムダを徹底的に排除してプログラムを最適化すれば確実にスピードが上がる」ことに確信を持ったとまで断言する。こうなると、もはや笹原にとっても「やらない」という選択肢はない。

ただでさえBIツールやデータベースの世界は外資系ベンダーが大きなシェアを占めており、さらにその勢いを増している。そうした状況を目のあたりにし、ただ指をくわえて眺めていたのでは、この先Dr.Sumといえども存在感を失いかねない。

「いつまでも外資系に牛耳られてたまるか。日本のソフトウェア開発者の底力を見せつけてやる!」

ふつふつと湧き上がってくる思いに、笹原の腹は固まった。

最初の段階でいい加減なものを作ると、10年以上もその苦労を引きずってしまう

ただ、笹原には乗り越えなければならないもうひとつの関門があった。Dr.Sum開発部でデータベースエンジンを担当しているメンバーを動かすためには、まず一人の人物を"納得"させなければならないのだ。その人物とは、Dr.Sum開発グループのグループマネージャーを務める橋田 哲尚である。

「本気でDr.Sumのデータベースエンジンをゼロから作り直すのですか?笹原さん、そんなに簡単に言わないでくださいよ。そもそも100億件のデータを1秒で実行するという目標にどんな価値があるのですか?それは具体的にはどんなワークロードにおける、どんなパターンのデータ集計を想定しているのですか?それは多くのユーザーが抱えている業務課題に応える普遍的なアプローチと言えますか?」

思ったとおりの反応だった。一つひとつの物事を腑に落ちるまで理詰めで突き詰め、絶対に安請け合いはしない。橋田とはそういう男なのである。

一方で笹原は、Dr.Sumのデータベースエンジンをゼロベースで作り直すという構想そのものを、橋田が否定しているわけではないこともよくわかっていた。

Dr.Sumのデータベースエンジンが限界を迎えていることは、他人に言われるまでもなく橋田自身が肌身で感じていたことだ。しかしゼロベースで作り直すとしても、いまがそのタイミングとして本当に正しいのか。新しいデータベースエンジンはどのようなアーキテクチャーが望ましいのか。それを実現するためにどんなアプローチをとるのが効率的なのか――。橋田は必死にその答えを導き出そうとしていたのだ。

方向性があいまいなまま雰囲気に流されて開発に着手した結果、ふたを開けてみれば無理難題が山積みで、開発現場が大混乱するというのはよくある話だ。だからこそ慎重にならざるを得ないのである。橋田はこう語る。

「いちばん難しいのは、いちユーザーの業務にあわせて最適化するのではなく、一つの機能を追加するにしても、それが多くのユーザーの満足度を高められるか、もっとエッジの効いたアプローチはないかを考え抜いて仕様を決めていかなればならないことです。しかも今回データベースエンジンを刷新するとなれば、その基盤は今後少なくとも10年以上にわたって使われ、改善や拡張を続けていくことになります。裏を返せば最初の段階でいい加減なものを作ってしまうと、10年以上もその苦労を引きずることになります」

多次元データの「検索」「集計」「集約」を究極的に高速化することが、Dr.Sumの価値

丁々発止の議論の末、Dr.Sum開発部の総意として導き出した答えが、データベースエンジンをインメモリで実行するというアプローチだ。

「Dr.Sumのデータベースエンジンにとっての基本は、多次元データの『検索』『集計』『集約』であり、これらの操作をどこまで高速化できるかが、後にも先にも変わることのないDr.Sumの価値そのものです。そこに最も早く、効率的に近づくことができる方法として着目したのがインメモリへの実装なのです。既存のDr.Sumのデータベースエンジンのようなファイル層へのアクセスはとりあえず横に置き、すべてのデータがメモリに載っていることを前提にスピードを最大化することに全力を挙げました」と橋田は語る。

この基本方針のもと、開発グループのメンバーが一致団結した。インメモリデータベースに最適化したアルゴリズムの設計とプログラミングにあたったエンジニアの安達 俊貴は、「これまでのDr.Sumのデータベースエンジンもユニークな発想を積み重ねた高い価値を世の中に提供してきましたが、自分の手でそれを上回る価値を提供すべくスピードを追求したいと考えました。これもゼロベースで作り直すからこそやれることで、責任は重大ですが、これ以上面白い仕事はありません」と語る。

一方で、開発グループの"引き締め役"を担ったエンジニアが川代 雄太だ。10年以上にわたって使われてきた旧バージョンのDr.Sumのデータベースエンジンは、そのぶん十分に枯れていて品質も実証されている。しかしその基盤をゼロベースで作り直すとなれば、当然のことながらそうした実績もすべてリセットされる。ユーザーの現場で想定されるあらゆるパターンの操作に対して新たにテストを実施し、プログラムの不具合(バグ)を洗い出して解消し、品質とパフォーマンスを確保しなければならないのだ。川代はそうした高度な品質を担保するため、効率的な開発作業を支援するインフラやテスティングツールを整備するとともに、自らが先頭に立って検証を行っている。

「プロジェクトの責任を個人に押し付けるつもりは決してないのですが、発見した不具合についてはあえて無慈悲に開発者本人にチケットを通知し、修正してもらう必要があります。開発メンバーからは嫌がられ煙たがられる存在になるかもしれませんが、この責任だけはしっかり果たさなければなりません」と川代は語る。

こうして完成したインメモリデータベースエンジンを実装し、2017年10月5日に正式リリースされたのがDr.Sum Ver.5.0というわけだ。

もっとも当初からの目標である100億件のデータを1秒で実行するというスピードを実現するのは容易ではなく、現状ではかなりのハイエンドサーバーを複数台配置したスケーラブルな構成を組む必要がある。

その意味ではDr.Sumのインメモリデータベースエンジンはまだまだ道半ばなのだが、一方で現時点においてもスタンダードクラスのシングルサーバー環境で、10~20億件規模のデータを秒単位で実行できる高速性能を達成しているのも事実である。

「データ活用・分析のコモディティ化を求めるDr.Sumの主要ユーザーの業務にとって、むしろそうしたシングルサーバー環境で発揮されるコストパフォーマンスに優れたスピードこそが、"現実解"になると言えるのではないでしょうか。もちろんこの先もハードウェア性能は確実に向上していき、そこにインメモリデータベースエンジンの絶え間ない改善や拡張を続けていくことで、さらなるブレークスルーによるBIツールのイノベーションを世の中に巻き起こしていけると確信しています」と笹原は胸を張る。

いずれにしてもDr.Sumは生まれ変わったばかり。新たな歴史が、いま幕をあけた。

第2部 Deep Dive
リーダーたちが語る!
Dr.Sum Ver.5.0開発の核心
このページのトップへ