DBMS(データベース管理システム)

信頼の理由

データベース管理システム(DBMS)とは?

データベース管理システム(DBMS)は、プログラマーやデータベース管理者、ソフトウェア、エンドユーザーなどが、データベースにデータを格納、整理、アクセス、検索、操作するためのソフトウェアです。データマネジメントにおいて、重要な役割を果たします。

DBMSが重要な理由は、膨大な量のデータを効率的かつ確実に管理し、データの整合性を保ちながら様々なメリットを提供するからです。

企業におけるDBMSはデータベース管理者(DBA)に対して、部門、チーム、アプリケーション間のデータ共有を容易にする構造化された枠組みを提供します。また従業員がイノベーションを推進し、企業が競争力を維持するために必要な、データへのアクセスと制御を提供します。

データベース管理システムの歴史

データベース管理システムの歴史は、コンピュータによるデータ処理が始まった1960年代初頭にまで遡ります。当時は、「情報管理システム」と呼ばれるのが一般的でした。

最初に市販されたデータベース管理システムは、統合データストア(IDS)と呼ばれ、1960年代後半にゼネラル・エレクトリック(GE)のチャールズ・W・バックマンと彼のチームによって開発されました。

IDSは階層型DBMSであり、レコード間に親子関係を持つツリー状の構造でデータを整理します。ユーザーは構造化されたシステムでデータを保存、検索、管理できるようになりました。また、IDSはデータベース内のデータの構造と関係を定義するデータ辞書という概念を導入します。それ以前は、データは通常フラットファイルに格納され、ファイルの格納方法、アクセス方法、操作方法についての標準はありませんでした。

バックマンのIDSは、1970年代に登場したリレーショナルデータベースとSQL(Structured Query Language)によって取って代わられました。その後、データベース管理システム製品とサービスは、データの保存、検索、管理を改善するために絶え間なく進化し続けています。

年表:データベース管理システムの進化

イベント
1964 ゼネラル・エレクトリック社のチャールズ・バックマンによる最初のデータベース、統合データストア(IDS)の開発。
1966 IBM、ロックウェル社、キャタピラー社との共同開発による情報管理システム(IMS)を発表。
1970 エドガー・F・コッドは、”A Relational Model of Data for Large Shared Data Banks “という論文でリレーショナルモデルを紹介。
1974 構造化クエリー言語(Structured Query Language:SQL)が作成された。
1976 ピーター・チェン(Peter Chen)氏は、論文「The Entity-Relationship Model – Toward the Unified View of Data」の中で、「Entity-Relationship Model」を紹介している。
1979 オラクル、SQLを使用する初の商用リレーショナル・データベースを発表。
1980 IBM、SQLベースのリレーショナル・データベース管理システム「System R」を発表。
1981 パーソナルコンピュータ上で動作する初のフル機能DBMS、SQL/DSをIBMが発表。
1983 IBMがメインフレーム向けにDB2の最初のバージョンをリリース。
1986 オブジェクト指向データベースシステム宣言」が発表され、オブジェクト指向データベースの開発が大きく推進される。
1996 最初のオープンソースリレーショナルデータベース管理システムの1つであるPostgreSQLを発表。
1998 もう一つの重要なオープンソースRDMSであるMySQLが、Windows 95およびNT用にリリースされた。
1998 マイクロソフトがDBMSを全面的に書き直したSQL Server 7.0を発表。
2000 インターネットの新興企業がXMLデータベースを採用。
2004 「NoSQL」という用語が人気を博し、新世代の非リレーショナル分散データベースにつながる。
2006 グーグル、社内NoSQLデータベース「BigTable」に関する論文を発表、オープンソースNoSQLデータベースの新潮流に影響か。
2012 Amazonが独自のNoSQLデータベースDynamoDBを導入。
2013 大量の構造化データを扱うために設計された分散型データベース、FoundationDBをリリース。
2017 グーグル、グローバル分散データベース「スパナー」を発表。
2020 クラウドネイティブデータベース、エッジデータベース、データベース管理のためのAI統合の改善に焦点を当てた、DBMS技術の継続的な開発と革新。ブロックチェーン・データベースも重要なテーマとなっている。

データベースとDBMSの違い

データベースとDBMSという言葉は、よく混同されることがあります。一般ユーザーがデータベースを使う際に、DBMSの背景や役割を理解していないことから、間違いが生まれるのです。

さらに、DBMSがアプリケーションコードに直接組み込まれている場合もあり、システムの区別が分かりにくくなっています。

用語をしっかりと区別し、正しく使い分けるためには、それぞれの持つ役割と機能を理解する必要があります。データベースとは、構造化されたデータの集合体です。具体的には、テーブル、レコード、フィールドなどの形式で整理されたデータの集まりを指します。一方DBMSは、データベース管理システムの略称です。開発者、エンドユーザー、アプリケーションがデータベースを作成、管理、操作するためのソフトウェアを指します。

データベースとDBMSの違い

DBMSコンポーネント

すべてのDBMSの中核を担うのが、データベースエンジンと呼ばれるコンポーネント(構成要素)です。

データベースエンジンは、以下の役割を担います。

  • 基礎となるストレージシステムやファイルシステムと直接やり取りする。
  • エンジンがデータベースシステム内のデータを管理・操作できるようにする。
  • モジュラーサブコンポーネント間のやりとりをオーケストレーションする。

データベースエンジンは以降のモジュールで構成されています。

バックアップとリカバリ

データベースのバックアップとリカバリは、データ損失やシステム障害からデータを保護するための重要な技術です。

データベースのバックアップを作成し、データを復元し、リカバリ操作を実行するためのメカニズムを提供します。

同時実行制御とトランザクション管理

DBMSでは、複数のユーザーやアプリケーションが同時にデータベースにアクセスする際、データの整合性を保つために同時実行制御とトランザクション管理を行います。

同時実行制御は、複数のユーザーやアプリケーションが同時に同じデータにアクセスしようとする場合、データの競合を防ぐための技術です。ロック機構などを使用して、データの整合性を保ちます。

トランザクション管理は、データベースへの一連の操作を単位ごとにまとめて実行する手法です。トランザクションは、原子性、一貫性、分離性、耐久性(ACID)の特性を持つ必要があります。

データベースアクセス言語

DBMSでは、ユーザーがデータベースへのアクセスに使用するデータベースアクセス言語を処理します。

データベースエンジンがデフォルトのアクセス言語で記述されたユーザーのクエリやコマンドを受け取り、解釈するのです。

具体的な機能は、以下のとおりです。

  • クエリ言語の構文分析:ユーザーの入力したクエリが正しい構文であることを確認します。
  • カタログ情報の検証:クエリで指定されたテーブルや列が存在することを確認します。
  • 実行プランの生成:要求されたデータを取得または操作するために最適な方法を計画します。
  • データの取得・操作:データベースエンジンに指示して、データを取得または操作します。

データ定義言語(DDL)

DDLは、ユーザーがデータベースの構造と構成を定義するためのモジュールです。

具体的には、テーブル、ビュー、インデックス、制約などのデータベースオブジェクトを作成、変更、削除するためのコマンドを提供します。

データ辞書

データ辞書(メタデータ・リポジトリとも呼ばれる)は、データベースに関するメタデータを格納するモジュールです。メタデータとは、データの構造、関係、プロパティに関する情報のことです。

データ辞書は、DBMSエンジンによって以下の目的に使用されます。

  • データの一貫性を保証する:データの構造や制約に関する情報を参照することで、データの整合性を保ちます。
  • 一意の制約を強制する:データの重複や矛盾を防ぐために、一意の制約に関する情報を参照します。

データ操作言語(DML)

DMLは、データベース内のデータを操作・検索するためのモジュールです。

ユーザーは、DMLステートメントと呼ばれるコマンドを使用して、データの挿入、更新、削除、クエリを行うことができます。

データウェアハウスとビジネスインテリジェンス

データウェアハウスは、複数のソースからデータを集めて分析し、ビジネスに役立つ情報(ビジネスインテリジェンス)を提供します。

具体的には、以下の機能があります。

  • データの抽出、変換、ロード(ETL):複数のソースからデータを抽出し、分析しやすいように変換して、データウェアハウスに格納します。
  • オンライン分析処理(OLAP):データウェアハウスに蓄積されたデータを多角的に分析し、ビジネスインテリジェンスを得るためのツールを提供します。
  • レポーティング:分析結果を分かりやすく可視化し、レポートとして出力します。
  • ダッシュボード:重要な指標をリアルタイムで表示し、ビジネス状況を可視化します。

インデックス作成

インデックス作成は、データベースのクエリ実行速度を向上させる技術です。

ほとんどのDBMSにはインデックス作成モジュールが搭載されており、データの検索効率を大幅に向上できます。

ロック

ロックは、複数のユーザーやトランザクションが同時に同じデータを変更できないようにしてデータ競合を防ぎ、一貫性を維持する技術です。

DBMSのロックマネージャーコンポーネントは、上記のようなロック機能を提供します。

ロギングと監査

ロギングと監査は、データベースの安全性を確保するために重要な機能です。多くのDBMSには、データベースの変更履歴やシステムイベントを記録するためのロギングモジュールが搭載されています。

ロギングは、データベースへの変更(挿入、更新、削除など)や、バックアップやリカバリなどのシステムイベントを記録する機能です。

監査は、ログを監視・レビューすることで、以下の目的を達成します。

  • ユーザーのアクションを追跡する
  • データの整合性を維持する
  • セキュリティポリシーのコンプライアンスを強化する

クエリプロセッサー

クエリプロセッサーは、ユーザーが発行したクエリを受け取り、データベースエンジンと連携して効率的に実行するためのモジュールです。

具体的には、以下の役割を担います。

  • クエリ解釈:ユーザーが入力したクエリを解析し、意味を理解します。
  • クエリ最適化:利用可能なインデックス、結合操作、データアクセス方法などを考慮し、クエリを効率的に実行するためのプランを策定します。
  • クエリ実行:策定したプランに基づいて、データベースエンジンと連携してクエリを実行します。

クエリプロセッサーには、クエリ最適化のためのサブモジュールが含まれています。サブモジュールは、以下の要素を考慮して、クエリを最適化します。

  • 利用可能なインデックス:インデックスを活用することで、データ検索を効率化できます。
  • 結合操作:複数のテーブルを結合するクエリの場合、結合順序を最適化することで、処理速度を向上できます。
  • データアクセス方法:データの格納方法やアクセス方法を考慮することで、データアクセスを効率化できます。

レプリケーション

レプリケーションとは、データベースのデータを複製し、複数の場所やサーバーに分散させる技術です。異なる場所にデータのコピーを分散させることで、データの可用性、耐障害性、パフォーマンスを向上できます。

レプリケーションを使用するメリットは、以下のとおりです。

  • データの可用性向上:データベースのコピーの1つが利用できなくなっても、別のコピーからデータにアクセスできます。
  • 耐障害性向上:データベース障害が発生した場合でも、レプリカからデータを復元できます。
  • パフォーマンス向上:データベースへのアクセスを分散させることで、パフォーマンスを向上させます。

セキュリティと認証

セキュリティと認証モジュールは、データベースへのユーザーアクセスを制御し、データの機密性と完全性を保ちます。具体的には、以下の機能を提供します。

  • 認証:ユーザーが、ユーザー本人であることを確認します。
  • ユーザー管理:ユーザーの登録、編集、削除を行います。
  • アクセス制御:ユーザーの役割と職務要件に基づいて、データベースへのアクセス権限を付与します。

上記の機能により、最小特権の原則(PoLP)に基づいたアクセス制御を実現し、データベースの安全性を保ちます。

ストレージ

データベースエンジンは、ストレージエンジンと連携して、データベースのデータを管理します。

  • ストレージエンジン:データの物理的な保存方法とアクセス方法を管理します。具体的には、データの格納形式、インデックスの作成、データの読み書き処理などを担当します。
  • データベースエンジン:ストレージエンジンから提供される機能を利用して、データベース全体の機能を実現します。具体的には、クエリ処理、トランザクション管理、データの整合性維持などを担当します。

データベースエンジンは、ストレージエンジンと連携することで、データベースの性能と信頼性を向上させるのです。

ユーザーインターフェース

ユーザーインターフェースは、プログラマー、データベース管理者、エンドユーザーなど、さまざまなユーザーがデータベースと対話するための手段を提供します。具体的には、以下の種類があります。

  • コマンドラインインターフェース(CLI):コマンドを入力して操作を行うインターフェースです。専門知識が必要ですが、細かい操作が可能です。
  • グラフィカルユーザーインターフェース(GUI):マウスやアイコンを使って操作を行うインターフェースです。直感的に操作できますが、CLIに比べて機能が制限されるケースもあります。
  • アプリケーションプログラミングインターフェース(API):プログラムからデータベースにアクセスするためのインターフェースです。ソフトウェア開発に利用されます。

ユーザーインターフェースは、データベースを簡単で効率的に、そして安全に利用するために重要な役割を果たします。

ユーザーポリシー

ユーザーポリシーは、データベースへのアクセスを制御し、内部セキュリティを強化するためのガイドラインです。具体的には、以下の役割を担います。

  • アクセス制御:ユーザーがアクセスできるデータベースやデータの範囲を制限します。
  • 内部セキュリティ:データベースへの不正アクセスやデータ漏洩を防ぎます。

ユーザーポリシーは、以下の要素で構成されます。

  • パーミッション:ユーザーが実行できる操作を許可します。
  • ロール:ユーザーに割り当てることができる権限のグループです。
  • 特権:特定のユーザーに付与する特別な権限です。
    ユーザーポリシーを設定することで、データベースを安全に運用できます。

RDBMSとDBMSの比較

リレーショナル・データベース管理システム(RDBMS)はDBMSの一種です。すべてのRDBMSはDBMSですが、すべてのDBMSが必ずしもRDBMSとは限りません。

DBMS RDBMS
さまざまなタイプのデータベース・モデルを管理するために、さまざまなタイプを使用する。 リレーショナル・データベース・モデルしか管理できない。
異なるタイプのデータベース・モデルは、異なる構造でデータを保存する。 常に行と列を持つテーブルにデータを保存する。
タイプによって、データの完全性を自動的に強制する場合としない場合がある。 プライマリ・キー、ユニーク・キー、外部キーなどの制約により、データの整合性を自動的に強制する。
タイプによって、データ操作に使用する言語やテクニックは異なる。 常にSQL(構造化クエリー言語)を使用する。

データベース管理システムの種類

20世紀までは、データベース管理システムは構造と用途によって、リレーショナル型と非リレーショナル型に分類されていました。

リレーショナル型 DBMS(RDBMS)は、データをテーブルと呼ばれる構造に格納します。

非リレーショナル型 DBMS(NoSQL)は、テーブルにデータを格納せず、キー・バリューストアやドキュメントストアなどのデータ構造を使用します。

21世紀に入り、DBMSはRDBMSと非RDBMSに分類されるだけでなく、それぞれが提供するメリットによっても分類されるようになります。

DBMSの種類は、以下のとおりです。

クラウドデータベース管理システム

クラウドデータベース管理システム(Cloud DBMS)は、Amazon Auroraなどのクラウドプロバイダーのリモートデータセンターに保存された分散データを管理できるよう設計されています。

カラム型データベース管理システム

カラム型データベース管理システム (Columnar DBMS) は、Apache Cassandraのようにデータを行単位ではなく列単位で格納することで、クエリ処理を高速化するデータベースです。

列単位でデータ圧縮を行うため、データ分析やビジネスインテリジェンスアプリケーションで大量のデータセットを扱う場合、従来の行指向データベースよりも高速にクエリ処理を実行できます。

分散データベース管理システム

分散データベース管理システム(DDBMS)は、Apache Hadoopエコシステムに代表されるシステムで、複数の場所やコンピューティング環境に分散された論理的に関連するデータベースのデータ整合性を確保するよう設計されています。

グラフデータベース管理システム

グラフデータベース管理システムは、従来のリレーショナルデータベースとは異なり、データ間の関係性に焦点を当てたデータベース管理システムです。

個々のレコードレベルで関係を保存するため、ソーシャルメディアデータのような相互接続された関係を持つデータの管理に最適です。

階層型データベース管理システム

階層型データベース管理システムは、親子関係で構成される階層型データベースをサポートするように設計されています。

同タイプのDBMSは、メインフレームコンピューティング時代から存在しますが、現代における用途は限られています。

HTAPデータベース管理システム

HTAPデータベース管理システムは、従来のデータベースとは異なり、トランザクション処理と分析処理を同時に処理できる新しいタイプのデータベースシステムです。

従来のデータベースは、オンライントランザクション処理(OLTP)とオンライン分析処理(OLAP)のがそれぞれ異なる特性を持つため、別々のシステムで処理していました。

HTAPデータベースの代表的な例としては、SAP HANAやCockroachDBなどが挙げられます。高い性能と拡張性を備えており、大規模なデータ分析にも対応できます。

インメモリデータベース管理システム

従来のデータベースシステムは、データをハードディスクに保存します。しかし、ハードディスクはメモリよりもアクセス速度が遅いため、データ検索に時間がかかります。

インメモリデータベース管理システムは、データをメインメモリに保存することで、上記の問題を解決しました。メモリはハードディスクよりもアクセス速度が格段に速いため、データ検索を大幅に高速化できるのです。

インメモリデータベースの代表的な例としては、Volt Active DataやRedisなどが挙げられます。高い性能と拡張性を備えており、大規模なデータ処理にも対応できます。

オブジェクト指向データベース管理システム

オブジェクト指向データベース管理システム(OODBMS)は、従来のデータベースとは異なり、オブジェクト指向プログラミングの概念に基づいて設計されたデータベース管理システムです。

OODBMSは、複雑なデータ構造をオブジェクトと呼ばれる単位として管理することにより、データの保存と検索を効率的に行うことができます。

db4oは、代表的なOODBMSの一つです。

NewSQLデータベース管理システム

PostgreSQLのようなNewSQLデータベース管理システムは、従来のリレーショナルデータベースの強みを活かしながら、NoSQLデータベースのスケーラビリティとパフォーマンスも兼ね備えた新しいタイプのデータベースです。

大規模分散環境向けに設計されたNewSQLデータベース管理システムは、高スループットのトランザクションワークロードを処理できます。

時系列データベース管理システム

InfluxDBのような時系列データベース管理システムは、タイムスタンプ付きのデータを効率的に保存、検索、分析できるように特化したデータベースです。

金融分析やIoT監視システムなど、時間経過に伴うデータの変化を分析する必要がある場面でよく利用されています。

有名なデータベース管理システム

よく知られているDBMSの例としては、以下のようなものがあります。

Microsoft Access logo Access – Microsoft OfficeとOffice 365に含まれる軽量リレーショナルデータベース管理システム(RDMS)
Amazon RDS logo Amazon RDS – MySQL、Oracle、SQL Server、PostgreSQL、Amazon Auroraデータベースを管理するエンジンを提供するネイティブ・クラウドDBMS。
Apache Cassandra logo Apache Cassandra – 大量のデータを扱えることで知られるオープンソースの分散型データベース管理システム。
Filemaker logo Filemaker – ローコード/ノーコード(LCNC)リレーショナルDBMS。
Google Cloud Spanner logo Google Cloud Spanner – Google Cloudが提供する、グローバルに分散され、水平スケーラブルで、強い一貫性を持つリレーショナルデータベースサービス。
IBM DB2 logo IBM Db2 – IBMが開発したリレーショナル・データベース管理システムで、環境やワークロードに応じてさまざまなエディションを提供している。
MariaDB logo MariaDB – MySQLをフォークしたオープンソースのリレーショナルデータベース。
Microsoft Azure SQL Database logo Microsoft Azure SQL Database – Microsoft Azureが提供するクラウドベースのリレーショナル・データベース・サービスで、完全に管理されたSQLデータベースを提供する。
MongoDB logo MongoDB – ドキュメント指向のスキーマを使用し、高いスケーラビリティと柔軟性を提供する人気のNoSQLデータベース管理システム。
MySQL logo MySQL – オラクルが所有するオープンソースのリレーショナルデータベース管理システム(RDBMS)
Oracle RDMS logo Oracle – ハイブリッド・クラウド・アーキテクチャに最適化された独自のRDMS。
PostgreSQL logo PostgreSQL – オープンソースのリレーショナル・データベース管理システムで、堅牢性、拡張性、豊富な機能で知られている。
SAP HANA logo SAP HANA – リアルタイムのデータ取り込みと高性能な分析用に最適化された、インメモリ型の列指向RDBMS。
SQL Server logo SQL Server – Microsoftが提供するエンタープライズレベルのリレーショナルデータベース管理システムで、非常に大量のデータとデータベースクエリを扱うことが可能。
SQLite logo SQLite – 組み込みシステムやモバイル・アプリケーションで広く使用されている、ファイルベースの軽量リレーショナル・データベース・エンジン。
Teradata logo Teradata – 大量のデータを管理・分析するためのスケーラブルなソリューションを提供する強力なSQLエンジン。

 

DBMSを使うメリット

複数のユーザーやアプリケーションが同時に同じデータベースを操作するような状況では、DBMSは特に重要です。

DBMSは、以下の機能によって、データの整合性と安全性を守ります。

競合とエラーからの保護

DBMSは、同時実行制御メカニズムによって、高トラフィックな状況でもデータの整合性を保ちます。複数のユーザーが同時に同じデータにアクセスを試みても、競合やエラーが発生しないようにする仕組みです。

強力なセキュリティ機能

DBMSは、幅広いセキュリティ機能を提供します。管理者はアクセス制御ルールを定義し、ユーザーロールを割り当てることで、許可されたユーザーのみがデータにアクセスできるように設定できます。

データの暗号化や監査ログなど、さまざまなセキュリティ対策も可能です。

コンプライアンスへの対応

DBMSは、監査証跡やロギング機能を備えています。これにより、誰がいつどのような操作を行ったかを記録することができ、コンプライアンス要件への対応を容易にします。

データライフサイクル管理

DBMSは、データの保持、アーカイブ、廃棄などのポリシーを実装することで、データライフサイクル管理をサポートします。

プライバシー保護

DBMSは、機密データを匿名化または暗号化する機能を提供することで、プライバシー保護をサポートします。

データベース管理システムの課題

データベース管理システムは、中小企業から大企業に至るまで、データの処理や管理の方法に大きな変革をもたらしました。

しかしエンタープライズDBMSの導入と管理には、多くの場合、高度な学習が必要です。特に、DBMSを企業資源計画(ERP)システムやCRMプラットフォームと統合する必要がある場合は、さらに難易度が上がります。

新しいDBMSの導入にはコストもかかります。中堅企業であっても、DBMSを適切に設定、保守、最適化するには、熟練したデータベース管理者を雇用するか、外部に委託するケースも多いでしょう。

ライセンス費用、ハードウェアインフラ、ソフトウェアアップグレード、継続的なメンテナンス費用なども、特に中小企業にとっては大きな負担となります。

DBMSの未来

今日のDBMSは、人工知能(AI)、機械学習(ML)、ブロックチェーンなどの最先端技術を取り入れることで、組織が直面するデータ管理の課題解決に大きく貢献しています。

AI/MLによる自動化と自律的なパフォーマンス向上

AI/ML機能を備えたDBMSは、クエリの最適化、データのインデックス作成、異常検知などのタスクを自動化し、データ管理の効率化を実現します。

高度なデータベース管理システムは、データパターンから学習し、変化するワークロードに適応することで、自律的にパフォーマンスを最適化します。

ブロックチェーンによるデータの信頼性と透明性の向上

ブロックチェーン対応データベースは、改ざん不可能な透明性の高いデータストレージを提供し、安全で監査可能なトランザクションを実現します。

中央管理者への依存をなくすことで、データの完全性を高め、金融、サプライチェーン、ヘルスケアなどのデータ改ざんリスクが大きい業界に最適なソリューションとなります。

ストリーミング処理によるリアルタイム分析と迅速な意思決定

ストリーム処理機能を内蔵したDBMSは、リアルタイム分析、不正検知、パーソナライズされた顧客体験などのユースケースにおいて不可欠な存在となっています。

モノのインターネット(IoT)やストリーミングデータソースの普及により、DBMSはリアルタイムデータ処理能力をさらに強化する必要があり、進化が期待されているのです。

関連用語

マーガレット・ローズ
Technology Expert
マーガレット・ローズ
テクノロジーエキスパート

マーガレット・ローズは、受賞歴のあるテクニカルライター兼教師です。説明能力に優れており、複雑なテクノロジーを一般の方にもわかりやすく説明します。過去20年にわたり、彼女が書いたITの定義はQueのテクノロジー用語百科事典...