技術レポート

ハイパフォーマンスを極めるための
開発プロジェクト

NoSQLデータベース管理システム
開発部
大門 正岳

MySQLを超える処理速度を求めて。

ユミルリンクでは、データベース管理システムとして、主にMySQL (マイエスキューエル:オープンソースで開発されているリレーショナルデータベースを管理・運営するためのシステム)を使っていました。 MySQLは、機能が豊富で動作速度も悪くはないのですが、大量のデータを高速に処理するためには速度が追いつかないことがあります。そこで、機能は若干劣るものの、より動作が高速であるTokyoCabinetというデータベースエンジンを採用し、プログラム言語の一つであるErlangから利用できるようにした上で、必要な機能を追加していくことになりました。 これが、yerltc(WAL機能付きのErlang用TokyoCabinetドライバ)開発プロジェクトの始まりです。

完成寸前でのやり直しも、厭わなかった。

yerltcには、3つの高いハードルが求められました。一つは、Tokyo Cabinetを用いたソフトウエアの開発が困難なものにならないように、必要な機能を持っていること。そして、大量のデータをMySQLよりも高速に処理できること。さらに、不意の電源切断やサーバーのハードウエア故障などが起きてもデータベースが損傷を受けないこと。これらを同時に満たすものは簡単なことではありませんでした。
プログラムが完成することになってから、新しい高速化の手法が使えるようになり、ほとんど最初から設計しなおしたことさえ何度かありました。

最速・最強のデータベースを目指して

yerltcでは、TokyoCabinet本体に手を入れることなく、次の二つの機能を追加しています。一つは、WAL(Write-Ahead Logging、ログ先方書き込み)と呼ばれている機能で、これはデータベースの変更内容を別に記録しておき、データベースが破損した際には、ただちに破損する前の状態に戻せるようにするための機能です。もう一つは、テーブル管理機能です。データベースでは、データを種類ごとに分けて格納しますが、分けられたそれぞれの部分を統合的に取り扱うための機能がそれに当たります。

「快適なソフトウエアを実現させたい。」

ユミルリンクのお客様には、大量のデータを扱うお客様も多くいらっしゃいます。データ量が少ないうちは快適なのですが、データ量が多くなると、インポート処理や絞り込み、配信処理など、さまざまな操作に時間がかかるようになってしまいます。
こういった処理にyerltcを利用していくことで、処理時間を大幅に短縮していきたいです。データ量が多くなったとしても、快適に利用いただける、そんなソフトウエアを実現させたいです。


メールマガジン

ページの先頭へ