データベース

コンピューティングにおいて、データベースは、電子的に保存され、アクセスできる組織化されたデータの集合である。実メモリに保存されるもの、CSVなどのファイルに保管される物、OSのファイルシステムなどから、後述のデータベース管理システムを使った大規模なものまである。

小規模なデータベースはOSのファイルシステム上にファイルとして保存されるが、大規模なデータベースはOSに依存しない低レベルなフォーマットで外部記憶装置に保存される。またコンピュータ・クラスターまたはクラウド・ストレージで保存される。データベース設計に関わる分野は多岐にわたり、データモデリング、効率的なデータ表現と保存、クエリ言語、機密データのデータベース・セキュリティやプライバシー、同時アクセスとフォールトトレランスのサポートを含む分散コンピューティングの課題など、形式技術と実用的な考慮事項に及ぶ。

データベース管理システムは、エンドユーザー、アプリケーション、およびデータベース自体と対話し、データを取得し分析するためのソフトウェアである。さらに、DBMSソフトウェアには、データベースを管理するために提供される関連機能も含まれている。データベース、DBMS、関連アプリケーションの全体を含めてデータベースシステムと呼ぶ。しばしば「データベース」という用語が、DBMS、データベースシステム、またはデータベースに関連するアプリケーションのいずれかを指す場合に漠然と使われている。

コンピュータ科学者は、データベース管理システムを、サポートするデータベースモデルに基づいて分類している。リレーショナルデータベースは、1980年代の主流であった。これらは、データを一連の表の行と列としてモデル化し、大多数はデータの書き込みとクエリにSQLを使用する。2000年代には、異なるクエリ言語を使用する NoSQL と総称される非リレーショナルデータベースが普及した。

1. 用語と概要
--------

形式的な「//データベース//」は、関連するデータの集合とその編成方法を指す。通常、このデータへのアクセスは、「//データベース管理システム//」によって提供される。DBMSは、ユーザーが1つまたは複数のデータベースと対話し、データベースに含まれるすべてのデータへのアクセスを提供するコンピュータソフトウェアの統合セットで構成されている。DBMSは、大量の情報の入力、保存、および検索を可能にするさまざまな機能を提供し、その情報がどのように編成されているかを管理する方法を提供する。

このように、両者は密接な関係にあるため、「データベース」という用語は、データの集まりとしてのデータベースと、それを操作するために用いるDBMSの両方を指す言葉として気軽に使われることが多い。

情報技術の専門家以外の世界では、「データベース」という用語は、関連するデータの集合体を指すことが多く、サイズや使用要件の点からデータベース管理システムを用いることが一般的であるUllman。

既存のDBMSは、データベースとそのデータを管理するためのさまざまなな機能を提供しており、それらは次の4つの主要な機能群に分類される。

データ定義- データの編成を規定する定義を作成、変更、および削除する。
更新- 実データを挿入、変更、および削除する。
検索- 情報を直接利用できる形式で、または他のアプリケーションでさらに処理できる形式で提供する。検索したデータは、基本的にデータベースに保存されているのと同じ形式で利用できる他、データベースの既存のデータを変更または組み合わせて得た新たな形式でも利用することができる。
管理- ユーザーの登録と監視、データセキュリティの実施、性能の監視、データ完全性の維持、並行性制御の対応、予期しないシステム障害などの事象によって破損した情報の回復など。データベースとそのDBMSは共に、特定のデータベースモデルの原則に準拠しているTsitchizris。 「データベースシステム」とは、データベースモデル、データベース管理システム、データベースを総称したものであるBeynon-Davies。

物理的には、データベース・サーバーは、実際のデータベースを格納し、DBMSと関連ソフトウェアのみを実行する専用コンピュータである。データベース・サーバーは通常、大容量のメモリと、安定したストレージを備えたマルチプロセッサ・コンピュータである。大容量のトランザクション処理環境では、複数台のサーバーと高速チャネルを介して接続されたハードウェア・データベース・アクセラレータも使用される。ほとんどのデータベース・アプリケーションの中心にDBMSがある。DBMSは、ネットワークのサポートを組み込んだカスタムのマルチタスク・カーネルを中心に構築されることもあるが、最近のDBMSは通常、これらの機能を提供するために、標準的なオペレーティングシステムに依存しているreason=This has become a mish-mash people's opinion and while boardly accurate may be in places undue and ignored e.g. SAN storage and needs cited rewrite from scrach。

DBMSは重要な市場 を形成しているため、コンピューターやストレージのベンダーは、自社の開発計画にDBMSの要件を考慮に入れていることが多いNelson。

データベースとDBMSは、サポートするデータベースモデル、実行するコンピュータの種類、データベースへのアクセスに使用するクエリ言語、内部エンジニアリングによって分類することができる。

2. 歴史
-----

データベースとそれぞれのDBMSの規模、機能、性能は桁違いに大きくなっている。これらの性能向上は、プロセッサ、コンピュータメモリ、コンピュータストレージ、およびコンピュータネットワークの技術進歩により可能となった。データベースの概念は、1960年代半ばに広く普及した磁気ディスクなどの直接アクセス記憶媒体の出現によって可能となった。それ以前のシステムは、磁気テープへのデータの順次保存に依っていた。その後のデータベース技術の発展は、データモデルまたはデータ構造に基づいて、ナビゲーショナルBachman、SQL/リレーショナル、ポストリレーショナルの3つの時代に分けることができる。

初期のナビゲーショナル・データモデルは、階層型モデルとネットワーク型モデルの2つが主であった。これらは、あるレコードから別のレコードへの関係を追跡するために、ポインタを使用することが特徴であった。

1970年にエドガー・F・コッドが提唱したリレーショナルモデルは、この伝統から脱却するもので、アプリケーションがリンクをたどるのではなく、内容からデータを検索すべきであると主張するものであった。リレーショナルモデルは、元帳型の表の集まりを組み合わせたもので、それぞれの表は異なる種類のエンティティを格納する。1980年代半ばになって、コンピューティング・ハードウェアは、リレーショナルシステムを幅広く普及するのに十分な性能を持つようになった。けれども、1990年代初頭には、すべての大規模なデータ処理アプリケーションにおいてリレーショナルシステムが主流となり、2018年現在も主流であり続けている。IBM Db2、Oracle、MySQL、Microsoft SQL Server、PostgreSQLは、最も検索されているDBMSである。リレーショナルモデル用の主要なデータベース言語である標準SQLは、他のデータモデル用のデータベース言語にも影響を与えたdate=March 2013}}。

オブジェクトデータベースは、オブジェクト指向とリレーショナル型とのインピーダンスミスマッチによる不便さを解消するために1980年代に開発され、これにより「ポストリレーショナル」という言葉が生まれ、また、ハイブリッド型のオブジェクト・リレーショナルデータベースも開発された。

2000年代後半に登場した、次世代のポスト・リレーショナルデータベースは、高速なキーバリュー型ストアやドキュメント指向データベースを導入し、NoSQLデータベースと呼ばれるようになった。これと競合するNewSQLと呼ばれる次世代データベースは、リレーショナル/SQLモデルを維持しつつ、市販のリレーショナルDBMSと比較してNoSQLの高い性能に見合うような新しい実装を試みている。

2.1. 1960年代、ナビゲーショナルDBMS
------------------------

データベースという言葉が登場したのは、1960年代半ば以降に、直接アクセスストレージが利用できるようになった時期と重なる。この用語は、過去のテープベースのシステムとは対照的に、日常のバッチ処理ではなく、対話的な共有での利用を可能にすることを意味した。オックスフォード英語辞典では、カリフォルニアのSystem Development Corporationが1962年に発表した報告書を、特定の技術的な意味で「データベース」という用語を初めて使用したものとして引用している。

コンピュータの速度と機能が向上するに伴い、多くの汎用データベースシステムが登場し、1960年代半ばには多くのこうしたシステムが商用化されるようになった。標準化への関心が高まり、そうした製品の一つであるIntegrated Data Storeの制作者であるチャールズ・バックマンが、COBOLの作成と標準化を担当したグループCODASYL内にデータベース・タスクグループを設立した。1971年、データベース・タスクグループは、一般に「//CODASYLアプローチ//」として知られるようになった彼らの標準を提供し、まもなくこのアプローチに基づいた多くの商用製品が市場に参入した。

CODASYLアプローチ方式は、アプリケーションに対し、大規模ネットワーク内に形成された連結データセットを移動する機能を提供した。アプリケーションは、3つの方法のうちのいずれかによってレコードを見つけることができる。

主キーの使用。
あるレコードから別のレコードへの関係の移動。
すべてのレコードを順番にスキャンする。その後のシステムで、B木が追加され、代替アクセス経路を提供するようになった。また、多くのCODASYLデータベースでは、エンドユーザー向けに宣言型クエリ言語も追加された。しかし、CODASYLデータベースは複雑で、有用なアプリケーションを作るには多大な訓練と労力を要した。

また、IBMは、1966年に、Information Management Systemとして知られる独自のDBMSを持っていた。IMSは、アポロ計画のために作成されたソフトウェアのSystem/360への発展型であった。IMSは一般にCODASYLと概念が似ているが、そのデータナビゲーションのモデルは厳密な階層を使用し、CODASYLのネットワーク型モデルではなかった。どちらの概念も、データへのアクセス方法の観点から、後にナビゲーショナル・データベースと呼ばれるようになった。この用語は、1973年のバックマンのチューリング賞の講演「//The Programmer as Navigator//」によって広まった。IBMによって、IMSは階層型データベースとして分類されている。IDMSやCincom SystemsのTOTALデータベースは、ネットワーク型データベースに分類される。2014年現在、IMSは使用されている。

2.2. 1970年代、リレーショナルDBMS
-----------------------

エドガー・F・コッドは、カリフォルニア州サンノゼにあるIBMの研究室の1つで、主にハードディスクシステムの開発に携わっていた。彼は、CODASYLアプローチのナビゲーションモデルにおいて、特に「検索」機能の欠如に不満を抱いていた。1970年、彼はデータベース構築の新しいアプローチを概説する多くの論文を書き、最終的に画期的な論文「大規模共有データバンクのためのデータのリレーショナルモデル」に結実させたCodd。

この論文で、彼は大規模なデータベースを保存し、操作するための新しいシステムについて説明した。コッドの考えは、CODASYLのように自由形式のレコードをある種の連結リストに格納するのではなく、データをいくつかの「テーブル」として編成し、それぞれのテーブルを異なる種類のエンティティに使用することであった。各テーブルは、エンティティの属性を含む固定数の列を含むことになる。各テーブルの1つ以上の列は、テーブルの行を一意に識別するための主キーとして指定され、テーブル間の相互参照には、ディスクアドレスではなく、常にこの主キーが使用された。クエリにおいては、関係論理の数学的体系に基づく一連の操作を用いて、これらのキー関係に基づいてテーブルを結合する。データを正規化された一連のテーブルに分割することで、各々の「ファクト」を一度だけ保存するようにし、更新操作を簡略化する。ビューと呼ばれる仮想的なテーブルは、ユーザーごとに異なる方法でデータを表示することができるが、ビューを直接更新することはできなかった。

コッドは、テーブル、行、列ではなく、関係、組、定義域という数学用語を使ってモデルを定義した。現在よく知られているこれらの用語は、初期の実装に由来するものである。コッドは後に、実際の実装が、モデルの基礎となった数学的な基礎から逸脱する傾向にあることを批判した。

テーブル間の関係を表すために、ディスクアドレスではなく主キーを使用したのは、主に2つの動機があった。エンジニアリングの観点からは、費用がかかるデータベースの再編成をすることなく、テーブルの再配置やサイズ変更を可能とした。しかし、コッドは、セマンティクスの違いにより強い興味を持っていた。明示的な識別子を使用することで、純粋な数学的定義で更新操作を定義することが容易になり、一階述語論理という確立した学問分野の観点でクエリ操作を定義できるようになった。これらの操作は純粋な数学的性質があるため、クエリ最適化の基礎をなす証明可能な正しい方法でクエリを書き換えることが可能となる。テーブル間の接続は明示的ではなくなったが、階層型モデルやネットワーク型モデルと比較して表現力が損なわれることはない。

階層型モデルやネットワーク型モデルでは、レコードが複雑な内部構造を持つことが許容された。たとえば、ある従業員の給与履歴は、従業員レコードの中の「繰り返しグループ」として表わされることがある。リレーショナルモデルでは、正規化の過程によって、そのような内部構造は、論理キーのみで結合された複数のテーブルに保持されたデータで置き換えられた。

たとえば、データベースシステムの一般的な使い方として、ユーザーに関する情報、名前、ログイン情報、さまざまな住所や電話番号を突き止めることがあげられる。ナビゲーショナル方式では、これらのデータはすべて1つの可変長レコード内に格納される。リレーショナル方式では、そのデータはユーザーテーブル、アドレステーブル、電話番号テーブルに「正規化」される。これらの任意のテーブル内には、実際に住所や電話番号が提供された場合のみ、レコードが作成される。

コッドは、論理的な識別子を使用して行／レコードを識別するだけでなく、アプリケーションが複数のレコードからデータを組み立てる方法も変更した。アプリケーションがリンクを移動して1レコードずつデータを収集することを要求するのではなく、アプリケーションは、宣言型のクエリ言語を使用してどのようなデータが必要なのかを表現する。データへの効率的なアクセス経路を見つけるのは、アプリケーションのプログラマーではなく、データベース管理システムの責任となった。クエリ最適化と呼ばれるこの過程は、クエリが数学的論理の観点で表現されているという事実に基づいている。

コッドの論文は、バークレー校のユージン・ウォンとマイケル・ストーンブレーカーの二人によって着目された。彼らは、地理データベースプロジェクトにすでに割り当てられていた資金と、コードを作成する学生プログラマーを使って、INGRESと呼ばれるプロジェクトを開始した。INGRESは、1973年の初頭に最初のテスト製品を提供し、1979年には一般に広く使用されるようになった。INGRESは、データアクセスのためのQUELと呼ばれる「言語」の使用を含め、多くの点でIBM System Rと類似していた。時の経過とともに、INGRESは新しい標準SQLに移行していった。

IBM自身は、リレーショナルモデルのテスト実装であるIBM Peterlee Relational Test Vehicle と、製品版であるIBM Business System 12の開発を一度行ったが、いずれも現在は廃止されている。Honeywellは、Multics用のMultics Relational Data Storeを開発したが、現在ではDataphorとRel の2つの新しい実装が存在する。「リレーショナル」と呼ばれる他のDBMSの実装のほとんどは、実際にはSQL DBMSである。

1970年、ミシガン大学は、デイヴィッド・L・チャイルズの集合論的データモデルに基づくMICRO情報管理システムHersheyの開発を開始したNorthChildsChilds。MICROは、非常に大きなデータセットを管理するために、米国労働省、米国環境保護庁、アルバータ大学、ミシガン大学、ウェイン州立大学の研究者によって使用された。これは、ミシガン・ターミナル・システムを使用するIBMメインフレームコンピューター上で稼働した。このシステムは1998年まで稼動し続けた。

2.3. 統合型アプローチ
-------------

1970年代から1980年代にかけ、ハードウェアとソフトウェアを統合したデータベースシステムの構築が試みられた。その根底にある理念は、このような統合が、より高い性能をより低い費用で提供できるというものである。その例として、IBM System/38、Teradataの初期の製品、およびBritton Lee, Inc.のデータベースマシンがあげられる。

また、データベース管理をハードウェアでサポートするアプローチには、International Computers LimitedのContent Addressable File Storeアクセラレータという、プログラム可能な検索機能を持つハードウェアディスクコントローラーがあった。しかし、汎用コンピュータの急速な発展と進歩に、データベース専用機が追いつくことができなかったため、長期的にはこれらの取り組みは概して失敗に終わった。こうしたことから、現今のほとんどのデータベースシステムは、汎用ハードウェア上で動作するソフトウェアシステムであり、汎用のコンピュータとデータストレージを使用している。しかし、この着想は今もなお、NetezzaやOracle など一部の企業によって特定の用途で追求されている。

2.4. 1970年代後半、SQL DBMS
----------------------

1970年代前半、IBMは、//System R//として、コッドの概念に大まかに基づいたプロトタイプシステムの開発を始めた。最初のバージョンは1974年5月に完成し、その後、レコードを構成するすべての要素を単一の大きな「チャンク」に格納する必要がないように、データを分割できるマルチテーブルシステムに対応する作業が開始された。その後、1978年と1979年にマルチユーザーバージョンが顧客によってテストされ、その時点では標準化されていたクエリ言語SQLが追加されていたreason=First version of SQL standard was SQL-86 adopted in 1986。コッドのアイデアは、実行可能でCODASYLよりも優れたものとして確立され、IBMが//SQL/DS//として知られるSystem Rの真の製品版、そして後に//Database 2//を開発することを後押しした。

ラリー・エリソンのOracle Databaseは、IBMのSystem Rに関する論文を基に、別の系統から出発した。Oracle V1の実装は1978年に完了したが、エリソンが1979年にIBMを打ち負かしたのはOracle Version 2を市場に投入してからであった。

ストーンブレーカーはその後、INGRESからの教訓を応用して、現在はPostgreSQLとして知られている新しいデータベースPostgresを開発した。PostgreSQLは、大域的で基幹的な業務アプリケーションによく使用されている。。

スウェーデンでもコッドの論文は読まれ、1970年代半ばにウプサラ大学でMimer SQLが開発された。1984年、このプロジェクトは独立した企業に統合された。

1976年に登場した実体関係モデルは、それまでのリレーショナルモデルよりも馴染みのある記述法を重視したもう一つのデータモデルであり、データベース設計で人気を博した。その後、実体-関係構造は、リレーショナルモデルのデータモデリング構造として追加され、両者の違いは無意味なものとなったdate=March 2013}}。

2.5. 1980年代、デスクトップ
------------------

1980年代は、デスクトップコンピューティングの時代の到来を告げた。新しいコンピュータは、Lotus 1-2-3のような表計算ソフトやdBASEのようなデータベースソフトで、ユーザーに力をもたらした。dBASE製品は軽量で、コンピューターユーザーは誰でも容易に理解できた。dBASEの作者、ウェイン・ラトリフは次のように述べている。「dBASEは、BASIC、C、FORTRAN、COBOLのようなプログラムとは異なり、多くの汚い仕事はすでに行われている。データ操作はユーザーではなくdBASEが行うので、ユーザーはファイルを開き、読み込み、閉じ、スペース割り当ての管理などの汚い詳細に煩わされることなく、自分のしていることに集中することができる」。dBASEは、1980年代から1990年代初頭にかけて、最も売れたソフトウェアの一つであった。

2.6. 1990年代、オブジェクト指向
--------------------

1990年代は、オブジェクト指向プログラミングの台頭とともに、さまざまなデータベース内のデータの扱い方で発展が見られた。プログラマーと設計者は、データベース内のデータをオブジェクトとして扱うようになった。つまり、ある個人のデータがデータベース内にある場合、その人の住所、電話番号、年齢などの特性は外来のデータではなく、その人に属するものと考えられるようになった。これにより、データ間の関係は、個々のフィールドではなく、オブジェクトとその属性に関連付けられる。プログラムされたオブジェクトとデータベースのテーブルとの間の変換の不都合は、「オブジェクト-リレーショナル・インピーダンスミスマッチ」という言葉で表わされる。オブジェクト・データベースやオブジェクト・リレーショナルデータベースは、この問題を解決するために、プログラマーが純粋なリレーショナルSQLの代わりに使用できるオブジェクト指向言語を提供しようとするものである。プログラミング側の立場では、オブジェクト・リレーショナル・マッピングと呼ばれるライブラリで、同じ問題を解決しようとしている

2.7. 2000年代、NoSQLとNewSQL
------------------------

XMLデータベースは、構造化されたドキュメント指向データベースの一種で、XML文書の属性に基づいたクエリが可能である。XMLデータベースは、たとえば科学論文、特許、税務申告、人事記録など、非常に柔軟なものから非常に厳格なものまで、データをさまざまな構造を持つ文書の集合として見るのに便利なアプリケーションで主に使用される。

NoSQLデータベースは、多くの場合、非常に高速で、固定化したテーブルスキーマを必要とせず、非正規化したデータを格納することで結合操作を回避し、水平スケーリングするように設計されている。

近年、高い分断耐性を備えた大規模分散データベースが強く求められているが、CAP定理によれば、分散システムで一貫性、可用性、分断耐性を同時に備えることは不可能とされている。分散システムは、これら3つの保証のうち、いずれか2つを同時に満たすことはできても、3つすべてを満たすことはできない。そのため、多くのNoSQLデータベースでは、データ整合性のレベルを下げて可用性と分断耐性の両方を保証する、結果整合性という考え方を採用している。

最新のリレーショナルデータベースの一種であるNewSQLは、SQLを使用し、また従来のデータベースシステムのACID保証を維持しながらも、オンライントランザクション処理のワークロードに対して、NoSQLシステムと同じスケーラブルな性能を提供することを目的としている。

3. 使用例
------

データベースは、組織の内部業務を支援し、顧客や発注先とのオンラインでのやり取りを支えるために使用される。

データベースは、業務における管理情報、エンジニアリングデータや経済モデルなどのより専門的なデータを保持するためにも使用される。たとえば、コンピュータによる図書館システム、航空座席予約システム、コンピュータ化された部品在庫管理システム、およびウェブサイトをウェブページの集合としてデータベースに保存する多くのコンテンツ管理システムなどがあげられる。

4. 分類
-----

データベースを分類する方法として、たとえば、文献データベース、文書、テキスト、統計、マルチメディアなど、その内容の種類によるものがある。第二の方法は、会計、作曲、映画、銀行、製造、保険など、応用面による分類がある。第三の方法は、データベースの構造やインタフェースの種類など、技術的な側面によるものである。この節では、さまざまな種類のデータベースを特徴付けるために使用される用語をいくつか列挙する。

インメモリデータベースとは、主にメインメモリ内に存在するデータベースで、一般的に不揮発性のコンピューターデータストレージによってバックアップされる。メインメモリーデータベースはディスクデータベースよりも高速であるため、通信ネットワーク機器など、応答時間が重要な場合に使用されることが多い。
アクティブデータベースは、データベース内外の両方の状況に応答できるイベント駆動型アーキテクチャを備えている。セキュリティ監視、アラート、統計収集、および承認などの用途が考えられる。多くのデータベースは、データベーストリガーという形でアクティブデータベースの機能を提供する。
クラウドデータベースは、クラウド技術に基づいている。データベースとDBMSの大半はいずれも遠く離れた「クラウド」上に存在するが、アプリケーションはプログラマーが開発し、エンドユーザーがウェブブラウザとオープンAPIを通じてデータベースを保守／利用する。
データウェアハウスは、業務用データベースや、しばしば市場調査会社などの外部ソースから得たデータをアーカイブする。 データウェアハウスは、業務データにアクセスできない管理者やその他のエンドユーザーが使用するデータの中心的な供給源となる。たとえば、販売データを週ごとの合計に集計し、ACニールセンのデータと比較できるように社内商品コードを統一商品コードに変換する。データウェアハウジングの基本的かつ不可欠なコンポーネントには、データの抽出、分析、マイニング、変換、読み込み、そしてデータをさらに利用できるようにするデータ管理がある。
演繹データベースは、論理プログラミングとリレーショナルデータベースを組み合わせたものである。
分散データベースとは、データとDBMSの両方が複数のコンピュータにまたがったデータベースのことである。
ドキュメント指向データベースは、ドキュメント指向または半構造化された情報を格納、取得、および管理するために設計されている。ドキュメント指向データベースは、NoSQLデータベースの主要なカテゴリの一つである。
組み込みデータベースシステムとは、保存されたデータへのアクセスを要するアプリケーションソフトウェアと緊密に統合されたDBMSで、アプリケーションのエンドユーザーから隠され、継続的なメンテナンスをほとんど必要としないものである。
エンドユーザー・データベースは、個々のエンドユーザーによって開発されたデータから構成されている。たとえば、文書、スプレッドシート、プレゼンテーション、マルチメディア、およびその他のファイルの集合体である。このようなデータベースをサポートするいくつかの製品が存在する。その中には、本格的なDBMSよりもはるかに単純で、基本的なDBMSの機能を備えているものもある。
連合データベースシステムは、複数の異なるデータベースから構成され、それぞれは独自のDBMSを持っている。これは連合データベース管理システム  によって単一のデータベースとして扱われ、あるいは複数の自律的なDBMSを透過的に統合し、統合された概念ビューを提供するものである。
マルチデータベースという用語は、連合データベースの同義語として用いられることもあるが、単一のアプリケーション内で連携する、あまり統合されていないデータベースのグループを指す場合もある。この場合、一般的にはアトミックコミットプロトコルを含むミドルウェアが分散に使われ、参加データベース間での分散トランザクションを可能とする。
グラフデータベースは、ノード、エッジ、プロパティを持つグラフ構造を用いて情報を表現および保存するデータベースであり、NoSQLデータベースの一種である。任意のグラフを格納できる一般的なグラフデータベースは、トリプルストアやネットワーク型データベースなどの特殊なグラフデータベースとは異なるものとして区別される。
配列DBMSは、衛星画像や気候シミュレーションの出力など、多次元配列のモデリング、保存、検索を可能にするNoSQL DBMSの一種である。
ハイパーテキストまたはハイパーメディア・データベースでは、オブジェクトを表す任意の単語やテキスト部分を、そのオブジェクトにハイパーリンクすることができる。ハイパーテキスト・データベースは、大量にある異種の情報を整理するのに特に有効である。たとえば、ユーザーがテキストの中を簡単に飛び回ることができるオンライン百科事典を整理するのに役立つ。したがって、ワールドワイドウェブは大規模な分散型ハイパーテキストデータベースと言える。
知識ベースは、知識管理のための特別な種類のデータベースであり、コンピュータ化された知識を収集、編成、および検索するための手段を提供するものである。また、問題点とその解決策、あるいは関連する経験などを表すデータの集合でもある。
モバイルデータベースは、モバイル・コンピューティング・デバイスで実行したり、他のデバイスと同期させたりできる。
運用データベースは、組織の運営に関する詳細なデータを格納する。通常、トランザクションを使用して、比較的大量の更新を処理する。たとえば、顧客データベースは、企業の顧客に関する連絡先、信用情報、人口統計情報を記録し、人事データベースは、従業員に関する給与、福利厚生、技能データなどの情報を保持し、企業資源計画システムは、製品の部品、部品在庫、財務に関する詳細を管理し、財務データベースは、組織の収支、会計、および金融取引を監視する。
並列データベースは、データのロード、インデックスの作成、クエリの実行などの作業を並列化することで性能向上を図るものである。基盤となるハードウェア・アーキテクチャによって分類される主な並列DBMSアーキテクチャは次のとおりである。
共有メモリ・アーキテクチャ: 複数のプロセッサが主記憶領域や他のデータスト レージを共有する。
共有ディスク・アーキテクチャ: 各処理装置は、独自の主記憶領域を持つが、他のストレージは全装置で共有する。
シェアード・ナッシング・アーキテクチャ: 各処理装置が独自の主記憶領域その他のストレージを持つ。
確率的データベース：ファジィ論理を採用して不正確なデータから推論を引き出す。
リアルタイムデータベースは、結果が戻ってすぐに処理するのに十分な速度でトランザクションを処理する。
空間データベースは、多次元的な特徴を持つデータを格納することができる。このようなデータに対するクエリには、たとえば「私のいる地域で最も近いホテルはどこですか?」というような、位置に基づくクエリが含まれる。
時間データベースは、時間データモデルや時間バージョンのSQLなど、時間的な側面が組み込まれている。より具体的には、通常、時間的側面には有効時間とトランザクション時間が含まれる。
用語指向データベースは、オブジェクト指向データベースに基づいて構築され、多くの場合、特定の分野向けにカスタマイズされている。
非構造化データデータベースは、一般的なデータベースに自然かつ簡単に適合しない多様なオブジェクトを、管理可能かつ保護された方法で格納することを目的としている。これには、電子メールメッセージ、文書、雑誌、マルチメディアオブジェクトなどが含まれることがある。オブジェクトの中には高度に構造化されたものもあるため、この名称は誤解を招く可能性がある。しかし、可能性のあるオブジェクトの集合全体が、あらかじめ定義された構造化フレームワークに適合するものではない。現在、ほとんどの既製のDBMSは、さまざまな方法で非構造化データをサポートしており、新しい専用DBMSも登場している。

5. データベース管理システム
---------------

ConnollyとBeggは、データベース管理システムを「ユーザーがデータベースを定義、作成、保守、およびアクセスを制御できるようにするソフトウェアシステム」と定義しているConnolly。DBMSの例として、MySQL、PostgreSQL、Microsoft SQL Server、Oracle Database、Microsoft Accessがあげられる。

DBMSの頭文字は、基盤となるデータベースモデルを示して拡張されることがあり、リレーショナル型はRDBMS、オブジェクトモデルはOODBMS、オブジェクトリレーショナル型はORDBMSと呼ばれる。また、分散型データベース管理システムを表すDDBMSなど、他の特性を表すように拡張することができる。

DBMSが提供する機能は非常に多様である。中心的な機能は、データの保存、検索、更新である。コッドは、本格的な汎用DBMSが提供すべき機能およびサービスとして、次のようなものを提案したConnolly。

データの保存、検索、更新
メタデータを記述した、ユーザーがアクセス可能なカタログまたはデータディクショナリ
トランザクションと並行処理のサポート
データベースが破損した場合に復旧するための機能
データへのアクセス時および更新時の承認のサポート
遠隔地からのアクセスサポート
データベース内のデータが特定の規則に従うことを保証するための制約の適用また、DBMS は、インポート、エクスポート、監視、デフラグメント、分析ユーティリティなど、データベースを効果的に管理するために必要な一連のユーティリティを提供することも、一般に期待されているConnolly。データベースとアプリケーション・インタフェースの間で相互作用するDBMSの中心部分は、データベース・エンジンと呼ばれることもある。

多くのDBMSは、データベースが使用できるサーバ上のメインメモリの最大量など、静的または動的に調整可能な構成パラメータを持っている。手動構成する量を最小限に抑える傾向があり、組み込みデータベースのような場合は、ゼロ管理を目標とする要求が最も重要である。

大規模なエンタープライズDBMSでは、サイズや機能が増大する傾向があり、その生涯を通じて数千人年の開発努力が費やされることがあるこの記事では、DB2リリース9単独で750人が関与した5年間の開発期間を引用している。harv。

初期のマルチユーザーDBMSでは、一般的に、アプリケーションを同じコンピュータ上で動作させ、コンピュータ端末または端末エミュレーションソフトウェアを通じてアクセスすることしかできなかった。クライアント・サーバー・アーキテクチャは、アプリケーションはクライアントのデスクトップ上にあり、サーバー上に存在するデータベースが処理を分散できるように開発された。これが進化して、アプリケーションサーバーやウェブサーバーを組み込んだ多層アーキテクチャとなり、エンドユーザーインターフェイスはウェブブラウザーを介してアクセスし、データベースは隣接する層に直接接続されるのみとなったConnolly。

汎用DBMSは、公開のアプリケーション・プログラミング・インタフェースと、オプションでSQLなどのデータベース言語用のプロセッサを提供して、データベースと対話し操作するアプリケーションを作成できるようにする。特殊用途のDBMSは、プライベートなAPIを使用し、特別にカスタマイズして単一のアプリケーションにリンクされることがある。たとえば、電子メールシステムは、メッセージの挿入、削除、添付ファイルの処理、ブロックリストの検索、メッセージと電子メールアドレスの関連付けなど、汎用DBMSの機能の多くを実行するが、これらの機能は電子メールの処理に必要なものに限定されている。

6. アプリケーション
-----------

データベースとの外部相互作用は、DBMSと接続するアプリケーション・プログラムを介して行われるConnolly。アプリケーションは、ユーザーが文字的または視覚的にSQLクエリを実行できるデータベースツールから、情報を格納し検索するためにデータベースを使用するWebサイトまで、多岐にわたる。

6.1. アプリケーション・プログラム・インタフェース
---------------------------

プログラマーは、アプリケーション・プログラミング・インタフェースまたはデータベース言語を介して、データベースとの相互対話をコーディングする。選択された特定のAPIや言語は、DBMSによって直接的にサポートされるか、またはプリプロセッサまたはブリッジングAPIを介して間接的にサポートされる必要がある。APIの中にはデータベースに依存しないことを目的とするものもあり、ODBCはそのよく知られた例である。その他の一般的なAPIには、JDBCやADO.NETがある。

7. データベース言語
-----------

データベース言語は、次のような作業を可能とする特殊用途の言語であり、部分言語として区別されることもある。

データ制御言語- データへのアクセスを制御する。
データ定義言語- テーブルの作成、変更、削除などのデータ型の定義や、テーブル間の関係を定義する。
データ操作言語- 発生データの挿入、更新、削除などの作業を実行する。
データ問い合わせ言語- 情報を検索し、派生情報を導出できる。データベース言語は、特定のデータモデルに特化した言語である。著名な例として次のものがある。

SQLは、データ定義、データ操作、およびクエリの役割を1つの言語で兼ね備えたものである。SQLは、コッドによって説明されたリレーショナルモデルとはからいくつかの点で異なっているが、リレーショナルモデルの最初の商用言語の1つである。SQLは1986年に米国規格協会標準となり、1987年に国際標準化機構標準となった。この標準はそれ以降も定期的に強化されており、すべての主流の商用リレーショナルDBMSによってサポートされているChapple。
OQLは、オブジェクトモデル言語標準である。これは、JDOQLやEJB QLなどの新しいクエリ言語の設計に影響を与えている。
XQueryは、MarkLogicやeXistなどのXMLデータベースシステム、OracleやDb2などのXML機能を備えたリレーショナルデータベース、およびSaxonなどのインメモリXMLプロセッサで実装された標準のXMLクエリ言語である。
SQL/XMLは、XQueryとSQLを組み合わせたものであるWagner。データベース言語には、次のような機能を組み込んでいるものもある。

DBMS固有の構成やストレージエンジンの管理。
クエリ結果を変更するための計算。たとえば、カウント、合計、平均、並び替え、グループ化、クロスリファレンス。
制約の適用。
プログラマーの便宜のために、クエリ言語のアプリケーション・プログラミング・インターフェース版。

8. ストレージ
--------

データベースストレージは、データベースの物理的な実体の格納庫である。これは、データベースアーキテクチャの「//内部レベル//」を構成する。また、必要に応じて「内部レベル」から「概念レベル」や「外部レベル」を再構築するために必要なすべての情報も含んでいる。デジタル・オブジェクトとしてのデータベースには、データ、構造、セマンティクスの3つの層からなる情報が含まれ、保存する必要がある。長期間に渡ってデータベース保存し、長持ちさせるために、3つの層すべてを適切に保存する必要がある。データを永続的ストレージに保存するのは、一般に、データベースエンジンの責任である。DBMSは通常、基盤となるオペレーティングシステムを通じてアクセスするが、ストレージの特性と構成設定はDBMSの効率的な運用に極めて重要であるため、データベース管理者によって密接に管理される。DBMSは、その運用中に、常に数種類のストレージにデータベースを常駐させている。データベースのデータと、追加の必要な情報は、ビット列に符号化される。データは通常、概念レベルや外部レベルでの見え方とは全く異なる構造でストレージ内に存在するが、ユーザーやプログラムが必要とするとき、または必要な情報の追加形式をデータから計算するとき、これらのレベルの再構築を最適化するような方法で格納される。

DBMSの中には、データの格納に用いる文字エンコーディングを指定できるものがあり、同じデータベースで複数のエンコーディングを使用することができる。

データモデルをシリアル化し、選ばれた媒体に書き込めるようにするために、ストレージエンジンは、さまざまな低レベルのデータベースストレージ構造を使用する。性能を向上させるために、インデックス作成などの手法を使用することもある。従来のストレージは行指向であるが、列指向データベースや相関データベースOutline of databases#Types of databasesもある。

8.1. マテリアライズド・ビュー
-----------------

性能を向上させるためにストレージを冗長化することがよくある。一般的な例は、頻繁に必要とされる外部ビューや、クエリ結果から構成されるマテリアライズド・ビューの保存である。このようなビューを保存することで、必要になるたびに計算する費用を節約することができる。マテリアライズド・ビューの欠点は、元の更新されたデータベースデータと同期を維持するためにビューを更新する際に発生するオーバーヘッドと、ストレージの冗長化にかかる費用である。

8.2. レプリケーション
-------------

データベースは、データの可用性を向上させるために、データベース・オブジェクトの複製によるストレージ冗長性を採用することがある。これによって、同じデータベース・オブジェクトに複数のエンドユーザーが同時アクセスした場合の性能を向上させ、また、分散データベースに部分的な障害が発生した場合の回復力を提供する。複製されたオブジェクトの更新には、オブジェクトのコピー間で同期される必要がある。多くの場合、データベース全体が複製される。

9. セキュリティ
---------

データベースセキュリティは、データベースの内容、その所有者、およびそのユーザーを保護するためのあらゆる側面を扱う。その範囲は、意図的な不正なデータベースの使用から、権限のないエンティティによる意図しないデータベースへのアクセスまで、さまざまな保護に及ぶ。

データベースアクセス制御は、データベース内のどの情報に誰がアクセスを許可されるかを制御することを扱う。その情報には、特定のデータベースオブジェクト、特定のオブジェクトに対する特定の計算、または前者に対する特定のアクセス経路の使用が含まれる。データベースのアクセス制御は、データベース所有者から特別に許可された人員によって、保護された専用のセキュリティDBMSインタフェースを用いて設定される。

アクセス制御の管理は、個人別に直接行うことも、個人と特権 をグループに割り当てることも、個人やグループにロールを割り当ててからロールに権限を付与することもできる。データセキュリティは、権限のないユーザーによるデータベースの閲覧や更新を阻止する。パスワードを使用すると、ユーザーはデータベース全体、または「サブスキーマ」と呼ばれる一部分へのアクセスを許可される。たとえば、従業員データベースには個々の従業員に関するすべてのデータを含めていても、あるグループのユーザーには給与データのみの閲覧を許可し、別のグループには職歴と医療データのみアクセスを許可することが可能である。DBMSがデータベースの入力、更新、問い合わせを対話的に行う方法を提供している場合、この機能によって個人データベースを管理することができる。

一般にデータセキュリティは、特定のデータチャンクを物理的に保護すること、または、データチャンクやその一部を意味のある情報に変換することの両方を扱う。

変更およびアクセスのロギングは、誰がどの属性にアクセスしたか、何が変更されたか、そしていつ変更されたかを記録する。ロギングサービスは、アクセスの発生や変更の記録を保持することで、後でフォレンジックデータベース監査を行うことを可能にする。場合によっては、データベースレベルで記録するのではなく、アプリケーションレベルのコードで変更を記録することもある。セキュリティ違反の検出を試みるために監視を設定することもできる。データベース・セキュリティには多くの利点があるため、組織はこれに真剣に取り組む必要がある。組織は、ファイアウォール内への侵入、ウィルスの蔓延、ランサムウェアなどのセキュリティ違反やハッキング行為から守られる。これは、企業において、いかなる理由があっても部外者と共有することが許されない、重要な情報を保護するために役に立つ。

10. トランザクションと同時平行
-----------------

データベース・トランザクションは、クラッシュからの復旧後に、ある程度の耐障害性とデータ完全性を導入するために使用することができる。データベーストランザクションは通常、データベースに対する一連の操作をカプセル化した作業の単位であり、データベースやその他のシステムでサポートされている抽象概念である。各トランザクションには、どのプログラム／コードの実行がそのトランザクションに含まれるかという点で、明確に定義された境界がある。

ACIDという頭字語は、データベーストランザクションの理想的な特性である、原子性、一貫性、分離性、耐久性 を表している。

11. 移行
------

あるDBMSで構築されたデータベースは、別のDBMSに移植できない。しかし、状況によっては、あるDBMSから別のDBMSにデータベースを移行するのが望ましい場合がある。その理由は、主に経済的、機能的、および運用的である。移行には、あるDBMSの種類から別の種類へデータベースを変換することも含まれる。この変換では、データベース関連のアプリケーションをそのまま維持する必要がある。したがって、データベースの概念レベルおよび外部レベルのデータアーキテクチャは、変換時に維持する必要がある。また、アーキテクチャの内部レベルのいくつかの側面も維持されることが望まれる場合もある。複雑または大規模なデータベースの移行は、それ自体が複雑で費用のかかるプロジェクトになる可能性があるので、移行を決定するときはその点を考慮する必要がある。これは、特定のDBMS間の移行を支援するツールが存在する可能性があるのにも関わらない。一般に、DBMSベンダーは、他の普及しているDBMSからデータベースをインポートするツールを提供している。

12. 構築、保守、およびチューニング
-------------------

アプリケーションのデータベースを設計したら、次の段階はデータベースの構築である。通常、この用途で用いるために、適切な汎用DBMSを選択することができる。DBMSは、データベース管理者が必要なアプリケーションのデータ構造をDBMSの各データモデルに準じて定義するために必要なユーザーインタフェースを提供する。その他のユーザーインタフェースは、必要なDBMSパラメータを選択するために用いられる。

データベースの準備が整うと、通常は、運用を開始する前にアプリケーションの初期データを入力する。場合によっては、アプリケーションのデータを持たない状態でデータベースが稼働し、その運用を経てデータが蓄積されることもある。

データベースを作成し、初期化し、データを入力した後は、データベースを維持する必要がある。たとえば、より良い性能を得るために、さまざまなデータベース・パラメータを変更し、データベースをデータベースチューニングする必要があるかもしれない。あるいは、アプリケーションの機能を追加するために、アプリケーションのデータ構造を変更または追加し、新しい関連アプリケーションプログラムを作成するかもしれない。

13. バックアップと復元
-------------

場合によっては、データベースを以前の状態に戻すことが必要となる。そのために、バックアップ操作が時々または継続的に実施され、それぞれの望ましいデータベースの状態が専用のバックアップファイルに保持される。データベース管理者がデータベースをこの状態に戻すと決めたとき、これらのファイルをその状態を復元するために使用する。

14. 静的解析
--------

ソフトウェア検証のための静的解析技術は、クエリ言語の領域にも適用することができる。特に、抽象解釈フレームワークは、適切な近似技術をサポートする方法として、リレーショナルデータベースのクエリ言語の分野に拡張されているHalder。クエリ言語のセマンティクスは、データの具体的な領域を適切に抽象化することによって調整することができる。リレーショナルデータベースシステムの抽象化は、特に、細粒度アクセス制御や、電子透かしなどのセキュリティ分野で、多くの興味深い応用がある。

15. その他の機能
----------

DBMSのその他の機能として、次のようなものもあげられる。

データベースログ - これは実行された機能の履歴を残すのに役立つ。
グラフィックコンポーネント - 特にデータウェアハウスシステムで、グラフやチャートを作成するためのもの。
クエリオプティマイザ - すべてのクエリに対してクエリを最適化し、クエリ結果を効率的に得るための実行計画を選択する。特定のストレージエンジンに特化することもある。
データベース設計、アプリケーションプログラミング、アプリケーションプログラムの保守、データベース性能分析および監視、データベース構成監視、DBMSハードウェア構成および関連するデータベースマッピング、ストレージ割り当てとデータベースレイアウトの監視、ストレージ移行のためのツールまたはフック。データベース管理とソース管理のために、ビルド、テスト、デプロイメントフレームワークに、これらの中心機能をすべて組み込んだ単一システムを求める声はますます高まっている。ソフトウェア業界における別の進化を借りて、そうした製品を「データベース用DevOps」として提供する企業もある。

16. 設計とモデリング
------------

データベース設計者の最初の作業は概念データモデルConceptual schemaの作成で、データベースに保持する情報の構造を反映する。そのための一般的な方法は、描画ツールを用いて実体関連モデルを作成することが多い。統一モデリング言語の使用は、もう一つのよく知られた方法である。出来のよいデータモデルは、モデル化される外界の可能な状態を正確に反映する。たとえば、人々が複数の電話番号を持つことができる場合、その情報を取得することが可能となる。優れた概念データモデルを設計するには、アプリケーションの領域を十分に理解する必要がある。それには、一般的に、組織が関心を持っていることについて深い問いを立てる必要がある。たとえば「顧客は発注先にもなり得るのか?」、あるいは「ある製品が2種類の包装形態で販売されている場合、それらは同じ製品か、それとも異なる製品なのか?」、あるいは「飛行機がニューヨークからフランクフルト経由でドバイまで飛ぶ場合、それは1便か2便か?」のような質問をする。これらの質問に対する回答によって、エンティティに使用される用語の定義、およびそれらの関係や属性を確立する。

概念データモデルを作成する過程で、ビジネスプロセスからの入力や、組織内のワークフロー分析からの入力が必要な場合がある。これによって、データベースにどのような情報が必要で、何を省略できるかを特定することができる。たとえば、データベースに現在のデータだけでなく、過去の履歴データも保持する必要があるかどうかを決定するのに役立つ。

ユーザーが満足できる概念データモデルを作成したら、次の段階では、これをデータベース内の関連データ構造を実装するスキーマに変換する必要がある。この過程は、しばしば論理データベース設計と呼ばれ、スキーマの形で表現された論理データモデルを作成する。概念データモデルがデータベース技術の選択と関係しないのに対し、論理データモデルは、選択したDBMSがサポートする特定のデータベースモデルの観点で表現される。

汎用データベースで最も普及しているデータベースモデルはリレーショナルモデル、より正確には、SQL言語で表現されるリレーショナルモデルである。このモデルを用いて論理データベースを設計する過程では、正規化と呼ばれる系統的アプローチが用いられる。正規化の目的は、挿入、更新、削除の一貫性を自然に維持することで、おのおのの基本的「事実」を一箇所にのみ記録することでなされる。

データベース設計の最終段階では、特定のDBMSに依存する性能、スケーラビリティ、回復、セキュリティなどに影響する決定をする。これはしばしば「物理データベース設計」と呼ばれ、物理データモデルを作成する。この段階での重要な目標はデータの独立性である。これは、性能を最適化するために行われた決定を、エンドユーザーやアプリケーションから見えないようにすることを意味する。データの独立性には2つのタイプがあり、物理的なデータ独立性と論理的なデータ独立性である。物理設計は主に性能要件によって推進され、予想される作業負荷とアクセスパターンに関する十分な知識と、選択したDBMSが持つ機能についての深い理解を必要とする。

物理データベース設計のもうひとつの側面はセキュリティである。これには、データベースオブジェクトへのアクセス制御を定義することと、データ自体のセキュリティレベルとメソッドの定義の両方を含んでいる。

16.1. モデル
---------

データベースモデルとは、データベースの論理構造を決定するデータモデルの一種で、データをどのように格納、整理、操作するかの根本を規定するものである。データベースモデルの最も一般的な例は、テーブルベースの形式を使用するリレーショナルモデルである。

データベースの一般的な論理データモデルを次にあげる。

ナビゲーショナル・データベース
階層型データモデル
ネットワーク型データモデル
リレーショナルモデル
実体関係モデル
オブジェクトモデル
ドキュメント型モデル
スタースキーマオブジェクトリレーショナルデータベースは、この2つの関連する構造を組み合わせたものである。

物理データモデルを次にあげる。

転置インデックス
フラットファイルその他、次のようなモデルがある。

多次元モデル
多値モデル特定の種類のデータ用に最適化された特殊モデルがある。

XMLデータベース
コンテンツストア
時系列モデル

16.2. 外部、概念、内部ビュー
-----------------

データベース管理システムは、データベースのデータに対して三層のビューを提供する。

外部レベルでは、エンドユーザーの各グループがデータベース内のデータ構成をどのように見るかを定義する。1つのデータベースは、外部レベルで任意の数のビューを持つことができる。
概念レベルでは、さまざまな外部レベルのビューを、適合性のある単一の大域的ビューに統一化するDate。概念レベルのビューは、すべての外部ビューを組み立てる。それは、データベースのさまざまなエンドユーザーの範囲外であり、むしろデータベースアプリケーション開発者やデータベース管理者にとって興味対象である。
内部レベルまたは物理レベルとは、DBMS内におけるデータの内部編成のことである。これは費用、性能、スケーラビリティ、その他の運用上の事項に関与している。このレベルでは、データの記憶領域配置を扱い、性能を向上させるためにインデックスなどの格納構造を用いる。冗長性に対する性能上の正当性が認められる場合は、一般的なデータから計算された個々のビューのデータを格納することもある。すべての活動において、全体的な性能を最適化するために、すべての外部ビューの性能要件の間でバランスをとる。データの概念ビューおよび物理ビューは、通常、1つしかないが、さまざまな外部ビューはいくつでも存在することができる。これにより、ユーザーは、技術的あるいは処理的な視点からではなく、よりビジネスに関連した視点からデータベース情報を見ることができるようになる。たとえば、企業の財務部門は会社の経費の一部として全従業員の支払明細を必要とするが、人事部門の関心事である従業員に関する明細は必要ない。このように、部門によって、企業データベースには異なるビューが必要となる。

三層データベース・アーキテクチャは、リレーショナルモデルの主要な初期推進力の1つであったデータの独立性の概念に関連している。この考え方は、あるレベルで行われた変更は、より高いレベルのビューに影響を与えないというものである。たとえば、内部レベルの変更は、概念レベルのインタフェースを使用して記述されたアプリケーションプログラムには影響しないので、性能を向上させるために物理的変更を加えてもその影響を軽減することができる。

概念ビューは、内部ビューと外部ビューの間に間接的なレベルを提供する。一方では、異なる外部ビュー構造に依存しないデータベースの共通ビューを提供し、また他方では、データがどのように格納され管理されるかという詳細を抽象化する。原則として、すべてのレベルの、さらにはすべての外部ビューは、異なるデータモデルで表現することができる。実際には通常、特定のDBMSは外部レベルと概念レベルの両方で同じデータモデルを使用する。内部レベルは特定のDBMSの内側に隠されており、異なるレベルの詳細が要求され、独自の種類のデータ構造型が用いられる。

外部、概念、および内部レベルを分離することは、21世紀のデータベースを支配するリレーショナルデータベースモデルの実装における大きな特徴であったDate。

17. 研究
------

データベース技術は、1960年代から、学界や企業の研究開発グループの両方で活発な研究課題となっている。研究活動には、データベース理論やプロトタイプの開発が含まれる。注目すべき研究課題には、モデル、アトミックトランザクションの概念、関連する並行性制御技術、クエリ言語とクエリ最適化手法、RAIDがある。

データベース研究分野には、いくつかの専門学術誌や、年次会議がある。

日本の学会としては、日本データベース学会があげられる。

18. 参照項目
--------

データベース管理ツールの比較
リレーショナルデータベース管理システムの比較
フラットファイルデータベース

19. 脚注
------

19.1. 注釈
--------

19.2. 出典
--------

20. 出典
------

21. 推薦文献
--------

Ling Liu and Tamer M. Özsu  . "[1], 4100 p.   60 illus. 978-0-387-49616-0}}.
Gray, J. and Reuter, A. //Transaction Processing: Concepts and Techniques//, 1st edition, Morgan Kaufmann Publishers, 1992.
Kroenke, David M. and David J. Auer. //Database Concepts.// 3rd ed. New York: Prentice, 2007.
Raghu Ramakrishnan and Johannes Gehrke, //[2]//
Abraham Silberschatz, Henry F. Korth, S. Sudarshan, //[3]//
Teorey, T.; Lightstone, S. and Nadeau, T. //Database Modeling & Design: Logical Design//, 4th edition, Morgan Kaufmann Press, 2005.

22. 外部リンク
---------

[4]   - DB拡張子を持つファイルに関する情報