ビッグデータとデータベース ~NoSQLってなんだろう~

ビッグデータとデータベース ~NoSQLってなんだろう~

最近では、ビッグデータという言葉を電車のモニター広告でもチラホラ見かけるようになりました。ビッグデータを利活用する上で、大量のリッチなデータを蓄えるデータベース技術として、NoSQLがあります。現在主流のデータベース技術であるRDBMSと、最新技術のNoSQLの比較をご紹介する、初めてNoSQLを知る方にはピッタリの記事です。

あの大物アーティストも利用している!広く普及するビッグデータ技術

通勤電車に乗りながら、「あと二駅で目的地かな……。」と電車の広告用モニターにふと視線を向けると、流れる企業のCMに “クラウド” という文字の隣に “ビッグデータ” の文字。駅から降りれば、“ビッグデータの利活用” を謳った大企業の広告。インターネットで検索すれば、画像や動画広告にも “ビッグデータなら○○!” の文字が……。

数年前まで、ビッグデータという言葉は、最先端技術として知る人ぞ知る技術であり、IT企業に勤めていても、知っている人が少ないキーワードのひとつでした。しかし、最近では、IT業界だけでなく幅広い層の人が駅やインターネットの広告などで、比較的見る機会が多い言葉のひとつになりました。また、Google検索で“ビッグデータ“を調べれば1,000万件以上ヒットし、日本語で紹介されているホームページやブログもたくさんあることから、浸透してきていることが分かります。

最近では、音楽バンドの “Dreams Come True” がアルバム制作において、カラオケで歌われている曲のランキングをベースにした4,700万人分のビッグデータを利用したことで話題になりました。ファンのリクエストに答えた曲などを分析し、人気の曲やリクエストの多い曲をアルバムに収録して販売したことで、売り上げチャートでも上位にランキング入りするなど、売上に大きく貢献しました。

そもそも “ビッグデータ” ってなんだろう?

この様にビックデータが活用され始めていますが、みなさんビッグデータの定義はご存知でしょうか?

ビッグデータはザックリいうと……残念ながら、まだ正確な定義は決まっておりません。
しかし、ビッグデータの説明として“ガートナーの定義”で有名な3V

  • Volume : データ容量の大きさ
  • Velocity : データ処理の速度
  • Variety : 多様なデータ

が、よく取り上げられます。
ガートナーの定義では、

「ビッグデータとは大量に集めた多様なデータを、より速いデータ処理で蓄積・分析することによって有効活用する技術」

としています。今後の動向を予測する際に最も有望な技術として、科学研究者にも大きく注目されているわけです。

また、実用例としてデータを利活用したビジネス、“ビッグデータビジネス” も、ビジネス戦略や学術論文で多く取り上げられています。実際に、ビジネスに取り入れたことで業績が右肩上がりになった企業も事例として沢山あります。

ビッグデータを武器にすれば、市場や顧客のニーズにあったピッタリのサービスを展開して成功することもあるのです。
これからもビッグデータの成長に注目です。

ビッグデータに適したデータベースってなんだろう?

現在使用されている主流なデータベースとして、RDBMS (リレーショナルデータベース管理システム) があります。RDBMS は行と列によって表形式で表され、データを格納します。データの重複をなくしシンプルな構造にすることで、複数のテーブルに分けることを正規化といいます。また、正規化された複数のテーブルを結合することで、複数の表からデータを取り出すことができます。

RDBMS の代表的な製品としては、Oracle DB や Microsoft SQL Server などがあります。

近年、先に述べたように、取り扱うデータの量も膨大な量になりました。また、複雑で多種多様な形式のデータも増えています。さらに、モバイル端末機器やタブレット端末、パソコンの普及により、アクセスが集中した際も影響の少ない、高速な処理が重要視されています。

このような背景によってデータを取り扱う環境が変わり、RDMBSはビッグデータの3V全てに対応することが難しくなりました。

理由はいくつかありますが、一つはデータの多様性により非構造データが増えてきており、RDBMSでは格納することが難しいものが多くなったという点です。これは、RDBMSがデータを格納する際、スキーマを定義する必要があるためです。非構造データとなると、再定義に時間がかかってしまいます。

データの処理が膨大な量になると、サーバのパフォーマンスが高くなければなりません。“それならば、マシンそのものの性能を上げてしまえば良い” となり、RDBMSでは 1台のサーバで管理するスケールアップという方法が、サーバ性能を向上させる選択として主流です。

しかし、スケールアップのメンテナンス中にはサービスを停止させなければならないので、業務が止まってしまうなどクリティカルな問題も同時に発生します。

そこで、並列処理技術などで採用されている、スケールアウトという方法です。複数台のサーバを用いて、1台1台が高性能でなくてもそれ以上の性能を引き出すことが可能です。また、スケールアウトのメンテナンス中でも高い可用性を持っているため、サービスが停止することはありません。

スケールアウト自体は RDBMS でも出来ますが、商用 RDBMS を使用する場合が殆どなので、ライセンスの都合上、1台1台に利用ライセンスを入れなければならないなど、スケールアップよりもコストが高くついてしまうこともあります。

これらの問題を解決し、ビッグデータの 3V にも柔軟に対応したデータベース技術があります。
それが、NoSQL という技術です。

NoSQL ってなんだろう?

NoSQLでは “キー” と “バリュー” と呼ばれる非常にシンプルな形式でデータを管理し、問い合わせ処理を行います。SQL ほど多様なクエリがあるわけでなく、データの読み書きの速度に特化しているというのが特徴です。

データを格納する形式も、RDBMSでは事前にスキーマを定義して格納しますが、NoSQL ではダイナミックスキーマと呼ばれる方式で、スキーマを意識しないで格納することが出来ます。大量のデータをシンプルな形式で格納し、読み書きを非常に高速処理できるのが特徴です。

ただし、取引データや業務システムなど、フォーマットが定義されているデータでは、RDBMS の方が処理に向いています。これは、整合性の強いトランザクション処理を行う RDBMS だからこそ、スキーマを定義し無駄のない形でデータを管理しているからです。しかし、非構造のデータなどスキーマの定義の難しいものは、RDBMSで格納することが困難です。

データ分析をする際は、大量のデータを利用します。雑多で様々な種類の、一見役に立たなそうな大量のデータを格納し、その中からデータ分析をすることでデータを利活用します。このような、ビッグデータを意識した非構造で様々なデータを大量に格納するデータベースには、NoSQL が非常に便利なのです。

また、RDBMSではスケールアップによりサーバの処理能力を向上させるという手法が主流でしたが、NoSQLでは、基本的にスケールアウトによる拡張を想定して作られています。安価なサーバを複数台使用して、データの分割処理やコピーを行うことで、ネットワークの分断耐性と高可用性をデータベースに持たせることが可能です。これは、CAP 定理(ブリュワーの定理) における Availability (可用性) と Partition-tolerance (分断耐性) に当てはまる NoSQL の特徴です。

つまりNoSQLとは、スケールアウトによる高可用性と分断耐性を持ち、多種多様にある大量のデータを、非常に高い処理能力で対応できる、ビッグデータに対応したデータベースなのです。

製品としては、HBase, Cassandra, MongoDB, Redis, Couchbase, DynamoDBなどがあります。DB-Enginesのデータベースの人気ランキングでは、オープンソースでありながら NoSQL の製品であるMongoDBが4位につけるなど、認知度も上がってきています(2015年8月31日 現在)。

これから、日本市場でも徐々に増えていくであろうという NoSQL。ぜひ、この機会に勉強してみてはいかがでしょうか。

記事は、予告なく変更または削除される場合があります。
記載された情報は、執筆・公開された時点のものであり、予告なく変更されている場合があります。
また、社名、製品名、サービス名などは、各社の商標または登録商標の場合があります。