【初心者向け】データベースとは何か?DBMSやSQLとの関係性も解説!
こんにちは!
今井(@ima_maru)です。
今回は、ITエンジニアになるなら知っておかなければならない「データベース」についてです。
データベースは、あらゆるWebサービスやシステムに当たり前のように使われていますが、実際どのようなものなのかを知らない方も少なくないのではないでしょうか。
本記事では「データベースとは何か?」というところから「なぜデータベースが必要なのか?」まで詳しく解説するので、ぜひ参考にしてみてください。
それでは見ていきましょう。
データベースとは何か?概要を解説!
まずは、データベースとは何かを見ていきましょう。
また、データベースと非常に関連性が高いワード「DBMS」「SQL」についても解説します。
データベース
データベース(Database:DB)とは、検索や保存が容易にできるよう構造化された情報の集合です。
簡単に言えば、管理しやすいように作られたデータの集合体です。
コンピュータ上で実現されたものを指すことが多いですが、紙面上で管理する「名簿」などもデータベースといえます。
データベースの重要な点は、「管理しやすいように作られている」というところで、ただ単にデータの集合体であるものをデータベースとは言えません。
殴り書きのメモはデータベースではなく、きちんと整理して表形式にしたような情報がデータベースというイメージです。
また、広義ではデータベースを扱うDBMS(データベース管理システム)のことをデータベースと呼ぶことも多いです。
例えば、有名なDBMSである「MySQL」や「Oracle Database」などのこともデータベースと呼ぶということです。(厳密にいえばこれらは「データベース管理システム」です。)
まとめると、データベースとは管理しやすいように作られたデータの集合体であり、広義ではDBMS(データベース管理システム)のことも指すということです。
「データベース」という言葉の由来は、第二次大戦後の米軍が作った「情報基地(database)」です。もともと点在していた情報を1ヵ所にまとめ、「そこにアクセスすればすべての情報が得られる」というように効率化を図ったそうです。
DBMS:データベース管理システム
DBMS(Database Management System)とは、データベースを管理するソフトウェア・システムのことを指します。
そもそもデータベースとは「データを入れる箱」のようなもので、実際に「データを保存する」「データを取り出す」など処理をすることで初めてデータベースとしての機能を得ることができます。
そのようなデータベースに対しての処理を提供するのがDBMSです。
細かく言えばデータベースとDBMSは異なるものなのですが、普通データベースと言うと、上で挙げたようなDBMSのことを指している場合が多いので注意しましょう。
また、データベースの種類としてリレーショナルデータベース(RDB)というものがあるのですが、それらを管理するDBMSのことを「RDBMS」と呼びます。(使われることが多いので覚えておくと良いでしょう。)
SQL
SQLとは、DBMSを操作するために使われるデータベース言語です。
DBMSの中でも、RDBMS(リレーショナルデータベース管理システム)という種類のDBMSの操作に使われます。
いくつか例を見ていきましょう。
まずは、特定のデータを取り出すSQL文。
SELECT id, name FROM users WHERE age>=20;
次は、新しいデータを挿入するSQL文。
INSERT INTO users (id, name, age) VALUES(3, '今井', 21);
次は、特定のデータを更新するSQL文。
UPDATE users SET name = '田中', age = '25' WHERE id=3;
最後は、特定のデータを削除するSQL文。
DELETE FROM users WHERE id=3;
SQLは国際標準化されているため、細かな仕様の違いはあるものの、多くのリレーショナルデータベース共通で利用できます。
例えば、「Oracle Database」「MySQL」「PostgreSQL」「SQLite」などが、いずれもSQLで操作可能です。
データベースとDBMSとSQLの関係
「データベース」「DBMS」「SQL」の関係は以下のようになっています。
- データベースはDBMSによって管理される
- DBMSに命令をするときはSQLで書く
この関係を覚えておきましょう。
データベースの役割と用途
データベースがどのようなものかわかりましたでしょうか。
ここからは、データベースがどのような役割でどのような用途に使われているのかを見ていきましょう。
データベースの役割
データベースの主な役割は「データの保存」「データの利用」です。
大量のデータを保存し、効率的にデータを利用することを目的として作られています。
もう少し詳しく言えば、以下の4つの機能を備えています。
機能 | 概要 |
---|---|
Create | データの作成 |
Read | データの読み取り |
Update | データの更新 |
Delete | データの削除 |
これら4つの機能は、それぞれの頭文字をとって「CRUD(クラッド)」と呼ばれてます。
データベースの用途
データベースは、データを保存しておく必要のあるシステムに使われています。
あらゆるシステムに使われていますが、SNSやブログといったアプリなどを想像するとわかりやすいのではないでしょうか。
ユーザーの投稿や記事などをデータとして保存しておき、必要な時に取り出せるということができなくては、このようなアプリは実現できません。
そのようなデータの保存と利用の機能を担っているのがデータベースなのです。
有名なサービスにおいて、データベースを利用していないものはほぼありません。
それくらいデータベースの存在は大きく、当たり前に使われる技術です。
データベースを使うメリットとは?データ管理に強い特徴3選を紹介!
データを保存するだけであれば、テキストファイルにまとめたりCSVやExcelにまとめたりもできます。
では、なぜデータベースを使う必要があるのでしょうか?
ここでは、データベースがデータを保存、利用するうえで優れている点をいくつか紹介します。
データの管理がしやすい
データベースのメリットとしてまず初めに挙げられるのが「データ管理がしやすい」ということでしょう。
例えば、以下のような点がデータ管理に適している特徴です。
- 大量のデータを効率よく保存できる
- 特定の条件に該当するデータを高速にかつ簡単に取り出せる
- 不正なデータ入力を弾いてくれる
- データの入力日時を自動で記録できる
- 高いセキュリティを持っている
このように、データ管理に特化しているのがデータベースです。
このような理由もあり、データを扱う必要のあるシステムにはデータベースが必ずと言っていいほど使われているのです。
同時アクセスに強い
データベースは「同時アクセスに強い」という特徴も兼ね備えています。
変更される可能性のあるデータを取り扱う際には、同時アクセスによる「コンフリクト」「二重更新」、つまりは「変更の衝突」に注意する必要があります。
具体的には、同じタイミングで異なる変更をした際に「どちらかの変更が反映されない」「想定していた変更内容にならない」などのバグが起こる可能性があるということです。
データベースには、このような同時アクセスを避ける仕組み「排他制御」があります。
そのため、このようなコンフリクトを生じないようにでき、同時アクセスに強いというメリットを生むのです。
大量のアクセスを集めるサービスでは、同時アクセスによる危険性が大きく高まるので、この機能は必須といえますね。
障害に強い
データベースは「障害に強い」という特徴も持っています。
例えば、停電が起きてしまいデータが破損してしまった場合に、ログやバックアップなどからデータを復旧できるようになっています。
様々な問題がありデータの復旧作業が必要になる場合があるので、このような耐障害性を兼ね備えているデータベースが重宝されるのでしょう。
データベースの種類
データベースには、多くの種類が存在します。
ここでは、いくつか有名なデータベースの種類を簡単に紹介します。
リレーショナルデータベース(Relational Database:RDB)
リレーショナルデータベースは、Excelやスプレッドシートなどのように表形式でデータを管理する現在主流のデータベースです。
「RDB」や「関係データベース」とも呼ばれています。
キー・バリュー型データストア(Key-Value Store:KVS)
キー・バリュー型データストアは、検索に使うキー(Key)と値(Value)の組み合わせだけの単純な形でデータを保存するデータベースで、「KVS」と呼ばれます。
このKVSは、Googleのあらゆるサービスのデータベースとして採用されていて、非常に注目を浴びているデータベースです。
階層型データベース(Relational Database:RDB)
階層型データベースは、データを木構造で管理するデータベースです。
古くからあるデータベースですが、リレーショナルデータベースの普及によりあまり使われなくなっています。
オブジェクト指向データベース(Object Oriented Database:OODB)
オブジェクト指向データベースは、オブジェクト指向プログラミングにおけるオブジェクトを保存するデータベースです。
XMLデータベース(XML Database:XMLDB)
XMLデータベースは、XML形式のデータを大量かつ高速に扱うために作られたデータベースです。
有名なDBMSを紹介!商用からオープンソースデータベースまで!
有名なDBMSをいくつか紹介します。
Oracle Database
OracleDBは、1979年に登場したOracle社が提供する世界初の商用データベースです。
MySQL
MySQLは、世界トップシェアを誇るオープンソースのデータベースです。
PostgreSQL
PostgreSQLは、MySQLとともに人気のあるオープンソースのデータベースです。
SQLite
SQLiteは、サーバーとしてではなくアプリケーションに組み込むことで利用する簡易的なデータベースです。
Microsoft SQL Server
Microsoft SQL Serverは、Microsoft社が提供するデータベースです。
Redis
Redisは、非常に高速に動作するKVSのデータベースです。
オブジェクト関係マッピング(ORM)とは?
データベース関連でよく出てくるワードに、「オブジェクト関係マッピング(ORM)」というものがあります。
これは、データベースのデータをオブジェクト指向のオブジェクトのように扱えるツールです。
簡単に言えば、SQLを意識せずにデータベースを簡単に操作できるようにしたツールです。
Rubyの「Ruby on Rails」やPythonの「SQLAlchemy」などで扱えます。
以上「【初心者向け】データベースとは何か?DBMSやSQLとの関係性も解説!」でした!
最後までご覧いただきありがとうございます。