RDBMSとNoSQLは相互補完的関係--ビッグデータを支える技術(2)

栗原潔 (テックバイザージェイピー)

2011-09-12 11:42

 前回は「ビッグデータ」の世界における最も下の階層であるストレージについて見てきた。今回は、ひとつ階層を上げて「ビッグデータ」のデータ管理の階層を見ていくことにしよう。

「ビッグデータ」の世界でもRDBMSは重要

 まず、データ管理、いわゆる、データベースの階層から見ていこう。「ビッグデータ」のそもそもの定義として「従来型のデータ管理技術(要するにRDBMS)では適切に管理できない量のデータ」という考え方がある。

 また、「ビッグデータ」のデータストア技術としてNoSQLと呼ばれるカテゴリのソフトウェアがある(NoSQLについては後述)。これらの点から「ビッグデータ」の世界とRDBMSの世界は相容れないという印象があるかもしれないが、そうではない。

 従来型RDBMSによってもペタバイト級のデータの管理は十分に可能だ。これは理論上可能というだけではなく多くの事例によって裏付けられている。たとえば、ネットオークションの最大手eBayでは十数ペタバイト級のデータ(その大部分はウェブログという準定型データである)に対する、ほぼリアルタイムの分析を多数のユーザーが日常的に行っている。

 とは言え、従来型RDBMSは非定型+超大量というデータの扱いは必ずしも得意としていないのは確かだ。そもそも、表形式でデータを管理するというRDBMSの基本思想は、定型データには適しているが非定型データにはあまり適していない。

 また、原則的にデータの厳密な整合性(トランザクション特性)を確保することもRDBMSの特徴だが、これも数多くのマシンに分散されたデータを処理する場合には足かせとなる。直感的にわかるように、完全なデータ整合性を確保するためには、データ更新の同期のためにデータ処理を行うプロセス間のやり取りが不可欠だが、データが大規模に分散された環境ではプロセス間通信の遅延がボトルネックになり、十分な性能が出せなくなるからだ。

NoSQLは「SQLにNo」ではない

 このようなRDBMSの基本的問題点を解決するためのデータストア技術がNoSQLだ。言うまでもなく、SQLはRDBMSで共通的に使われるデータアクセス言語であり、NoSQLはRDBMSとはタイプの異なるデータストアを目的としたテクノロジの総称であると言える。

 簡単に言えば、データ整合性、そして、データの厳密な構造(スキーマ)をある程度犠牲にする代わりに分散処理(並列処理)によるスケーラビリティを追究したテクノロジだ。NoSQLの例としては、Facebookが開発し後にApacheソフトウェア財団に移管したCassandra、ApacheのHBase、MongoDB、AmazonのSimpleDBなどがある。

 一般に水平スケーリング型のクラウドサービスではNoSQLのデータストア機能が提供されていることが多い。このような環境においては、通常のRDBMSでスケーラビリティを提供することが難しいからだ。

 ここで、Facebookは自社サービスの大量データ管理のためにわざわざCassandraというNoSQLデータストアを開発したわけだが、同社はCassandraのみを使用しているわけではなく、依然としてRDBMSであるMySQLを積極的に使用しており、Cassandraはサーチなどの部分的目的に使用しているに過ぎない。DeNAやミクシィなどの他の大規模ソーシャル・ネットワーク・サービス企業においても状況はほぼ同様だ。

 つまり、RDBMSの世界(SQLの世界)とNoSQLの世界は決して二律背反的なものではなく、相互補完的なものなのだ。すなわち、NoSQLは「SQLに対してNo」という意味ではなく「Not Only SQL」の略としてとらえるべきということだ。

ZDNET Japan 記事を毎朝メールでまとめ読み(登録無料)

関連記事

ZDNET Japan クイックポール

所属する組織のデータ活用状況はどの段階にありますか?

NEWSLETTERS

エンタープライズコンピューティングの最前線を配信

ZDNET Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]