66
72

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

各種DBシステムの概要 RDBMSとNoSQL

Last updated at Posted at 2014-11-20

勉強を兼ねて、主要DBの種類と特徴についてまとめた。

RDBMSとNoSQL

RDBMS (Relational DataBase Management System)

DBMSの主流。データを表形式で表す「関係モデル」に基づいている。

NoSQL (Not only SQL)

RDBMSの弱みを補う目的で開発されたデータベースの総称。

主に次の4つのタイプに分けることができる。

Key-Value Store型

データがすべてインデックス付きキーと値で構成される。スキーマレス。
高速な読み書きができるが、複雑な検索処理には向いていない。

列指向型

データは列単位で管理される。大容量データに対して検索を行う場合など、
処理の負荷が高くRDBMSが苦手とする場面でも、高速な読み書きができる。
 
ドキュメント指向型

Key-Value Storeの考え方を拡張したもの。
複雑なデータをそのままドキュメントに格納し、各ドキュメントに一意のキーを割り当てる。
スケーラビリティが高く、サーバを追加しやすい。

グラフ指向型

グラフ理論に基づいて、ノード・エッジ・プロパティで構成されるグラフ構造でデータを格納する。
データ同士の複雑な関連性を表現でき、頻繁に更新される大量のデータを効率よく扱うことができる。

それぞれの強みと弱み

RDBMS NoSQL
データ定義 どんなデータが入るのかを事前に理解しておく必要があるが、データ同士の関連性を保持できる データ型の定義が必要ないため、当初意図していたものと異なる型のデータを扱うこともできるが、データ同士の関連は表現できない
データの一貫性 ○ トランザクションの仕組みがある × 堅牢なトランザクションは、サポートしていないものが多い
読み書き × 速くない ○ 速い
検索 ○ SQLを使用し、テーブルを結合しての複雑な検索ができる × SQLが使えないので、条件を指定した検索などが苦手
拡張性 × データ構造をあらかじめ定義しているため、拡張にはコストがかかる(長時間ロックがかかる可能性もある) ○ シンプルなデータ構造で、スキーマレスのものも多く自由に拡張できる
スケールアウト × データの一貫性を保つために書き込み部分を分散させることはできない ○ データの一貫性を一部犠牲にしているので分散させることができる

簡単にまとめると、
RDBMSの売りは「データの一貫性」であり、NoSQLの売りは「スピードと柔軟性」だと言える。

RDBMSに分類されるDB

MySQL

開発元
MySQL AB社が主体となって開発した。

 

特徴
PostgreSQLと同様、各種開発言語用のAPIが用意されている。
同時に複数人が利用するようなWebアプリケーションなどのシステムに適している。

 

用途・実績
オープンソースCMSや個人向けレンタルサーバでも多く採用されていて、
個人ユースでも広く利用されている。

 

ライセンス
無償のCommunity Server、有償のEnterprise Serverという2つのライセンス形態がある。

PostgreSQL

開発元
カリフォルニア大学のプロジェクトにより開発された。

 

特徴
商用のRDBMSに匹敵するほど高性能で、
企業システム用途での利用を意識して強化が進められている。

 

用途・実績
特に日本で、企業システムに使用されている。

 

ライセンス
BSDライセンス

SQLite

開発元
D. Richard Hipp氏らによって開発された。

 

特徴
軽量なRDBMSで、大規模なシステムには不向き。
データの保存に単一のファイルのみを使用していて、
APIは単純にライブラリを呼び出すだけというシンプルな構成になっている。

 

用途・実績
Android、iOSで標準搭載されている。

 

ライセンス
パブリックドメイン

NoSQLに分類されるDB

Cassandra

開発元
Facebook社で、大規模データ格納の目的で開発された。

 

タイプ
列指向型

 

特徴
Amazon Dynamoの分散ハッシュテーブルと、
Google Big Tableの列指向データモデルを取り入れて設計された。
データモデルは「キースペース」「カラムファミリー」「キー」「スーパーカラム」
「カラム」の5要素から構成される。(イメージ図を下部に記載。)
同一の機能とデータを持つ複数のノードを分散させた「クラスタ」でデータを保持し、
クライアントはどのノードに対しても読み書き可能なうえ、
障害が発生した場合にデータが失われるリスクを抑えられる。

 

用途・実績
Digg、Hulu、Facebook、Twitterなど

 

ライセンス
Apache License v2.0

cassandra.png

MongoDB

開発元
MongoDB Inc.によって開発とサポートが行われている。

 

タイプ
ドキュメント指向型

 

特徴
スキーマ(テーブル定義)をもたない。
「ドキュメント」と呼ばれる構造のデータをJSONライクな形式で表現し、
ドキュメントの集合を「コレクション」として管理する。
JOINが使えないことと、トランザクションをサポートしていないこと以外は、ほぼRDBMSと同じように使える。
更新可能な1台のマスターと、その複製である読み出し専用の複数台の
スレーブという構成が可能。

 

用途・実績
foursquare、bit.ly、sourceforgeなど

 

ライセンス
GNU AGPL v3.0(ドライバはApache License v2.0)

Redis

開発元
Salvatore Sanfilippo氏が開発を始め、2010年からVMWareが支援を行っている。

 

タイプ
Key-Value Store型

 

特徴
全てのデータセットをメモリ内に読み込むので、非常に高速なデータアクセスが可能。
しかし、データ容量には制限がある。
マスター・スレーブ構成ができる。
現在も有志によって開発が進められている。

 

用途・実績
DeNA、サイバーエージェント、ニコニコ動画、LINE、github.com、flicker.com、instagram.comなど

 

ライセンス
BSDライセンス

参考にさせていただいたサイト

66
72
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
66
72

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?