#まず始めに
エンジニアをしていると必ず、耳にするデータベースについて
改めて、まとめてみました!
#データベースとは??
情報であるデータを使いやすい形に整理したかたまりのことをデータベースといいます。
コンピュータ上のソフトウェアのイメージが多いですが、電話帳や単語帳などもデータベースの一種です。
また、コンピュータ上でデータベースを管理するシステムや、
そのシステム上で扱うデータ群のことを、データベースと呼ぶ場合もあります。
Webサービスの基本的なサーバー構成(Web3層構造)には、必ずデータベースが含まれています。
#データベースのメリットとは?
データベースを用いると下記のようなメリットが得られます。
・データの統一
1か所にデータをまとめているため、複数のユーザー間でデータの矛盾がなくなります。
・データの活用
データベースにアプリケーションを組み合わせれば、必要なデータを見やすく加工して表示できます。
・管理の簡略化
データベース1つmのバックアップで大量のデータを保存でき、様々なリスクに備えることができます。
#データベース管理システム(DBMS)
データベースを安全に共有・利用しやすくするためのシステムを
データベース管理システム(Database Management System:DBMS)といいます。
ユーザがデータベースへアクセスするときは、DBMSを間においてアクセスします。
主な役割として
・データベースの操作・管理
・アクセスの制御、処理
・障害時の復旧
#SQL
データベースを操作するための言語をSQLといい、DBMS上でデータの追加や削除、並べ替えなどを行うようコンピュータに命令するための手段です。基本的に1行ずつ入力して確定し、直ちに実行されます。複数のSQLを組み合わせて大きな一つの塊のSQLとして実行することもできますが、通常のプログラミング言語のように一連の操作をまとめてセットすることのできる「ストアドプロシージャ」という機能のあるDBMSもあります。
どのデータベースであっても基本的には共通の命令を使用していますが、そのDBMS専用のSQLなども存在しています。
####※ストアドプロシージャ
if文の条件分岐やfor文のループをSQLと組み合わせて、データベースを操作することのできるDBMSの機能。
主に機能のちがう3種類の言語から成り立っています。
・データ操作言語(DML)・・・データを操作する言語
INSERT・・・データを挿入する
SELECT・・・データを取得する
UPDATE・・・データを更新する
DELETE・・・データを削除する
・データ定義言語(DDL)・・・データベースやテーブルを操作する言語
CREATE・・・データベース/テーブルを作成する
DROP・・・データベース/テーブルを削除する
ALTER・・・データベース/テーブルを変更する
・データ制御言語(DCL)・・・主にデータベースの権限を管理するための言語
データベースの構築や運用といった場面では、SQL文(SQLの構文)を単体で実行して利用します。
#データベースの種類
データベースには主に以下ような種類があります。
・リレーショナル型データベース
・階層型データベース
・ネットワーク型データベース
###リレーショナル型データベース(RDS)
主流のDBMS。行と列からなる表で表されたデータベースです。
列にはそれぞれ重複しない項目名が設定され、行としてデータを追加していきます。
表にすることによって、人間の目で見ても関係性がわかりやすくなっています。
この表をテーブルといい、列をカラム、行のデータをレコードといいます。
###階層型データベース
ツリー構造をとっており、名前の通りデータが階層のように構成されているデータベースです。
特定のデータを検索する際には常に一つのルートのみしかないため、速度が非常に速いです。
しかし、横のつながりと持てない為、多数の要素を持ったデータはその分重複登録が必要で
対応できる状況や情報の編集に対して柔軟性が低いというデメリットがあります。
###ネットワーク型データベース
階層型データベースの重複登録を避けるようにネットワーク構造を採用したデータベースです。
しかし、検索開始が最上階のノードからに限定で使用できるため、
リレーショナル型ほどの利便性はないです。
#DBMSの種類
代表的なDBMSの製品として以下のような種類があります。
Oracle(Oracle Database)…有償でサポートが充実。世界で最もシェアが高く、クラウド版有。
MySQL…無償と商用利用のしての有償版がある。Wordpressなどに使用されている。
SQL Sever…有償だがOracleよりは安価。Microsoft社開発のため、windowsとの相性がいい。
PostgreSQL…MySQLとともに、人気の無償DBMS。バランスよく機能が実装されている。
#最後に
今回はデータベースについてまとめてみました。
WEBサービス、アプリケーションの開発をおこなう中で必須といっていいほど、
データベースはとても密接に関わってくるため、今後も学習、理解を深めようと思います。
次はDBMSの製品それぞれの特徴などをまとめようと思います。