NoSQLTech Basics/Keyword

SQLを否定するかのように読める「NoSQL」。従来のSQLリレーショナルデータベースと何が違うのか? どう捉えればよいのか?

» 2016年01月27日 05時00分 公開
[島田広道デジタルアドバンテージ]
Tech Basics/Keyword
Windows Server Insider


「Tech Basics/Keyword」のインデックス

連載目次

 「NoSQL」とは、「SQL(Structured Query Language)」ベースのリレーショナルデータベース(RDB)とは別の原理/仕組み/データモデルなどを採用したデータベースあるいはDBMSを指す「総称」である。「Not Only SQL」の略称とされることが多い。特に大規模なWebサービスでよく利用されている。その原理や特性は一様ではなく、製品によってメリット/デメリットは大きく異なる。

RDBの不得手=NoSQLの得意分野!?

 NoSQLは、従来のRDBだと処理が難しい、あるいはコストが高くなりやすい用途に向けて開発されてきた。そのため、RDBとNoSQLはメリット/デメリットが相反する傾向がある。まずはNoSQLのメリットを大まかに記す。

●構造が定まらない複雑なデータを処理する

 RDBでは通常、格納するデータを一定の規則に従ってそろえることが求められる。だが、IoTやビッグデータの処理で集められるデータは多種多様かつ量も定まらないことがある。

 一方NoSQLは、RDBよりもっと柔軟に複雑なデータ構造に対応できるデータモデルを採用している(後述)。

●非常に多量のデータを素早く処理する

 IoTあるいはビッグデータの処理では、単一のコンピュータに格納できないほど多量のデータが集まることが珍しくない。また、場合によってはリアルタイムで分析結果を出力しなければならず、高速性も求められる。

 だがRDBでは、特に書き込み頻度が高い場合、データを複数のコンピュータに分散配置したり、それによってスケールアウトして性能を高めたりするのが容易ではない。

 一方NoSQLでは、データの分散やスケールアウトが容易なアーキテクチャとなっており、こうした用途に対応しやすい。

一様ではないNoSQL

 RDBと比べたときのNoSQLの特徴の一つは、その原理や実装方式が複数並存していて、それによってメリットやデメリットも大きく変わってくることだ。そのためNoSQLの製品を選ぶ場合、どういったタイプでどのような用途に向いているのか、まず分類して検討する必要がある。以下に代表的な分類方法を記す。

●データモデルによる分類: key-value(キー・バリュー)型

 「value」は保存される個々のデータを指し、「key」は「value」の各データを識別するために付けられたID値のようなものだ。keyを指定することで、対応する1つのデータを特定するという非常にシンプルな構造のため、処理性能も高い。また、写真や動画のようにコンピュータでは識別が難しい種類のデータでも、適切なkeyを設定することで簡単に特定できる。

 ただし、複数条件の組み合わせなど、RDBのような複雑な検索条件は原則として指定できない。

key-value型の概念 key-value型の概念

●データモデルによる分類: カラム(列)指向型

 「ワイドカラムストア型」とも呼ばれる。key-value型に比べ、単一のkeyに対して複数のカラムを割り当て可能で、そこに複数のデータを保存できる。またカラム数はダイナミックに増やせる他、データのない空のカラムがあってもよい、という柔軟性がある。さらに、カラム単位でデータを格納していることから、多数の行(key)に対して少数のカラムを検索・処理するのが速い、というメリットがある。

●データモデルによる分類: ドキュメント指向型

 ドキュメントすなわち文書形式でデータを保存するデータベースである。文書の記述にはXMLやJSONといった書式がよく用いられる。key-value型と違い、複雑な検索条件を指定できる。またRDBのようなスキーマは不要なため、スキーマに関わる手間を省ける。

ドキュメント指向型の概念 ドキュメント指向型の概念

●データ保持期間による分類: 揮発性と永続性

 データを保持できる期間という点では、「永続性」と「揮発性」という分類もある。

 「永続性」ではディスクなどのストレージにデータが保存される。(ストレージの深刻な障害を除けば)データが消える恐れはない一方、次に説明する揮発性ほどの性能は発揮できない。NoSQLに限らずRDBでも一般的である。

 「揮発性」ではデータがディスクではなくメインメモリ上に保存される。データへのアクセスが非常に速い一方、トラブルなどでデータが消えてしまう可能性がある。別のデータベース/ストレージとクライアントの間に入って、キャッシュとして利用されることがよくある。

 この他に、両タイプを組み合わせた併用型もある。すなわち、データの永続性を維持しつつ高速なアクセスを実現できる。

多様な環境で利用できる

 NoSQLに分類されるデータベース(DBMS)は、OSSあるいは有償製品として数多くリリースされている。LinuxなどのOSにインストールして利用できるソフトウェアとして提供されているだけではなく、クラウド上にDBaaS(DataBase as a Service)として実装されたサービスも数多い。


 NoSQLはもともとRDBの置き換えではなく、RDBが苦手とする用途向けに開発されてきた。そのため、RDBとともにデータベースの選択肢の一つとして捉えた方がよい。

 ただNoSQLが普及するにつれて、RDBもNoSQLもお互いの特徴を取り込んだ製品が登場しており、さらに分類が難しくなってきている。NoSQL製品を選ぶ際には、こうした点と前述のデータモデルなどの違いによく注意しつつ、十分に検討すべきだろう。

■関連記事


「Tech Basics/Keyword」のインデックス

Tech Basics/Keyword

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。