MySQLは、リレーショナルデータベース(関係データベース)ですが、最近では、ビックデータを扱うNoSQL(非関係データベース)が台頭しています。(最近の新入社員もビックデータとかNoSQLの方が関心が高いようです。)

今回の記事では本サイトの趣旨から少しはずれますが、リレーショナルデータベースとNoSQLとの違いについて見ていきます。

ビックデータとは

そもそもビックデータとは何なのでしょうか。扱うデータが巨大ならビックデータなのでしょうか。
ビックデータを理解するにはデータ容量だけに着目するのではなく、もっと多面的に様々な側面から捉えないといけません。

ビックデータと伝統的なRDB(関係データベース)向けデータの違いは大きく3つです。

  • データ量
  • 要求処理速度
  • 精度

そもそも伝統的なRDBとビックデータとでは、使われるシーンが異なります。

例えば銀行口座の管理データベースだと最重要視されるのは精度でしょうか、それとも要求処理速度でしょうか。

ここでいう精度とは、例えば金額がどれだけ緻密に扱うかということです。数十円、数百円でも異なっていたら大問題になることは容易に想像できると思います。それどころか、何銭という単位でもデータ更新のたびに違っていたら大問題となります。

では、ある時間帯に全国のコンビニで学生が何人買い物したか調べたいとします。いわゆる、トレンド調査というもので、一ヶ月と二ヶ月とか継続的に行われるとします。この人数は1人のズレもなく集計できてないとダメなのでしょうか。トレンドをつかむ程度ならある程度のズレは許容範囲でしょう。総数が数万人なら十人、二十人の誤差もまあ無視しても支障はないでしょう。

つまり、同じ情報を扱うにしても一個一個のデータが重視されるケースと全体の塊として捉えるケースがあります。

前者に向いているのが従来型のリレーショナルデータベース、後者がいわゆるビックデータを扱うデータベースということになります。

従来型データベースとの違い

では、これまでのデータベースと具体的にどんな風に扱い方が変わってくるのでしょう。

最も大きな要素は、排他制御を緩くしたりデータ処理の信頼性、すなわちACID特定をある程度諦める点です。

あるレコードに二重更新がかかってもOKとし、そのかわりに処理スピードを上げる、少し極端ですが、排他制御を緩くするとはそういうことです。

上述で示した例でいうとトレンドや売れ筋を見きわめるのに何年もかかっていては仕方ありません。データ分析が終わったけどその流行も終わってしまっているでしょう。

そのため、ビックデータは分散処理やNoSQL(非関係データベース)を使って、精度を度外視してでも、とにかく高速にデータ処理することが求められるとういことです。

 ビックデータ従来型データベース
データ量小~
要求処理速度(比較的)低
精度(比較的)低
利用技術分散処理非関係データベース(NoSQL)関係データベース(RDB)

まとめ

従来型のデータベースはデータを低速、高精度に処理します。データ量の定義は特にありませんが、一個一個の情報を大切にするなら大容量でも中容量でも従来型データベースを使うしかありません。

対して、ビックデータを扱うデータベースは、大容量以外のシチュエーションはないと言えます。そもそも従来型データベースで扱いきれない大規模情報処理のために生まれたデータベースというわけです。