Netflixが採用するCassandra/マルチテナントのコンテナ型DBとしてのSAP HANA:Database Watch(2014年12月版)(1/2 ページ)
ハードコアな負荷テストツールを公開したことでも知られる「Netflix」が採用するデータベースとは? インメモリDB「SAP HANA」のマルチテナント対応についても紹介。
最近分散データベース管理システム「Cassandra」が東京でミートアップイベントを行うなど活気づいてきています。どのような仕組みでしょうか。SAP HANAは最新版SP9が出ました。キーワードは「シンプル化」です。
全てのノードが等価、Cassandraは「爆速で拡大中」
NoSQLの一つであるCassandra。「前に聞いた気がするけど……」という方もいるかと思います。数年前に話題になり、近年は少し注目が下火になっていましたが、2015年には再び人気が再燃しそうな気配があります。Cassandraが注目される理由を探るべく、今回は2014年12月12日に開催されたオープンソースカンファレンス「OSC.Enterprise」でのDataStaxの原沢滋氏の講演を紹介します。
まずはCassandra誕生の経緯を振り返っておきましょう。CassandraはGoogleが論文として発表した「BigTable」とAmazonが発表した「DynamoDB」を基に、FacebookでCassandraが開発されました。Facebookは2008年にCassandraをオープンソースとして公開し、2009年にApacheソフトウェア財団に寄贈します。その後、2010年にはApacheのトップレベルプロジェクトへと昇格しました。Cassandraは近年のWebサイトが拡張性と柔軟なデータ形式を必要としている中で、BigTableとDynamoDBの思想を組み合わせて発展したデータベースといえます。
名称も整理しておきましょう。オープンソースで無償公開されているものが「Apache Cassandra」です。本稿で紹介するDataStaxとはCassandraのディストリビューターであり、同社がエンタープライズ向けに提供するCassandraの商用ソフトウェアが「DataStax Enterprise」です。DataStaxは2015年の早い段階で日本法人を設立する予定だということです。
Cassandraは、分散してスケールすることに注力して開発されたデータベース管理システムです。KVS(キーバリューストア)も特徴の一つです。分散化は特に徹底しており、マスターやスレーブ、アクティブやスタンバイという発想がありません。全てのノードは等価となっており、それぞれが分散することで単一障害点(SPOF)を排除する仕組みになっています。
それだけではありません。全体を統括するコントローラーに相当するノードがないということは、そこがボトルネックになることもありません。またそれぞれ等価ということは、台数を増やせば増やした分だけリニアにスケールするということです。
データを保全するためにはレプリケーションファクターでレプリカの数を設定します。例えば「replication_factor = 3」とすればデータは3重化され、最悪ノードが二つ落ちてもデータは生き残ることができます。もともとCassandraは「(ノードの)障害は起きる」という前提で作られており、耐障害性はとても高いです(詳しくは後述)。これはGoogleのBigTableがDNAに組み込まれているからでしょうか。
面白い特徴もあります。writeがとても早いのだそうです。全てのノードが等価であることから、アクセスしたノードのログに書き込めばコミット終了とするからです。代わりにreadの方はデータがどのノードにあるのか探す手間があるため、ライトの速さに比べたら「遅い?」と感じてしまうのだとか。同時多発的に大量の書き込みが発生するサイトに強みを発揮できそうです。
ここまでは仕組みについてです。「理論上はそうかもしれないけど、実際のところどうなの?」と思う方もいるのではないでしょうか。
NetflixもCassandraを利用
実はいま、CassandraおよびDataStaxは急速に大規模サイトで導入が進んでいます。ある企業では「7万5000以上のノード、十数Pバイトのデータで運用している」という話がありました。
ソニーのPS4が提供するサービスもほとんどのサーバーがCassandraだそうです。ユーザーがPS4でログインすると、実はCassandraのサーバーにアクセスしているのだとか。
もっと興味深い事例があります。米国の動画配信サービスに「Netflix」があります。もともとDVDレンタルを主とした事業を展開していましたが、2007年から映像ストリーミング配信も提供しています。定額の月額利用料で無制限にストリーム視聴ができ、対応可能な端末はテレビやパソコンだけではなくゲーム機など幅広く、米国ではとても普及しています(残念ながら日本ではサービス提供されていません)。
先日、米国におけるNetflixのインターネットトラフィックがYouTubeを超えたことが話題となりました。いま、米国におけるインターネットトラフィックはNetflixとYouTubeで6割を占めるそうです。これほどまでに普及したNetflixがCassandraで運用されているというのですから驚異的です。スループットは秒間1000万トランザクション。
少し前にNetflixはオンプレミスの商用データベースからAWS上のCassandraへと移行したそうですが問題なかったそうです。さらに少し前にAWSで起きた「massive reboot」も全く問題なく切り抜けたのだとか。「massive reboot」(日本では「再起動祭り」という呼称もありました)とは、「Xen」に脆弱性が発覚し、AWSはじめ関係するサービスが再起動を伴う保守を実行した件です(参考記事)。
Netflixが普段から障害対応にかなり注力していたのも興味深いところです。Netflixは「カオスモンキー」という人為的に障害を起こすツールを開発し、オープンソースで公開していました。
このツールで普段から障害に対する訓練を繰り返していたことと、耐障害性が高いCassandraを使用していたため、本当に再起動が必要な事態が起きても乗り越えられた、とNetflixはブログで報告していました。なお、Cassandraのロゴには「C*」もあります。ブログ記事の挿絵でサルを飲み込もうとしているのは「C*」、つまりCassandraが障害(=カオスモンキー)を駆逐した、という意味が込められているそうです。
さて、このCassandra、日本ではどうなのでしょうか? 実は水面下で徐々に広がっている、と原沢氏は言います。あるポータルサイト運営会社のシステム担当者は「近年社内でCassandraが爆速で拡大中」と話していました。選んだ理由は「パフォーマンスに優れ、拡張性が高く、SPOFがないこと」。いまは着実に運用ノウハウをためているところだといいます。
まだ気が早いですが、2015年4月には日本でCassandraのイベントが開催されます。そのときには技術動向や事例が開示され、日本での関心も高まるかもしれません。2015年、Cassandraはどこまでブレイクするでしょうか。
Copyright © ITmedia, Inc. All Rights Reserved.