そもそもデータベースとは?基礎から分かるデータベース入門 | サービス | プロエンジニア

    そもそもデータベースとは?基礎から分かるデータベース入門

    各所で耳にするデータベースという言葉ですが、データベースとはそもそもどんなものなのでしょうか。今回はデータベースの構造の種類から始まり、人気のRDBMSやデータベースエンジニアという職種、そしてデータベースに関する資格についてまで、ご紹介したいと思います。

    目次

    1.データベースとは?

    1.1 データベースとは

    「データベース」とは、ある特定の条件に当てはまる「データ」を複数集めて、後で使いやすい形に整理した情報のかたまりのことを表します。特にコンピュータ上で管理するデータをデータベースと呼ぶことが多いですが、紙の上で管理する「電話帳」や「住所録」なども、立派なデータベースです。

    また、コンピュータ上でデータベースを管理するシステム(DBMS:Database Management System)のことや、そのシステム上で扱うデータ群のことを、単に「データベース」と呼ぶ場合もあります。

    ▲目次へ戻る

    1.2 データベース化のメリット

    データベースを使ってデータを管理するメリットには、次のようなものが挙げられます。

    (1)複数のデータをまとめて管理できる
    (2)目的のデータを簡単に探すことができる
    (3)簡単に編集して使うことができる

    (1)複数のデータをまとめて管理できる

    例えば届いた年賀ハガキを部屋中にバラバラに保管していた場合、次に年賀状を書こうとした際に送り先の住所を調べるのにあちこちから取り出す作業が大変です。届いたハガキを一か所にしまっておけば、置き場所を変えるのも取り出すもの簡単になります。

    (2)目的のデータを簡単に探すことができる

    届いた年賀状を一か所においておけば、その中からある一枚を探すのも簡単です。これがもしバラバラに置いていたら、ある一枚を見つけるために何枚もはずれを探す羽目になるかもしれません。

    (3)簡単に編集して使うことができる

    届いた年賀状を一か所においておけば、そこから抜粋して「友達だけの住所録」や「職場関係だけの住所録」など、情報を編集していろいろな用途に使うことが容易になります。

    ▲目次へ戻る

    1.3 データベース管理システム(DBMS)の役割

    紙の住所録ではなくコンピュータ上のデータベースとしてDBMSを使用する最大のメリットは、やはり「大量のデータを自動的に整理してくれる」という点です。多くても数百件程度の個人の住所録ならば手動で管理することも可能ですが、法人で扱う数万件のデータをいちいち手で整理するには膨大な人手や時間が必要になります。

    アナログデータをコンピュータに入力するところはまだ人力がメインな現状ですが、数万件のデータを一瞬にしてあいうえお順などにソートするなどのアシストをDBMSは担っています。

    ▲目次へ戻る

    1.4 SQLとは

    SQLとはデータベースを操作するための言語のことであり、DBMS上でデータの追加や削除、並べ替えなどを行うようコンピュータに命令するための手段です。基本的に1行ずつ入力して確定し、直ちに実行されます。複数のSQLを組み合わせて大きな一つの塊のSQLとして実行することもできますが、通常のプログラミング言語のように一連の操作をまとめてセットすることのできる「ストアドプロシージャ」という機能のあるDBMSもあります。

    なおSQLはどのデータベースであっても基本的には共通の命令を使用していますが、DBMSの製品によりその製品専用のSQLなども存在しています。移植の際には注意が必要です。

    ▲目次へ戻る

    1.5 ストアドプロシージャとは

    ストアドプロシージャとは、if文の条件分岐やfor文のループをSQLと組み合わせて、通常のプログラミング言語のような感覚でデータベースを操作することのできるDBMSの機能です。

    アプリケーションからデータベースを呼び出してデータを使用する場合、アプリケーション本体のプログラムからSQLを1行ずつ発行してデータを操作するケースと、ストアドプロシージャを呼んでまとめて結果だけを受け取るというケースがあり、用途によって使い分けられています。

    ▲目次へ戻る

    2.データベースの型の種類

    ここから先はコンピュータ上のデータベースに焦点を絞り、その種類をご紹介したいと思います。

    現在用いられている主なDBMSは「リレーショナル型データベース」が主流となっていますが、データベースの形式には他に「階層型データベース」「ネットワーク型データベース」が存在します。

    2.1 階層型データベース

    階層型データベースは名前の通りデータが階層のように構成されており、ツリー構造をとっています。ツリー構造(木構造)とは、一本の幹から複数の枝に分かれて伸びながら、最後には多数の葉をつける木に似た形の構造をとることから名づけられました。

    column_image6411_01

    図のように一つの親ノード(注1)に対して、複数の子ノードが「1:n」でぶら下がっています。そのためある特定のデータを検索する際には常にただ一つのルートのみしか存在しないため、速度が非常に速いという利点があります。

    図の下にそれれぞれに所属する社員を登録するとします。その場合例えばある「社員A」が「企画課」と「開発課」を兼務した場合、企画課と開発課それぞれの下に「社員A」というノードが個別に登録されることになり、まるで社員Aが二人いるかのようになってしまいます。

    column_image6411_02

    このように階層型データベースには、状況により重複登録が必要になってしまいます。また速度は非常に速いものの、データの追加や削除を行うとルートの再登録が必要になるなど、対応できる状況や情報の編集に対して柔軟性が低いというデメリットがあります。

    (注1)「ノード」とは

    ノードとは「節点」のことを表し、ツリー構造やネットワーク構造などの複数の要素が結びついてできた構造体において、個々の要素のことを「ノード」と呼びます。なおノード同士をつなぐ線のことは、「リンク」と呼びます。

    ▲目次へ戻る

    ネットワーク型データベースは、親ノードと子ノードがn:mで構成されるネットワーク構造を採用したデータベースです。網の目のように要素と要素が互いにリンクする構造から、「網状のもの」を表すネットワークと名づけられました。

    column_image6411_03

    図のように、n:mを可能としたネットワーク構造ならば、社員Aの重複登録を避けることができるようになりました。さらにツリー構造であれば検索のスタート地点は最上階の親ノードに限定されていましたが、柔軟に検索のスタート地点を設定できるようになりました。しかし後述するリレーショナル型データベースがさらに利便性の高いものだったため、徐々にシェアを落としていきました。

    ▲目次へ戻る

    リレーショナル型データベース(関係データベース)は、これまでのノードとリンクによって表現される2つのデータベース型とは異なり、行と列からなる「表」で表されたデータベースです。列にはそれぞれ重複しない項目名(見出し)が設定され、そこに行としてデータを追加していきます。表にすることによって、人間の目で見ても関係性がわかりやすくなっています。

    column_image6411_04

    さらに複数の表を結合することによって、より柔軟な処理を実現しています。

    column_image6411_05

    このように2つの表を組み合わせることによって、社員Aは「企画課」と「開発課」に所属していると調べることができます。この2つの表にはそれぞれ「部署リスト」「社員リスト」と名付ける(テーブル名をつける)ことにより、さらに簡潔に、分かりやすく整理することができるようになりました。

    ▲目次へ戻る

    3.データベース管理システム(DBMS)の主な製品

    ■公式サイト:
    http://www.oracle.com/jp/database/overview/index.html

    ■分類:有償

    column_image6411_06

    単に「Oracle」とも表記される、Oracle社製のRDBMSです。2015年には日本国内でのRDBMSシェア49.9%とほぼ半分を占めるシェアを誇っており、法人のデータベースにはかなりの割合でOracleが利用されています。

    ▲目次へ戻る

    column_image6411_07

    Microsoft社製のRDBMSであり、特に中小企業向けに高いシェアを誇っています。法人向けとしてはOracleに次ぐ第2位の人気となっています。

    ▲目次へ戻る

    ■公式サイト: https://www-jp.mysql.com/

    ■分類:無償(オープンソース)

    column_image6411_08

    MySQLはオープンソース(OSS)のRDBMSであり、OSSの中ではとても高いシェアを誇っています。商用利用の場合はライセンスの購入が必要となりますが、有償ソフトウェアとほぼ遜色ない機能を持っており、近年では法人向けにも多く利用されています。

    ▲目次へ戻る

    ■公式サイト: https://www.postgresql.org/

    ■分類:無償(オープンソース)

    column_image6411_09

    MySQLとともに、人気の無償RDBMSです。パフォーマンスを引き出すことに長けたMySQLに対して、バランスよく機能が実装されています。OSSの中ではMySQLに匹敵する人気となっています。

    ▲目次へ戻る

    ■公式サイト: https://sqlite.org/

    ■分類:無償(オープンソース)

    column_image6411_10

    パブリックドメインとは「著作権が放棄されている」という意味であり、オープンソースと同じく無償で利用することができます。軽快な動作が特徴で、サーバにインストールして使用するのではなく、開発用ライブラリとして提供されており、アプリケーション内に組み込んで使うことができるという特徴もあります。

    ▲目次へ戻る

    ■公式サイト: https://products.office.com/ja-jp/access

    ■分類:有償

    column_image6411_11

    ご存じ、フルパッケージのOfficeに入っているものの個人では利用機会のないアプリケーションの第1位(?)です。これはサーバ等に接続せずとも単体でデータベースとして動作するアプリケーションであり、ファイルとしてデータベースを持ち運ぶことも容易です。データ操作にSQLを書く必要がなく、ヴィジュアルで操作できるという特徴もあります。

    ▲目次へ戻る

    4.データベースエンジニアの仕事

    次に、このデータベースを扱うお仕事である「データベースエンジニア」について、仕事内容と年収のボリュームゾーンをご紹介したいと思います。

    データベースエンジニアというと何となくSQLを書いたりデータベースを管理したりしているイメージがありますが、それら「運用」は作業のうちのほんの一部にすぎません。データベースエンジニアと呼ばれる職種の主な仕事は、データベースの「設計」や「構築」です。

    データベースの設計では、必要な情報を使いやすく保存しておくための「表」や「項目」にどんなものを用意すればいいのか、それぞれの表をどうやって結合するのかといった定義を設計したり、実際の運用が始まったらどのくらいのデータを保存する必要があり、どのくらいの容量のサーバを用意する必要があるのかといった計算を行ったりしています。

    ▲目次へ戻る

    データベースエンジニアの年収は経験年数やスキルによりますが、ボリュームゾーンは約300万円~700万円となっています。

    専門スキルを身に着けることで、ITエンジニアの中でも少し高めの年収が見込まれますが、新卒では「データベースエンジニアに希望してなる」というよりも「SEとして入社して状況に応じて人員配置される」というケースが多いようです。

    ▲目次へ戻る

    column_image6411_12

    5.データベースに関する資格試験

    データベースに関する主な資格試験には、次のようなものがあります。

    データベーススペシャリスト試験とは、日本国内ではかなりの効力を持つ国家資格です。情報処理技術者試験の中でも最高難度を誇る高度区分試験のうちの一区分であり、合格率は例年1桁パーセントとなっています。かなり難度が高く、初心者が就職活動のために取得する資格というよりは、実務経験者が知識の整理や実力確認に受験することの多い試験です。特定のDBMSに依存しない、データベース共通の理論や設計に関する問題が出題されています。

    ▲目次へ戻る

    オラクルマスター試験とは、Oracle社が運営するOracle製品に特化した国際ベンダー資格です。民間資格ではありますがその実用性から高い人気を誇っており、国際的に評価される資格となっています。資格のレベルは「ブロンズ」「シルバー」「ゴールド」「プラチナ」の4段階あり、ブロンズは初心者の方にもおすすめの難易度となっています。

    ▲目次へ戻る

    OSS-DB技術者認定試験とは、LinuCで有名なLPI-JAPANが運営する、日本の民間資格です。数あるOSS-DBの中でも、特に「PostgreSQL 9.0以上」が基準として採用されています。資格のレベルには「シルバー」と「ゴールド」の2段階があり、DBの設計・開発・運用ができるレベルの「シルバー」と、改善やコンサルティングまで行える「ゴールド」という難易度設定になっています。

    ▲目次へ戻る

    6.まとめ

    今回はデータベースについてDBMSを問わない基礎知識を広く浅くご紹介してみましたが、いかがでしたでしょうか。本記事でデータベースに興味を持って頂けたら、奥深いデータベースの世界についてもっと調べてみて下さいね。

    おすすめ記事

  • OCTPASS

    ピックアップ

    フリーランス

    【Python】システムエンジニア★内部脅威探知サービスWebシステム開発

    月額単価 :80万円〜100万円

    元々PHPで作られていたシステムを Pythonにリプレースしていただきます。 今回携わっていただくシス...

    フリーランス

    【Java】システムエンジニア★大手商社向け既存システム改修

    月額単価 :60万円〜70万円

    大手商社で既に運用されている既存システムの セキュリティ改善に伴う改修業務に携わって頂きます...

    フリーランス

    【VB6/Classic ASP】システムエンジニア★大手商社向け既存システム改修

    月額単価 :60万円〜70万円

    大手商社で既に運用されている既存システムの セキュリティ改善に伴う改修業務に携わって頂きます。 ...

    フリーランス

    【AccessVBA/SQL】システムエンジニア★社内顧客管理ツール改善

    月額単価 :60万円〜70万円

    PowerBuilderで作られている顧客管理ツールを AccessVBA/SQLServerを使用し、 作業効率を上げていただ...

    フリーランス

    【C#/HTML/CSS】システムエンジニア★大手企業向けWebアプリ開発

    月額単価 :70万円〜

    以下の機能を備えた、BtoB向けのWebアプリケーションの 開発&リリースをお任せします。 ・ログ...