支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


はじめに


昨今のWebアプリケーションや業務用システムでは、データを格納しておく「DB(データベース)」を設計、導入することはほぼ必須となっています。そしてDBを導入するにあたっては、みなさんはその都度どのような仕組みのDBを設計、導入するのか検討すると思います。
そこで今回は、「RDB」と「NoSQL」というDBにおいての2つの技術を紹介することによって、適切なDB設計、導入の助けとなればと思います。

1.RDBとは??


RDB(Relational DataBase)とは、1970頃からその概念があるデータベース技術で、

  • 二次元のデータ形式でデータを格納する
  • 表(テーブル)を結合して使用することが出来る
といった特徴があります。図にすると下記のようになります。
RDBの構造
図は、一つのキーに対して一つのバリューがあるという構造になっています。RDBはこのようにテーブル同士を組み合わせたりすることで複雑なデーターベース構造を実現することが可能になっています。そして、このRDBを管理するシステムのことをRDBMS(Relational DataBase Management System)といいます。
私達はこのRDBMSを通しSQLのようなクエリ言語(問い合わせ言語)を使用することで、データの追加、削除などをすることが出来るようになります。代表的なRDBMSとして、MySQLや、PostgreSQLがあります。


2.RDBのメリット


・データの一貫性が保証される

RDBは、テーブル間の整合性(関係性が崩れない状態)を保つためにトランザクション(複数の処理を一つの処理としてまとめてデータベースに反映させること)を行っているため、DBのデータが壊れるというようなことは起こりづらく、データの一貫性が保たれます。

・複雑な条件の集計、データの加工が出来る

RDBは、データの結合や検索だけではなくデータの集計や並び替えなど、SQLを使用して様々な形にデータを加工する機能を備えています。このことによって、複数のテーブルから指定の列と行を取り出して、新しいテーブルを作成するといったことも可能です。

3.RDBのデメリット


・導入する上での難易度が高い

RDBは事前に厳密にスキーマ(データベースの構造)を定義しなければいけません。そのためデータベース設計に時間がかかる上に、設計したデータベースに新たな変更を加えるといった時にも柔軟に対応がしづらいといったことが考えられます。

・スケールアウト(性能を拡張)させづらい

RDBは基本的に一つのサーバーで実行されるように考えられていて、トランザクションで逐一データの整合性を確保するという性質があり、サーバーの増加をした時には処理速度が遅くなってしまいます。 そのため、システムの追加、拡張などがしづらいといったことが考えられます。

4.NoSQLとは??


NoSQLとはNot Only SQLの略で、RDBではないデータベースシステムを表すデータベース技術です。(最近はNoSQLにもSQLのようなクエリ言語を使用するものが出てきたため、単に「SQLを使わない」データベース技術のことを指すわけではなくなってきました。)昨今の開発スピードの速さに合わせた様々な機能が盛り込まれています。
NoSQLの代表的なものに、MongoDBやDynamoDBなどがあります。

5.NoSQLのメリット


・スキーマレスであること

事前にスキーマを定義しないので、データベースの構築にはRDBほど時間がかかりません。扱うデータもテキストなどの「構造化データ」だけではなく、音声や画像などの「非構造データ」もスキーマの定義なしに格納することができます。

・大規模なデータを扱いやすい

昨今「ビッグデータ」と呼ばれる巨大なデータの集合体がマーケティングや機械学習、AIの分野において活用され始めていますが、NoSQLはほとんどがトランザクションではなく一定の時間が経過した後結果的に一貫性が保証されるという考え方(Eventual Consistency)に基づいており、データの参照や追加処理という目的においてはRDBよりも高速で処理を行うため、ビッグデータの扱いに向いていると言えます。

・スケールアウトさせやすい

クラウドサービスが普及している昨今では、かなりの数の企業がシステムの一部または全てをAWSのようなクラウドサービスに移行しています。
クラウドにシステムを以降すると、サーバの追加、容量の追加などが容易に行えます。NoSQLもそれに合わせてデータベースの拡張やまたは縮小といったこともRDBに比べて行いやすいです。

6.NoSQLのデメリット


・更新や削除処理が多い仕組みに向かない

先に述べたようにNoSQLはデータの参照や追加には向いていますが、トランザクションによってすぐにデータの一貫性がとれるRDBと違って、NoSQLはデータの一貫性がすぐに取れません。そのため、ECサイトのように複数人が同時にデータにアクセスし、データの更新や削除がすぐに求められるようなサイトのデータベースには不向きと言えます。

まとめ

データベースにも色々な種類のものが出てきており、RDBにもNoSQLのような高速処理を行えるようにする試みが行われていたり、反対にSQLのようなクエリ言語を使用したNoSQLも出てきています。Webアプリケーション、業務用システムの構築の際には、データベースに必要な各技術を適切に選定していくことが大事です。
この記事が皆さんのデータベースの学習や業務での採用にあたっての参考になれば幸いです。