ビックデータとは
はじめに、Cassandraが得意としているビックデータについて解説します。ビックデータという言葉が一般的に使われていますが、実際のところ何を指すのか、これまでとの違いは何かを説明します。
何に使われているのか
「ビックデータ」とは、通常の処理では処理不可能な膨大な蓄積データを指す言葉です。これまでは、処理することをあきらめていた膨大なデータを処理対象とすることで、新しい答えを見出すことを目指しています。しかも短時間で処理することで、タイムリーな活用を目指すのです。
これまでは、ばらばらに発生していたデータが、通信環境の発達でリアルタイムに収集することが可能になりました。個々のデータは小さくても、大量に集まれば膨大なデータです。せっかく集めた膨大データを活用するために時間が掛っては何もなりません。大量に集めたデータを短時間に効率よく処理して、処理結果を得られる必要があります。
「ビックデータ」の活用モデルとして、よく紹介されるのがライフラインでの活用です。各種のライフライン(電気/水道/ガス)のメーターを通信回線に接続することで、リアルタイムに使用量を収集できるようになりました。もちろん、対象が多ければ膨大なデータになります。これらのデータをうまく活用できれば、飛躍的にきめ細かな解析が可能です。
何が新しいのか
これまで、データ処理の担い手はRDB(リレーショナルデータベース)でした。ビックデータの場合は、NoSQL(Not only SQL)が担い手です。では、RDBとNoSQLは何が違うのでしょうか。
RDBは、膨大なデータを格納でき、効率的に処理が可能です。では何が不足なのでしょうか。RDBは、データの一貫性を保証するのが大前提となっています。データの一貫性を保証するための機能を、ACID特性(Atomicity Consistency Isolation Durability)と言います。RDBは、ACID特性を実現するために数々の機構を組み込んでいます。実は、この数々の機構が処理時間の足枷となっているのです。NoSQLでは、データの一貫性の保証は目をつぶって高速処理を主眼としています。例えば、同時に同じデータ更新があれば、単純にリクエスト順に更新を行います。つまりNoSQLは、高速処理にフォーカスしたデータシステムと言えます。
また、RDBは複雑なデータ構造を格納して処理できるようになっています。それに対して、NoSQLは単純なデータ構造を処理対象としています。単純なデータ構造なので、高速に処理が可能なのです。
NoSQLの代表として話題となるmemcachedでは、Key-Valueストアという形でデータを保持しています。つまり、Key(キー:インデックス)に対してValue(値)が対応するもので、keyは重複せず一意となるものです。このような速度重視のデータ構造では、非常にシンプルなデータしか扱えません。後述するCassandraなど多くのNoSQLでは、市場のニーズに合わせて、もっと複雑なデータ構造を扱うことが可能です。
市場の動向
ビックデータを処理するためにNoSQLの利用が増大しています。しかし、RDBがNoSQLに置き換わるのではありません。NoSQLとRDBの使い分けが重要と言えます。どちらを使用すれば効率的なのかを見極める必要があります。
また、NoSQLとRDBがお互いの特徴を備えるようになっています。例えば、MySQL5.6には、memcachedのAPIが実装されており、MySQLをkey-Valueとして使用することが可能になっています。
逆にCassandraには、SQLとよく似たステートメントで利用できるCQLが実装されています。つまり、SQL感覚でCassandraが使用できるのです。
このようにNoSQLとRDBは、次第に接近してきています。将来的には、いずれの特徴も備えたプロダクトの登場もあるかもしれません。