RDBとNoSQL

新年、あけましておめでとうございます。
AMDlabの松原です。

新年、一発目はデータベースのお話です。

建築でも、BIMを進めていくとDBの話にぶつかるとは思うのですが、
RDBとNoSQL、これらの二つのDBの違いとはいったいなんなんでしょうか?

RDBですが、これはリレーショナルデータベースの略称です。
データベースは、大きく分けて「階層型」「ネットワーク型」「リレーショナル型」があり、その一つにあたります。

代表的なのものとしては、以下のようなものがあります。

  • Oracle DB
  • MSSQL
  • MySQL
  • PostgreSQL

よく使われるのはMySQLですね。
ちなみに、RevitはMSSQLにしか対応していないくで、以前、四苦八苦させられました。

RDBは、全てのデータを表形式で表現されており、表と表が紐づいているという意味でリレーショナルという言葉が付いているわけです。

例えば、以下のような部材テーブルと価格テーブルが二つあった場合、部材_idをキーとして(外部キー)紐付き、データを取得できるようになっているわけです。

部材テーブル

id 部材 厚さ
1 EPC 200
2 ALC 150
3 ALC 耐火 200
4 EPC 150

価格テーブル

id 価格 部材_id
1 xxxxxxx 4
2 xxxxxxx 1
3 xxxxxxx 3

これらは、idなどにインデックスをつけることで、検索を早くすることを可能にしているのですが、その話はまたいつか。

RDBのような表形式のDBの操作をするのに使うのがSQLですが、SQLは大別して以下の4つが存在します。

Query(問い合わせ) SELECT(データの検索)
DML(データ操作) INSERT(データの追加)、UPDATE(データの変更)、DELETE(データの削除)
DDL(データ定義) CREATE(表の作成)、DROP(表の削除)、ALTER(表の変更)
トランザクション制御 COMMIT(データ変更の確定)、ROLLBACK(データ変更の取り消し)

RDBは処理途中で異常があった場合には、DBデータを変更させないよう、最後にCOMMITという操作を行わなければならないようになっているのが特徴の一つです。

データ自体も見やすく、高速で検索でき、安全でもあり、非常良い仕組のDBです。

が、

BIGデータの世界に入ってくると、RDBは少し問題なのです。

RDBはあくまでシングルデータベースの時代に進化したものなのですが、データが増えるにつれシングルデータベースのスケールアップ(容量を増やす)だけでは、データが収まりきらなくなってきました。

そのため、スケールアウト(数を増やす)を行う必要がでてきて、さらに、そこに収めれられたデータを処理するため、「分散処理」が考えられていくのです。

しかし、RDBは大量のデータには向かず、また、先ほどのトランザクション処理があるために、分散処理には向かない……というわけで、以前記事にしたHadoopやNoSQLが出てくるわけです。

ここまでの話で長くなってしまいました。

NoSQLについては、また後日。

本年もよろしくお願いします。

ARTICLES