神楽坂Tech Talk #1 ~データベース高速化~
―勉強会開催のお知らせ
旬のICT向け製品・サービス、技術動向について、カジュアルに、ゆるふわに、情報共有・発信していく場です。初回となる今回は、懇親会で豪華ノベルティ抽選会を企画。ここでしか手に入らないものも出てきます。ぜひ、ご参加ください。
日時:2015年10月29日(木) 19:00 - 21:30(開場18:30)
場所:IIJ本社 13F(飯田橋グラン・ブルーム)
※2Fオフィスエントランスで受付後、エレベータで13Fにお越しください。
定員:50名
※懇親会参加(無料)
お申込みはこちら
フラッシュストレージは、入れれば速くなるのは本当か?
谷川:実際のところフラッシュはただ入れれば速くなるのでしょうか。何らかのフラッシュ向けの設定やチューニングがやはり必要になるのでは。
正原:ベンダーが言うように、とりあえず入れればそれだけで速くなります。とくにストレージに負荷のかかるテストを行えば確実に性能が出ます。一方で、データベースの処理はそのままでもそこそこ速くなりますが、やはり手を入れなければダメな場合も。じつはこのあたりは「やってみないと分からない」ことも多々あります。OSの設定などどのパラメータがどう影響するかが掴みきれていないのです。
とくにサンディスクの「Fusion ioMemory」のようなものだと、ソフトウェアのほうでそれを扱いきれていないこともあります。逆にそこが、技術者的にはまだまだ手の入れようがあって面白いところでもあるのですが。
高木:とにかく入れれば速いと言ってもらえるのは、我々ベンダーとしてはありがたいことです。とはいえ、アプリケーションがフラッシュストレージに最適化していないのも事実でしょう。これはなかなか簡単にはいかないところです。我々としては、アプリケーションからフラッシュをどう使えばいいのか、設定はどうすればいいのかの情報も出してはいます。しかし、十分ではない面もあります。なので、今回のようにIIJさんにきっちりと検証してもらえるのは嬉しいところです。
谷川:実際、フラッシュ化しても速くならないケースがあると。
高木:フラッシュを入れれば何でも速くなると言う誤解は確かにあります。たとえばCPU処理にボトルネックがあるシステムでは、いくらいフラッシュ化しても速くなりません。たとえば多コアのシステムなのに、インサート処理に1コアしか使っていなくてそこが詰まっているなど。フラッシュの効果を出してもらうならば、この場合はCPU処理にまで踏み込む必要があります。
正原:ソフトウェアでもストレージへのランダムアクセス処理ならば、フラッシュ化でかなり速くなります。一方でシリアル処理しかできないデータベースなどを利用していて、データ へのアクセスもシーケンシャルなものだったりすると性能があまり改善されない 場合がある。ソフトウェア部分がボトルネックになることもあるのです。また、フラッシュが十分に高速であればあるほど、CPU処理が間に合わなくなることも。解消するには多コアのシステムにしてハードウェア性能を上げ、効率的な並列処理をできるようにします。
一方で、システムを多コア化すると商用データベースではライセンス費用が嵩むことにもなります。データベースの中でフラッシュの性能をどう活かすか、CPU性能を使い切るにはどうしたらいいかなどは、これからのデータベースエンジニアにとって課題の一つになるでしょう。IIJはシステム基盤を顧客に提供する立場ですが、フラッシュストレージの良さをどう伝えるかといったことも今後重要になると考えています。
ioMemoryがエンジニアをダメにする!?
谷川:世の中的には、フラッシュストレージの速さは理解されつつありますか?
正原:以前から、ioMemoryがすごく速いという噂は聞こえていました。一度ioMemoryとか使っちゃうと、もうその人は普通のストレージには戻って来られない。入れるだけで速くなる。それでけっこう満足してしまうエンジニアもいて、フラッシュはエンジニアをダメにするとの声も聞こえますね。
高木:ioMemory使うやつは甘いなんてことも言われるそうです。
正原:最初に驚いたのは、カタログスペックのIOPSの値です。本当にそんなに性能が出るのかと疑いたくなる。SSDのときも驚きましたがそれ以上です。実際にioMemoryを使ってみてもその性能に驚きましたし、これならばシステムを大幅に集約できるのではないでしょうか。ただこれではクラウド事業としては儲から ないので悩みどころです。
速いことで、確実に負荷分散のためのレプリケーションの数は減ります。ほとんどをマスターだけで処理できてしまうからです。逆にマスターノードが速すぎて、レプリケーションが遅延するとの新たな課題も出てきます。ioMemoryのような高速なフラッシュストレージが出てきて、システムのボトルネックの考え方は変わってきているとも言えます。
谷川:何もせずに速いとエンジニアをダメにしますか。
正原:本来は、メモリをどうするとか設定やチューニングを気にせずに速くなるというのは、悪いことではないと思います。エンジニアはその他のアプリケーションの開発などに注力できることになりますから。また、エンジニアがこれまで苦労していた一部の性能と運用の両立は、 ioMemoryならばサンディスクが提供している不揮発性メモリーファイルシステム 「NVMFS(Non-Volatile Memory File System)」を用いることで可能になるでしょう。
以前であれば、データ領域をローデバイスにしてデータベースのパフォーマンスを向上させようとしたわけですが、これは運用するのも大変でした。今はNVMFSのような賢いファイルシステムがあって、高性能化が簡単に実現できます。ioMemoryというハードウェアが速いのに加え、その上のレイヤーでも工夫がなされているわけです。その最先端なものがNVMFSではないでしょうか。NVMFSのいいところは、ファイルシステムとして提供しているため 利用するのにアプリケーション側でコードを書き換える必要がないことです。 もちろん特別なAPIも叩く必要はありません。こうでないと、 なかなか使ってもらえないでしょう。