【データベースとは】
「決まった形式(データモデル)で整理されたデータの集まり」
厳密に言うと、決まった形式で「複数で共有、利用すること」と「検索、加工すること」を目的に整理されたデータの集まりを指す。
また、データベースは「データベース管理システム(DBMS)」というソフトウェアで制御(データの保存、検索、更新、削除などの操作)を行う。
例えば、以下のような場面でデータベースが役立つ。
・商品在庫データの中から、在庫数が一定数以上の商品を見つけたい。
・住所録の中から、東京都在住の人物をリストアップしたい。
・契約リストのなかから、担当者が「田中」のものだけを抜き出したい。
(補足)
Webサービスの基本的なサーバー構成(Web3層構造)には、必ずデータベースが含まれている。
また、下記のようにサーバーとデータベースはやりとりをしている。
「Webサーバー⇔APサーバー⇔データベース」
【データベースとスプレッドシートの違い】
データベースとスプレッドシート(Excelなど)は、どちらも情報を保存する便利な方法ではあるが、これらには次のような違いがある。
・データをどのように保存し、操作するか
・データにアクセスできるのは誰か
・どの程度の量のデータを保存できるか
スプレッドシートは本来1人のユーザー向けに設計されており、その点を反映した特性を備えている。ユーザーが1人または少人数で、過剰に複雑なデータ操作を大量に実行しないのであれば、スプレッドシートは十分に機能する。
一方、データベースは、整理された情報の大規模な集合を保持するように設計されていて、そのデータが膨大な量になることもある。データベースを使用すると、同時に複数のユーザーが迅速、安全にデータを利用でき、きわめて複雑な論理と言語を使用してデータに対するクエリを実行できる。
(補足)
クエリ:データベースに対する命令文。
【データベースの種類(データ・モデル)】
データを整理及び管理する方法には、以下のようなものが挙げられる。
- ツリー状に構成する「階層型」
会社の組織図のように、上層から下層に分岐する1対多の形でデータが整理されているデータベース。
上層から特定のデータに至るまでのルートは一つのみのため、データの検索が早いという特長がある。
しかし、データが重複する場合データ構造が冗長になりやすいデメリットを持っている。また、データの追加や削除が入るとアクセスルートは変わってしまうため、柔軟なデータ管理が困難になる。
例)会社の組織図で社員のAさんが人事部と総務部を兼任している場合、人事部と総務部の両方の下層にAさんの名前が記入されることになる。このように、状況次第では一つのデータを複数個所に登録する必要が生じるのが弱点である。
- 網目状に構成する「ネットワーク型」
関連性のあるデータを相互に結び付けて保存するタイプ。階層型を、下層から上層に向けても分岐させた形式のデータベースといえる。
これにより、多対多の関係性が成り立つと同時に、情報の重複登録が避けられる。
デメリットとしては、データの追加、削除でメンテナンスが煩雑になるのが挙げられる。
例)社員のAさんが人事部と総務部を兼任している場合、人事部と総務部の両方から同一のAさんのデータへとたどり着ける。逆に、Aさんのデータから人事部と総務部の両方にアクセスすることも可能となる。
そのため、階層型のように、人事部と総務部の下層に別々にAさんの情報を登録する必要がなくなる。
- 表で構成する「関係型」 ※別名:リレーショナルデータベース(RDB)
現在はこのリレーショナルデータベースが主流となっている。
表(Excel)に似た形式で、行と列で構成されたデータベース。
Excelでいう表を「テーブル」といい、列を「フィールド」、行を「レコード」と呼ぶ。フィールドには項目が入り、レコードには項目ごとに該当するデータが入る。
・レコードにはルールがある。
各レコードのデータは、必ず「一意(ダブりがないよう)」にならないとダメだということ。データベースは検索されることを念頭におく必要があるので、重複したデータがあると検索時に支障がでる。
・管理しやすいようにどのようなデータを格納しているのか、「属性」をおく必要がある。言わば、「商品名」、「販売価格」などインデックスのようなもの。
・メリット:テーブル同士を組み合わせて表示できるため、複雑に関連している情報でも整理がしやすい。
アクセスルートが変わらない。また、データの重複を避けられること、検索能力が高いのも利点である。
・デメリット:データ容量がおおきくなりがち(1つのサーバで管理できない)。因みに、これを克服するのが「NoSQL」。
・RDBは、「SQL」という言語で操作する。
-
NoSQL
SQLを使わないという意味ではないので注意。Not Only SQLの略で、SQLだけではないという意味。
NoSQLは「ビッグデータ」などの大量のデータを扱う場合に威力を発揮する。
同時にデータを探すことが得意。大量のコンピューターを使って「同時に大量のデータを検索」したりできるのが特徴。 -
他にも「オブジェクト指向データベース」、「分散データベース」、「データ・ ウェアハウス」などがある。
【データベース管理システム(DBMS)】
データベース管理システムとは、その名のとおり「データベースの管理・運用を行うシステム」のこと。
つまり、データベースを制御するシステムである。
データベースは自動でデータを追加、更新、削除などの操作を行ってくれない為、必ず管理する人が必要になる。ただ、管理する人が誤って同じデータを追加、あるいは削除してしまってはいけない。人間の手でデータベースを管理することは非常に危険なので、コンピュータのシステムに管理してもらう方が断然良いのである。
データベース管理システムであれば自動でデータ整理を行うため、簡単にデータを編集し、抽出できる。更に、重複するデータを入力しようとした際には警告が表示されるなど、ミスを防ぐうえでも有効である。
まとめると、
・データベースを操作・管理する
・データベースへのアクセスを制御、処理する
・障害が発生したとき正常状態に復旧する
がDBMSの主な機能である。
・リレーショナルデータベース(RDB)を管理、運用するデータベース管理システムのことを特に、
「リレーショナルデータベース管理システム(RDBMS)」と呼ぶ。
【代表的なDBMS】
・MySQL:世界でもっとも利用されている「データベース管理システム」。大容量のデータに対しても高速で動作し、便利な機能がたくさんあるので、非常に実用性が高くなっている。また、オープンソースなので非商用利用であれば無償で使用できるため、初心者でも導入しやすい。
・Oracle Database
・PostgreSQL
・SQLite
・Microsoft Access
【構造化クエリ言語(SQL)】
「SQLはデータベース(RDBMS)を操作するための言語」。
SQLは国際標準化されているため、さまざまなデータベースで利用できる。
有名なデータベースとしては、Oracle、MySQL、PostgreSQL、SQLiteなどが、いずれもSQLで操作可能。
SQLでデータベースに対して行える操作として、主に次のようなものがある。
・データの検索
・データの追加
・データの更新
・データの削除
・テーブルの作成
・テーブルの削除
・テーブルの主キーの設定
・ユーザー権限の付与