NoSQLとは│web制作会社のデジタルマーケティング関連コラム

Columnコラム

Webマーケティング

デジタルマーケティングに利用されるNoSQLとは

デジタルマーケティングに利用されるNoSQLとは

2015/08/21
このエントリーをはてなブックマークに追加

こんにちはサーバーエンジニアの橋本です。

昨今デジタルマーケティングという言葉がよく使われるようになってきました。
デジタルマーケティングとは、WEB上のログデータやSNSの投稿データ等、デジタルで得られたデータを利用したマーケティング手法のことを言います。とくに最近ではビッグデータといわれるような大量のデータから効果的なユーザー動向データを取得し、マーケティングに利用するケースが多くあるようです。
そのため、そのデータ処理を支えるインフラ、特にデータベースも大容量データの高速処理が求められるようになってきました。少し前まではデータ処理といえばリレーショナルデータベースにデータを格納し、SQLにて処理をするという手法が一般的でした。しかし昨今リレーショナルデータベースソフトの複雑化により高速処理ができなくなってきたということで、NoSQLという仕組みが使われるようになってきています。今回はその高速処理に有効なNoSQLについての説明になります。

digitalhashimoto_15080801.png

NoSQLとは

wikipediaによると、NoSQLとは

<引用>
NoSQL(一般に"Not only SQL"と解釈される)とは、リレーショナルデータベース管理システム (RDBMS) 以外のデータベース管理システムを指すおおまかな分類語である。 リレーショナルデータベースをやみくもに使用してきた長い歴史を打破し、それ以外のデータベースの利用・発展を促進させようとする運動の標語としての意味合いを持つ。 関係モデルではないデータストアの特徴として、固定されたスキーマに縛られないこと、関係モデルの結合操作を利用しないこと(場合によっては単にそのような機能が欠落しているだけ)、水平スケーラビリティが確保しやすい事が多いこと、トランザクションを利用できないものが多いことなどが挙げられる。
</引用>

説明が少し難しいかもしれませんが、これまで主流だったリレーショナルデータベースではデータ保存方法が複雑で、かつSQLにより複雑なデータアクセスが可能だったため、情報を貯めれば貯めるほど、データにアクセスする速度が遅くなってしまっていました。そのため、データ保存方法をシンプルな構造にして高速処理できるように考えられたのがNoSQLという概念になります。
「NoSQL(Not only SQL)」という言葉が示すようにリレーショナルデータベースで使われてきたSQLとは違い、複雑なデータアクセスはできず、特定にキーに対してのみアクセスを行う形になり、データ保存方法もシンプルな構造になったのが特徴です。
そのため高速処理、スケーラビリティ(いわゆる拡張性)といった点でリレーショナルデータベースより優れており、昨今言われているビッグデータなどの大量データの高速処理に適していると言われています。
一方、従来のリレーショナルデータベースのように複雑な処理は苦手としているため、その分NoSQLを利用する際はシステム側で不足部分の処理を追加する必要があります。

現在NoSQLの考え方で作られた製品は数多くありますが、大きく分けて、高速なパフォーマンスとデータ分散が行えるため拡張性に優れている「キーバリュー型」、データはRDBのようにレコード(行)で管理され、キーバリューと同じようにキーを使用して列単位でアクセスする「ワイドカラムストア型」、キーに対してバリューより複雑なドキュメントとしてデータを格納する「ドキュメント型」、グラフ理論に基づいた要素で構成され、従来のRDBでは不可能だった形でデータの関係をモデル化した「グラフ型」の4つのカテゴリーに分類されます。
中でも特にキーバリュー型でのデータ保存方法である「Key-Valueストア」は、Googleの検索エンジンで使われている「BigTable」に採用される等、No SQLを語る上では欠かせない保存方式であると入れると思います。

では、このNoSQLにて広く使われている、Key-Valueストアとはどういった保存方式なのか。次はこのKey-Valueストアについて説明していきます。

digitalhashimoto_15080802.png

高速処理を実現するKey-Valueストアとは

Key-Valueストアとは一つのKeyに対し1つのValue(データ)を登録する形のデータ格納方式になります。プログラムを少しでもかじったことがある人であれば、PerlやPHPにある連想配列のような物であるといえばイメージしやすいでしょうか。
今までプログラムをかじった事がない人のために説明すると、Key-Valueストアのデータは

KEY => VALUE
-----------------
"apple" => "red",
"banana" => "yellow",
"grape" => "purple"

のような感じのデータの集まりになります。

Key-Valueストアの特徴は、とくかく高速処理とスケーラビリティ性に優れていると言われています。
アクセスはキーに対して行うだけのため、Whereやjoinを使って複雑な検索を行えるSQLより圧倒的なパフォーマンス(検索速度)を得る事ができます。また、スケーラビリティといった点では、従来のリレーショナルデータベースでは1台のサーバーで対応できなくなった場合「データの整合性(Consistency)」「データの可用性(Availability)」「データの分散化(Partition-tolerance)」の3つを同時に保証して拡張するのは難しいと言われていたのに対して、それらを満たしつつ複数サーバーへの分散を行うことができます。
一方、リレーショナルデータベースのように、テーブルとテーブルを結合(SQLでいうJOIN文)して複雑な処理を一つのコマンドでこなすようなことはできず、トランザクションによるデータ一貫性を保証するための機能「ACID(Atomicity Consistency Isolation Durability)特性」もありません。そのため、それらの機能を補うためにソフトウェア側で処理の追加をする必要があります。
つまり今までリレーショナルデータベースで行えてきたことがそのままKey-Valueストア(No SQL)に代わるわけではなく、開発するシステムの場面、導入目的に応じて使い分けていく必要があるといえます。

まとめ

いかがでしたでしょうか。今回は大容量のデータを処理するのに効果的なNoSQLとその中の一つのデータ保存方式であるKey-Valueストアについて説明してきました。
NoSQLは今後デジタルマーケティングがマーケティングの主流となって行く中で、WEB上のビッグデータを処理するために、必要となっていく技術だと思います。WEBの開発現場では、まだ従来同様にリレーショナルデータベースを使うことが多くあると思いますが、大型のシステムを開発する際は、部分的にでも導入を検討してみてはいかがでしょうか。

ホームページ制作でお困りの方はホームページ制作会社ティファナにご相談ください!

お問い合わせはこちらから

関連するサービス

ホームページ制作

text_totop