Twitterが、Cassandraの本採用を断念。「いまは切り替えの時期ではない」
「いまは新しい技術への大規模な移行をする時期ではないと確信している」。Twitterは、サービスの核となるツイートを保存するデータベースを、MySQLによる大規模分散データベースから、NoSQLデータベースであるCassandraへ移行しようとしていました。しかしCassandraへの移行作業を中止し、引き続きMySQLでの運用を継続すると、Twitter Engineering Blogへのエントリ「Cassandra at Twitter Today」で明らかにしました。
これは戦略の変更だ
Twitterは利用者からのツイートを、Scalaによって独自開発したミドルウェア「Gizzard」とMySQL、そしてmemcachedを用いた大規模分散データベースに保存しています。
しかしこうした複雑なシステムによる運用は非常に手間がかかり、人的コストを中心としたコストの増加が非常に大きくなってきたため、NoSQLデータベースのCassandraに置き換える方向で作業をしていました。この経緯については2010年3月8日の記事「TwitterとDiggがNoSQLの「Cassandra」を選ぶ理由」で紹介しています。
新たなデータベースにNoSQLのCassandraを選んだ理由として、単一障害点がなく、データベースへの書き込みが高速かつスケーラブルで、オープンソースであることが挙げられていました。
ところが7月9日のTwitter Engineering Blogでは、次のようにCassandraへの移行は見送ったとのこと。
For now, we're not working on using Cassandra as a store for Tweets. This is a change in strategy. Instead we're going to continue to maintain our existing Mysql-based storage.
ツイートの保存先としてCassandraを使うための作業を中止した。これは戦略の変更だ。私たちは既存のMySQLベースのストレージを利用し続けることにする。
We believe that this isn't the time to make large scale migration to a new technology.
いまは新しい技術への大規模な移行をする時期ではないと確信している。
6月15日にPublickeyで公開した記事「Twitterがこのところ不調だった原因は「内部ネットワークの過負荷」と説明」にもあるように、Twitterはこのところ設定ミスやワールドカップなどによる負荷の増加といった理由でシステムが不安定な状態が続いていました。Cassnadraへの移行の中止は、恐らくはそうしたことが背景にあるのではないかと推測されます。
ただしTwitterは全社的にCassandraを利用しないわけではなく、リサーチチームの分析結果や、地理チームなどではCassandraを用いているとのことですから、あくまでもツイートのストレージとしてのCassandra利用を断念したということのようです。
関連記事
- Twitterの大規模システム運用技術、あるいはクジラの腹の中(前編)~ログの科学的な分析と、Twitterの「ダークモード」
- Twitterの大規模システム運用技術、あるいはクジラの腹の中(後編)~Twitterのサブシステム「Unicorn」「Kestrel」「Flock DB」
- Twitterがこのところ不調だった原因は「内部ネットワークの過負荷」と説明
- Twitterが分散フレームワーク「Gizzard」公開! Scalaで書かれたShardingを実現するミドルウェア
NoSQLデータベースについても多くの記事がありますので、「NoSQL」タグでぜひご覧ください。