Contents
NoSQLとは
NoSQL(Not Only SQL)とは、今までのデータベースの基本とされていたリレーショナルデータベースの管理システム(RDBMS)とは異なる、データベース管理システムの総称を指します。
NoSQLの特徴
NoSQLをRDBMSに比べた時のメリット・デメリットについて紹介します
メリット
高いパフォーマンス
NoSQLはデータに合わせてデータの格納方法を変更できるため、そのデータの処理が行いやすい形式で格納することができる。そのためビックデータのような膨大なデータから分析や検索などを行うときにRDBMSよりも高いパフォーマンスを発揮することが可能になります。
水平スケーラビリティ
RDBMSにはACID特性というセキュリティの面でとても重要な特性があり、これによってデータが改ざんされたり間違ったデータが登録されないようになっています。この性質により複数台のサーバでデータベースを共有している場合、1つのサーバで更新されたデータをすべてのサーバで更新することで整合性を保っています。
この性質により、サーバを増やして処理性能を向上させる水平スケーラビリティとはとても相性が悪いものになっています。
しかし、NoSQLではACID特性を持つ必要がないためサーバを増やして処理性能を高めても問題がありません。そのため垂直スケーラビリティと水平スケーラビリティのどちらも行うことができます。
デメリット
汎用性の低下
RDBMSに比べてNoSQLは専門性を高めているため、汎用性が低い設計になっています。そのため業務全般に広く活用する場合にはRDBMSのほうが向いているときが多いです。
技術レベル
NoSQLはそれぞれのデータベースの技術が異なるため、専門的なスキルを持っている人が少なく技術力をそろえるためのコストが大きくかかります。
データ整合性
トランザクション処理のようなACID特性を維持するような方法をとっていないため、正しくないデータが挿入されたり、データの矛盾が生じる可能性があります。
NoSQLの種類
キーバリュー型(Key Value Store)
このデータベースでは検索用のキーとバリューをペアとして格納します。考え方としては天気予報の日付をキー、天気をバリューにするような感じです。
キーバリュー型はさらに2つの種類に分けられます。
- キーバリュー・・・1つのキーに1つのバリューが格納される
- ワイドカラム・・・1つのキーに複数のバリューが格納される
このタイプのメリットとして構造がシンプルなことでRDBMSよりデータの検索が速くなります。
ドキュメント型
このデータベースではキーバリュー型のようにキーとバリューのペアだが、バリューの中身の構造を問わないのがドキュメント型です。ドキュメント型ではバリューにJSONやXMLなどを格納することができるためデータ分析やアプリケーションで扱う複雑なデータなどに利用できます。キーバリュー型に比べてデータの柔軟性が高いのが特徴です。
グラフ型
このデータベースでは従来のデータベースのようなリレーションによる構造ではなく、ネットワークのような形に取ることで複雑なデータの関係性を表現することができます。
グラフに使われるノード、エッジ、プロパティの3要素から構成されます
- ノード(node)・・・頂点という意味を持ち、そのプロパティを持つエンティティを表す。
- エッジ(edge)・・・辺という意味を持ち、ノード間の関係性を表す。
- プロパティ(property)・・・属性という意味を持ち、ノードの持つ属性を表す。
twitterを例とすると、ユーザはノードを指し、ほかのユーザをフォロー、ミュート、ブロックしている関係がエッジ、ユーザのフォロワー数やツイート数などの情報がプロパティになります。
時系列型
このデータベースでは、IoTアプリケーションでよく使われるものでセンサーなどから取得したデータを時系列で格納するデータベースです。時系列をキーとして、取得したデータを格納します。時系列に関する分析に特化させることでRDBMSとの違いがあります。
コメント