KDE BLOG

Webデザインやコーディングについて書いています

データベースの基礎知識 ~データモデル、RDBMS、NoSQLの概要~

これまで簡単なWordPressを使ったWebサイト制作でしかデータベースを使ったことしかなかったのですが、今後はNode.jsとデータベースを使っていろんなものを作っていきたいので、基本的なところからデータベースについて調べてみたことを自分用にメモしておきます。

<目次>

データベースとは

  • 一定の形式で、「複数で共有・利用すること」、「検索・加工すること」を目的に整理されたデータの集まり。
    • 電話帳や辞書もデータベースのひとつ
    • 溜まったデータを「資産」とも呼ぶ

データベースを使う理由

  • データを整理して貯めることができる
  • 貯めたデータを情報として活用しやすくできる

データ・モデル

  • 貯まったデータをどうやって整理し管理するかの「方法」
  • 一般的に最も効率が良いと言われているデータ・モデルが「関係モデル(リレーショナル・モデル)

リレーショナル・データベース(RDB)とは

  • リレーショナル・モデルを使ったデータベースのこと
  • 現在、標準としてもっとも広く使われている
  • 「テーブル」と呼ばれる表形式の構造。行を「レコード」、列を「フィールド」と呼ぶ。

レコード

  • 各レコードのデータは一意にならないといけない(重複は禁止

属性

  • どのようなデータを格納しているのかを判別する列名
    • ex) 「商品名」「販売価格」など

広く使われる理由

  • データの重複を避けられる
  • 検索能力が高い
    • 重複のデータがなく1つ見つかればそこで検索をストップできるため高速

データベース管理システム(DBMS)とは

  • データベースを効率よく運用・管理するためのソフトウェア
  • データベースを図書館に例えると、DBMSは「図書館司書」

なぜデータベース管理システムが必要か

  • データベースは自動で追加や削除といった操作は行わないため「操作する人」が必要
  • 人間が直接操作したらミスが発生するためコンピュータを介してミス操作を防ぐ

リレーショナルデータベース管理システムRDBMS

  • リレーショナルデータベースのDBMS
  • SQL」という問合せ言語を使ってデータ操作を行う。
  • 主なDBMSMySQL(詳細は後述)、PostgreSQLOracleSQLite など

RDBMSの強み

  • トランザクションによってデータの一貫性を保証
    • トランザクションとは関連する一連の処理全体を一つの処理単位として管理する仕組み。 途中でトラブルがあった場合は一連の処理を破棄してデータに相違がないようにする。 金融機関や会計システムなど、データの相違があると困る場合に役立つ
  • SQLが使えるので、複雑な条件での検索や集計を行う事が可能
  • 実績が豊富でノウハウや情報が豊富

× RDBMSの弱み

  • あらかじめデータ構造を定義しているため拡張にはコストがかかる
    • 書き込みをスケールアウトさせるのが難しい
    • スキーマ変更時に長時間ロックがかかる可能性がある
  • SQLを取得する必要があるため学習コストがある

SQLとは

  • RDBMS専用に作られた、データ操作を行うためのデータベース言語(問い合わせ言語
    • 「こんなデータありますか?」といった感じ
  • さまざまな検索条件や、データ操作を論理的に指定することができ、もっとも効率よくデータを探すことができる
  • 専用のプラグラムで操作することで、データの重複などのミスが防ぐことができ、「データの一貫性」を保つことができる

MySQLとは

  • 世界でもっとも利用されている、リレーショナルモデルのデータベース管理システム

MySQLの特徴

  • アプリケーションの規模の大小問わず対応できる拡張性を持っている
    • アプリケーションの用途にあわせて「ストレージエンジン」の種類を選択することが可能
      • ストレージエンジン:データベースを作成、更新などの基本的な操作を行うコア機能
  • トランザクション
    • トランザクションとはデータの一貫性を保つために、関連する一連の処理全体を一つの処理単位として管理する仕組み
    • 途中でトラブルがあった場合は一連の処理を破棄してデータに相違がないようにする
      • 金融機関や会計システムなど、データの相違があると困る場合に役立つ
  • セキュリティ
    • SSH」や「SSL」といったセキュリティ技術をサポート
    • データの盗み見防止のためのデータ暗号機能

NoSQLとは

  • Not only SQLの略。RDBMSに取って代わると言われている、SQLを使わない新しいデータベース管理システム
  • 特定の処理に特化していて高速なものが多い

NoSQLが注目されている理由

  • ネット人口の増加や回線速度の向上から、複雑でない巨大なデータを扱うことが増えてきた。 この膨大なデータ(ビッグデータ)を簡単に取り扱えて、学習コストが低いNoSQLが注目されるようになった。

〇 NoSQLの強み

  • ビッグデータ」などの大量のデータの扱いが得意
  • RDBMSよりもスケールアウト(サーバを増加させることで性能をアップ)させやすい
  • スキーマレスなので、異なる型のデータを扱うことができ、カラムを自由に定義することができる
  • SQLを使用しないため、一般的なプログラムの知識があれば操作できるものが多い

× NoSQLの弱み

  • RDBMSにあるトランザクションやリレーション(テーブル間のJOINなど)のような仕組みがないものが多い
  • 複数サーバにデータが分散している場合は、サーバ間の整合性が保証されないケースが多い

NoSQLの分類

主に次の4つに分類される。

Key-Value Store (KVS)
  • 保存したい値(Value)に対して、一意の標識(Key)をつけて保存するシンプルな構造
  • 高速に動作するが複雑な検索処理の不向き
  • 代表的なDBMSRedis、memcached、DynamoDB など
ドキュメント指向型
  • Key-Value Storeの概念を拡張したもの
  • スキーマレス(項目の型などの定義をしなくてもデータを保存可能)
  • スケーラブル(標準でシャーディング機能を持ち、更新・検索処理を分散できる仕組みが備わっている)
  • 複雑なデータをそのままドキュメントに格納し、各ドキュメントに一意のキーを割り当てる
  • スキーマを固定できない用途やスケーラビリティを活かした大規模アプリケーションのDBとして有効
  • 代表的なDBMSmongoDB、CouchDB、RavenDB など
列指向型
  • RDBのような行(レコード)単位ではなく、列(フィールド)単位での処理の特化
  • 大量のデータ読み出しは得意だが更新が苦手なので、OLAP(オンライン分析)のような分析処理に有効
  • 代表的なDBMSHbase(Hadoop)、Sybase、Cassandra など
グラフ指向型
  • 「ノード」「リレーション」「プロパティ」の3要素によってノード間の「関係性」を表現するデータモデル
  • 代表的なDBMSNeo4j など

まとめ

  • データベースとは、一定の形式で、「複数で共有・利用すること」「検索・加工すること」を目的に整理されたデータの集まり
  • データベースを管理するシステムを、データベース管理システム(DBMS)と呼ぶ
  • DBMSにはRDBMSとNoSQLがある
  • RDBMSは「データの一貫性」、NoSQLは「ビッグデータの扱い、スピードと柔軟性」に優れている
  • RDBMSとNoSQLの使い分けは、目的に合わせてそれぞれの特徴にあったものを選ぶことが基本

参考