DiggとRedditは、今月中にCassandraへ移行することを発表した。彼らのサービスにとってMySQLのスケーラビリティでは不十分なのが原因だ。もはやMySQL + memcacheという構成がスケーラビリティの課題に対する解決策のデファクトではないと考えている人もいる。
昨年9月、DiggはCassandraへの移行計画を発表した。この計画は今月に完了している。HBaseやHypertable、Tokyo Cabinet/TyrantやVoldemort、そしてDynomiteなどいくつかの同類のプロジェクトを検討した後、彼らがCassandraを選んだ理由は、
それぞれのシステムが長所と短所を持っていますが、Cassandraはこれらすべての良い点を取り込んでいます。列指向データストレージを提供しているので、単純なキー/バリュー型のストレージよりも多少は構造化してデータを保持できます。また、可用性の高いピアツーピアで連携する分散環境でも動作します。未実装の重要な機能もありますが、私たちを目的地に近づけてくれるのは、他のソリューションではなくCassandraなのです。
DiggはLAMP構成から脱却するためにインフラを完全に再構築した。この再構築作業で一番の難点になったのがMySQLだ。他のSQLデータベース同様、MySQLは読み込み処理に対して最適化されていて、書き込みは必ずしも適切に制御できていない。
MySQLから脱却しようと思った最大の動機は、ものすごい勢いで際限なく増えていくデータを扱う、高性能で書き込み処理に特化したアプリケーションを構築するのが次第に難しくなってきたことです。データが爆発的に増えることで私たちは水平そして垂直のパーティショニング戦略を適用しなければなりませんでした。しかし、この戦略を採用したことで関係データベースを使っていることの価値はほとんどなくなってしまいました。しかもオーバヘッドは残ったままです。
システムが成長するにつれ、冗長性とネットワークの性能を確保するため複数のデータセンターで運用することが大事になってきました。また、キャパシティを確保しダウンタイムなしで破損したノードを取り替えることができるようにしておくことも重要です。また、これからも一般的なハードウエアを使い続ける予定であり、これらのハードは頻繁に故障するだろうと想定して計画を立てています。このようなことを総合的に考えるとMySQLでは運用がますます難しくなるだろうと考えました。
一方、RedditはmemcacheDBの抱える問題と取り組んできた。最初はRAMを追加することで対処していたが、長期的な観点から解決する必要があることは明確だった。結局、彼らは10日間でCassandraへの移行を実現した。彼らは、1人の開発者と“Cassandraの素晴らしい開発者とコミュニティの力を借りて移行を実現しました。また、EC2を使って新しいインスタンスのテストと最終的な配置を行いました。”.
FacebookやTwitterのような、多くの大規模サイトが既にCassandraを使っているか使う計画を立てているので、デファクトのスケーラビリティ対策としてMySQL + memcachedを選択する時代は終わったという人もいる。Todd Hoff氏はMySQLがすぐに消え去るとは思っていないが、第一の選択肢であり続けることはないと考えている。
今現在の状況から考えれば、MySQL+memcachedの時代が終わりつつあるのは明らかです。もちろん、状況は急には変わりません。古い技術が完全に消え去ることはほとんどありえません。いまでも馬に乗る人がいますし、CDで音楽を聞く人もいます。時代遅れの電磁気型情報配信技術であるテレビが完全にインターネットに取ってかわることもないでしょう。しかし、大多数の人は新しい時代に移行します。…
MySQL+memcachedの背後にある多くの考え方が的を得ているのは明らかですし、新しいシステムの中でも生かされます。しかし、これらの考え方は少し不格好です。そこで開発者たちがやってきて様々な溝を埋め、角にヤスリをかけることで、新しいエコシステムと新しい時代の基礎になるような新しい強力なプラットフォームを作りました。
“MySQL+memcachedの時代は終わりつつあるのは間違いない”という氏の考えに対して、memcachedはこれからも長く使われるだろうと考えているMark Atwood氏が反論のコメントをしている。
スケールすることで性能を改善する方法の最新技術としてのmemcachedの時代は確かに"終わりつつある"のかもしれませんが、これはmemcachedに落ち度があるからではありません。その他の技術的な選択肢(代替手段ではなくて選択肢)が現れつつあるからです。…
しかし、だからといってmemcachedが使われなくなることはないでしょう。高性能なキー/バリューストアの技術はひとつの構成要素として使いやすく、他のシステムのサブコンポーネントとしても扱いやすいのです。
memcacheがこれからも進化していくことは間違いないと思います。様々な実装がされるでしょうし、制限も解除されるでしょう。管理ツールも豊富になるでしょうし、memcachedプロトコルを使う他のシステムも現れるでしょう。memcachedが使えることを前提にしたORMやフレームワークもきっと出てきます。共有ホスティングやクラウド環境に対応したプロトコルや実装も現れるでしょう。
その後、Todd Hoff氏は自身の記事に対して次のようなコメントをしている。“キャッシュ技術やMySQLがなくなってしまうと言おうとしたわけではありません。メモリ全体はディスクについての新しい課題だと考えています。…過ぎ去りつつあるのはMySQLとmemcachedの組み合わせのことです。スケーラブルなシステムを開発するときのデフォルトのプラットフォームとしてこのふたつは互いに補完し合ってきました。”
現在でもMySQLとmemcacheの組み合わせがスケーラビリティについての課題に対する優れたソリューションであり続けているが、非SQLのソリューションも生まれている。これらの方法は巨大なシステムにより良い効果を提供しそうだ。