本記事では「データベース」について解説します。ITの世界でよく耳にするデータベースという言葉ですが、データベースとは何か、データベースの種類やデータベース管理システム(DBMS)、データベースエンジニアの仕事、データベースに関わる資格試験についてまで、入門編として簡単に学んでいただければと思います。
データベースとは何か
そもそもデータベースとは?
データベースとは、特定の条件により集められた「データ」を決まった形式で構造化・整理したものです。身近な例を挙げると、紙面上で管理する電話帳や住所録、商品マスタ、生徒名簿なども立派なデータベースの一つです。コンピュータの世界では、電子的に保存され、アクセスできる組織化された情報・データの集まりを指します。コンピュータの世界にはデータベースを管理するDBMS(DataBase Management System)というものがあります。DBMSや関連するアプリケーション、システム上で扱うデータ群を単に「データベース」と呼ぶこともあります。
データベースのメリット
データベースでデータを管理するメリットには以下のようなものがあります。
- 複数データを管理しやすい
散在する様々なデータを一か所に集めて決まった形で保管することで、必要な情報を素早く収集・利用することができます。データの閲覧・更新・追加・削除を行いたい時に参照する対象が一か所で済むため管理が簡単になります。
例えば、小売店において顧客・購買データが一か所に集められていることで、どんな人がいつ何を買ったのかという情報を素早く参照できます。また顧客の住所などを変更したい場合も対象顧客の情報を簡単に取り出し、変更の操作を行うことができます。
- 目的のデータを取り出しやすい
データベースは大量のデータの中から目的のデータを検索・抽出することを容易にします。
例えば、小売店の販売データの中から特定の日時の売上を抽出したい場合、データベース化されていれば日時での検索・売上の抽出を容易に行うことができます。
- 大量のデータを整形・活用できる
データベースには様々な情報が蓄積されています。データベースは膨大な情報から特定条件のデータを抽出・整形・表示することでビジネスやマーケティングに活用することを可能にします。
例えば、年代別の購入データや商品別の販売データを抽出して販売個数などの並び替えを行い分析することで販売促進に活用することができます。
データベースとエクセル(表計算ソフト)の違い
こちらの記事では、コンピュータシステム上で保管・管理される情報の集合・およびそれらの管理システムとしてのデータベースについて説明していきますが、Microsoft ExcelやGoogleスプレッドシートといった表計算ソフトの利用も情報を保管するために便利な方法です。
データベース | 表計算ソフト | |
---|---|---|
利用の容易性 | 専門知識が必要 | 誰でも扱いやすい |
アクセスできる利用者 | 複数人 | 一人または少人数 |
大量データの保存 | 可能 | 処理が重たくなる |
関連データの参照 | 可能 | 単純な参照のみ可能 |
複雑な処理 | 言語操作により可能 | 難しい |
表計算ソフトは一人のユーザー向けに設計されています。誰でも簡単にファイルを作成できるため、利用者が一人または少人数で、複雑なデータ操作を行わないのであれば表計算ソフトで十分に機能します。
一方、データベースは大量のデータを保管・管理して複数のユーザーが利用できるように設計されています。またデータベースは関連データの参照にも優れています。表計算ソフトでも他のシートを参照することは可能ですが、大量で複雑な参照は事実上不可能です。専用の言語を使用してデータに対して複雑な処理を実行できるデータベースは、システムにおいて情報を保管・管理することに非常に優れています。
データベースの型の種類
データベースは構造化・整理の方法によっていくつかの種類に分けられます。ここでは主要な型について説明します。
階層型データベース
階層型データベースとは、名前の通りデータが階層のように構成され、ツリー構造になったデータベースのことです。一つのデータから関連する複数のデータが一対多でぶら下がり親子関係で保存され、上層(親ノード)から下層(子ノード)に分岐するように整理されています。
下層データにアクセスする際のルートが一つしかないため、データの検索・集計が速いというメリットがあります。
逆に、一つのデータに紐づく上層データが複数あった場合は上の図のようにデータの重複登録が発生してしまいます。下層に対して複数の上層データを紐付けられない・データの追加や削除を行うとルートの再登録が必要になるといった柔軟性に欠ける点が階層型データベースのデメリットです。
ネットワーク型データベース
ネットワーク型データベースとは、関連性のあるデータが相互に結び付けられて網状に構成されたデータベースのことです。階層型データベースのデメリットであった下層から上層への紐づけもできるようになっています。そのため、階層型データベースで発生していたデータの重複が避けられるメリットがあります。一方で、データベース構造が複雑になるため、高度な知識が必要になり利便性に欠ける点がデメリットです。
リレーショナルデータベース(RDB)
リレーショナルデータベースとは、行と列によって表状に構成されたデータベースのことです。列にはデータに必要な項目が設定され、そこに行としてデータが蓄積されていきます。
またデータベース内の複数のテーブルを互いに参照し、データを抽出することもできます。例えば、顧客情報のテーブルと販売情報のテーブルがあった場合、顧客番号をキーにしてこれらのテーブルを結びつけることで特定の顧客の購入状況を調べることができます。
表形式の複数のテーブルで構成され、テーブル同士の紐づけもできるRDBは複雑なデータをより簡潔に分かりやすく整理しやすくなっています。データの追加・更新・削除の処理の負担も少ないです。またSQLというRDBを操作する言語を用いることで複雑な処理が可能です。
一方で、データが膨大になるとプログラムが複雑化しやすく処理速度が落ちるというデメリットもあります。また、RDBはデータの整合性を維持するため一台のサーバーで管理するように設計されており、拡張が難しくなっています。負荷分散のため複数台のサーバーで管理した場合、データの読み込みは安易に行えますが、書き込みに関しては複数台に対して処理が必要になるため高度な専門知識や時間、コストがかかってしまいます。
非リレーショナルデータベース(NoSQL)
NoSQLとは「Not only SQL」の略でRDB以外のデータベースを指します。SQLだけでなくさまざまな言語やインターフェースを使用してデータを管理します。RDBのようにテーブル構造に定めないため、さまざまな形式のデータをそのまま格納できます。データ同士の関連がなくトランザクション(分割できない処理の単位)が存在しないため、高速な処理が可能です。また、RDBと異なりデータの一貫性を気にする必要がないためスケールアウト(サーバーの台数を増やして処理能力を高めること)にも対応できます。このようにNoSQLはRDBのデメリットをカバーすることができます。
RDBではデータの一貫性を保つためのACID特性というものが採用されていますが、NoSQLでは使用されていません。そのためデータの一貫性を保つことができません。またSQLを使用しないことで、複雑な処理が難しいといったデメリットもあります。
SQLとは
SQLとはリレーショナルデータベースを操作するための言語です。後述するデータベース管理システムを通じて、データベースに対してデータの追加や更新、削除などの処理を命令することができます。SQLについてはこちらの記事で詳しく解説しています。
https://envader.plus/article/58
データベース管理システム(DBMS)について
データベース管理システム(DBMS:DataBase Management System)とは、データベースに保管されているデータをユーザーが管理・制御するためのシステムです。DBMSはデータの定義・更新・検索といった機能を提供しています。DBMSを使うことによって、紙やスプレッドシート・テキストファイルなどの手動管理では不可能だった大量のデータの取り扱いや、複数人でのデータベースへのアクセスが可能になります。そして中でもRDB型データベースを管理するためのシステムを「リレーショナルデータベース管理システム(RDBMS:Relational DataBase Management System)」と呼びます。
RDBMSにはOracle等の企業が販売する商用と、有志の開発者コミュニティが開発・無償で提供している、自由に利用・改変ができるオープンソースのものあります。現在では企業がオープンソースのRDBMSを提供することもあります。商用の例としては、Oracle Database(Oracle)やMicrosoft SQL Server(Microsoft)、IBM Db2(IBM)が挙げられます。オープンソースのRDBMSには、MySQLやPostgre SQLなどがあります。
Oracle Database
https://www.oracle.com/jp/database/
型:RDB
分類:商用
長年世界シェアトップを誇るOracle社製のRDBMSです。日本国内でも圧倒的なシェア率のRDBMSで、多くの法人でOracle Databaseが使用されています。Oracle Databaseは耐障害性に優れ、高性能でサポートも充実しているといった特徴があります。
Microsoft SQLServer
https://www.microsoft.com/ja-jp/sql-server/sql-server-2016
型:RDB
分類:商用
Microsoft社製のRDBMSでWindows OSとの相性が良いことが特徴です。特に中小企業向けに人気があります。
IBM Db2
https://www.ibm.com/jp-ja/products/db2
型:RDB
分類:商用
IBM社製で、SQLを初めて採用したRDBMSです。一つの仮想サーバーに複数のデータベースを対応させることができ、データベース環境の構築において自由度が高い点が特徴です。
MySQL
型:RDB
分類:オープンソース
オープンソース(OSS)のRDBMSで、現在ではOracle社が開発・提供しています。高速な処理や堅牢性に優れ、商用製品と遜色ない機能を持っています。OSSのDBMSの中では高いシェア率を誇り、世界中に多くのユーザーがいるためナレッジが豊富です。シンプルで高速・高機能なMySQLは幅広く利用されています。ライセンスを購入することで商用利用も可能で、充実したサポートを受けることもできます。またMySQL5.5から派生したMariaDBというRDBMSもあります。MariaDBはMySQLとよく似た特徴を持ち、新機能の追加やソースコードの改善が組み込まれています。
PostgreSQL
型:ORDB(Object Relational DataBase)
分類:オープンソース
MySQLに次いで人気のオープンソースRDBMSで、よく「ポスグレ」と呼ばれます。RDBMSにオブジェクト指向を導入しており、大規模で複雑なデータ管理が得意という特徴があります。一般的なRDBのようにテーブル情報を扱うほかにデータ型、インデックス型、関数の定義ができるなど多機能でカスタマイズ性が高いDBMSです。
SQLite
型:RDB
分類:オープンソース
著作権が放棄されたパブリックドメインで誰もが自由に利用することができる、軽量なRDBMSです。SQLiteには、組み込み型という大きな特徴があります。一般的なDBMSはサーバーにインストールされ、様々なアプリケーションから接続して利用できます。一方でSQLiteはライブラリとして提供され、アプリケーションに内蔵して利用します。そのためアプリケーション内での利用にとどまり、個別のデスクトップソフトウェアやIoT目的での利用に適しています。
データベースの課題について
近年の様々な事業での大規模なデータベース利用においては複雑な処理が要求されています。その結果、例えば以下のようにデータベース運用のパフォーマンスを向上させるためにさまざまな手法の採用がデータベース管理者に求められるようになりました。
- データ量の膨大化に伴う対応
さまざまなソースから得られるデータの増大により、データを効率的に管理および整理する作業を行う必要があります。また事業の成長に伴いデータ管理を拡充する必要がありますが、必要なデータ容量の予測はデータベース管理者にとって極めて困難です。
- データのセキュリティ確保
データは企業にとっての財産であったり、顧客の個人情報といったプライバシー保護が求められ、セキュリティの確保は不可欠です。近年、ハッカーの手口さらに巧妙になり、あらゆる場所でデータ侵害が発生しています。データの機密性が守られると同時に、利用者が容易にアクセスできることが、これまで以上に求められています。
このようにデータベース設計・運用には、効率的なデータ管理、クエリ言語の利用、負荷分散、セキュリティ対策など、多くの考慮事項があります。こういった課題がある中、Oracle社はデータベースのチューニング(性能の調整)や更新、保護を機械学習により自動化する自律型データベースを提供しています。こういった技術は最新で革新的なものですが、注目を集めるNoSQLのように現在は様々な型のデータベースが存在します。目的に適した型の種類を選択してデータベースを設計・構築することはもちろん、データベース利用において日々生じる課題に向き合っていく必要があると言えるでしょう。
データベースエンジニアの仕事
この項目では、これまで説明した「データベース」を扱うデータベースエンジニアという仕事について説明します。
データベースエンジニアの仕事内容
データベースエンジニアは、データベースに特化して設計・構築・運用・管理を行います。
クライアントがデータベースで管理したいデータについて分析して必要な定義を設計、負荷分散やセキュリティも考慮して最適なデータベースを構築します。
実際の運用が始まると、必要なデータ容量を計算したり適宜に設定を見直したりといった管理の仕事、データのバックアップやアクセス権の管理、セキュリティリスクの調査・分析など、データベースエンジニアの仕事内容は多岐に渡ります。
データベースエンジニアの年収・将来性
データベースエンジニアの年収はスキルや案件によりますが、ボリュームゾーンは約300万円~700万円となっています。
情報システムを支えるために不可欠な職種でありながらもデータベースに関する専門スキルを有するエンジニアはいまだ少なく、IoTよりAIといった技術の拡大により重要性が高まるビッグデータの管理や大規模なデータベースの設計・構築ができるデータベースエンジニアの将来性は高いと言えます。またクライアントの意向を汲み取ったり他領域との連携のため高いコミュニケーションスキルを有していたり、データの分析・企業戦略も見渡したデータベース設計ができるエンジニアはより希少価値が高くなります。
データベースに関わる資格試験
データベーススペシャリスト試験
データベーススペシャリスト試験とは、情報処理技術者試験の一区分で、高度情報処理技術者試験の一つです。合格率は10%程度とかなり難度が高い試験となっています。初心者が就職活動のために取得する資格というよりは、実務経験者が知識の整理や実力確認、キャリアアップのために受験することの多い試験です。各データベース共通の理論や設計をはじめ、実装技術に関する知識や理解度が総合的に問われています。
ORACLE MASTER(オラクルマスター)試験
オラクルマスター試験とは、日本オラクル社が定めるデータベース認定試験で、Oracle製品に特化したベンダー資格となっています。民間資格ですが、その実用性から人気が高く、国際的にも評価されています。難易度によって「ブロンズ」「シルバー」「ゴールド」「プラチナ」の4段階に分かれており、ブロンズは初心者の方にもおすすめの難易度となっています。
OSS-DB技術者認定試験
OSS-DB技術者認定試験(オープンソースデータベース技術者試験)とは、LinuCを運営するLPI-JAPANが定める、日本の民間資格です。OSS-DBは数多くありますが、中でも「PostgreSQL」を基準のRDBMSとして採用しています。難易度には「シルバー」と「ゴールド」の2段階があり、DBの設計・開発・導入・運用ができるレベルの「シルバー」と、大規模DBの改善や運用管理、コンサルティングまで行える「ゴールド」という難易度設定になっています。
まとめ
今回はデータベースについて幅広く概要を説明しました。あらゆる事業やシステムにとって不可欠で、IT技術の進化と共に重要性が高まるデータベースの世界は奥が深く進化を続けています。エンジニアにとってデータベースは必ず触れるものですので、概要を理解して学習を深めていただけたらと思います。
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2023.03.21
【DB】初心者向けクライアントツール「DBeaver」の導入方法
DBeaverとはデータベースをGUIで操作することのできる無料のクライアントツールです。
- データベース
2024.01.26
MemcachedでWebアプリケーションのパフォーマンスを上げよう
Memcachedは、ウェブアプリケーションのパフォーマンスを向上させるための分散キャッシュシステムです。簡単に言えば、データやオブジェクトをメモリ内に一時的に保存することで、データベースやディスクへのアクセス回数を減らし、アプリケーションの応答速度を向上させます。
- データベース
2024.03.14
Redisとは?
Redisについて、初心者でもわかりやすいように解説しました。
- データベース