データベース
データベースとそれぞれのDBMSの規模、機能、性能は桁違いに大きくなっている。これらの性能向上は、プロセッサ、コンピュータメモリ、コンピュータストレージ、およびコンピュータネットワークの技術進歩により可能となった。データベースの概念は、1960年代半ばに広く普及した磁気ディスクなどの直接アクセス記憶媒体の出現によって可能となった。それ以前のシステムは、磁気テープへのデータの順次保存に依っていた。その後のデータベース技術の発展は、データモデルまたはデータ構造に基づいて、ナビゲーショナル、SQL/リレーショナル、ポストリレーショナルの3つの時代に分けることができる。
初期のナビゲーショナル・データモデルは、階層型モデルとネットワーク型モデル(CODASYLモデル)の2つが主であった。これらは、あるレコードから別のレコードへの関係を追跡するために、ポインタ(多くの場合、物理的なディスクアドレス)を使用することが特徴であった。
1970年にエドガー・F・コッドが提唱したリレーショナルモデルは、この伝統から脱却するもので、アプリケーションがリンクをたどるのではなく、内容からデータを検索すべきであると主張するものであった。リレーショナルモデルは、元帳型の表の集まりを組み合わせたもので、それぞれの表は異なる種類のエンティティ(実体)を格納する。
1980年代半ばになって、コンピューティング・ハードウェアは、リレーショナルシステム(DBMSとアプリケーション)を幅広く普及するのに十分な性能を持つようになった。けれども、1990年代初頭には、すべての大規模なデータ処理アプリケーションにおいてリレーショナルシステムが主流となり、2018年現在も主流であり続けている。IBM Db2、Oracle、MySQL、Microsoft SQL Server、PostgreSQLは、最も検索されているDBMSである。リレーショナルモデル用の主要なデータベース言語である標準SQLは、他のデータモデル用のデータベース言語にも影響を与えた。
オブジェクトデータベースは、オブジェクト指向とリレーショナル型とのインピーダンスミスマッチ(相性の欠如)による不便さを解消するために1980年代に開発され、これにより「ポストリレーショナル(post-relational)」という言葉が生まれ、また、ハイブリッド型のオブジェクト・リレーショナルデータベースも開発された。
2000年代後半に登場した、次世代のポスト・リレーショナルデータベースは、高速なキーバリュー型ストアやドキュメント指向データベースを導入し、NoSQLデータベースと呼ばれるようになった。これと競合するNewSQLと呼ばれる次世代データベースは、リレーショナル/SQLモデルを維持しつつ、市販のリレーショナルDBMSと比較してNoSQLの高い性能に見合うような新しい実装を試みている。
たとえば、販売データを週ごとの合計に集計し、ACニールセンのデータと比較できるように社内商品コードを統一商品コード(UPC)に変換する。データウェアハウジングの基本的かつ不可欠なコンポーネントには、データの抽出、分析、マイニング、変換、読み込み、そしてデータをさらに利用できるようにするデータ管理がある。
演繹データベース(英語版)は、論理プログラミングとリレーショナルデータベースを組み合わせたものである。
分散データベースとは、データとDBMSの両方が複数のコンピュータにまたがったデータベースのことである。
ドキュメント指向データベースは、ドキュメント指向または半構造化された情報を格納、取得、および管理するために設計されている。ドキュメント指向データベースは、NoSQLデータベースの主要なカテゴリの一つである。
組み込みデータベース(英語版)システムとは、保存されたデータへのアクセスを要するアプリケーションソフトウェアと緊密に統合されたDBMSで、アプリケーションのエンドユーザーから隠され、継続的なメンテナンスをほとんど(あるいは全く)必要としないものである。
エンドユーザー・データベースは、個々のエンドユーザーによって開発されたデータから構成されている。たとえば、文書、スプレッドシート、プレゼンテーション、マルチメディア、およびその他のファイルの集合体である。このようなデータベースをサポートするいくつかの製品が存在する。その中には、本格的なDBMSよりもはるかに単純で、基本的なDBMSの機能を備えているものもある。
連合データベースシステムは、複数の異なるデータベースから構成され、それぞれは独自のDBMSを持っている。
ビュー(view)と呼ばれる仮想的なテーブルは、ユーザーごとに異なる方法でデータを表示することができるが、ビューを直接更新することはできなかった。
コッドは、テーブル、行、列ではなく、関係(relation)、組(tuple)、定義域(domain)という数学用語を使ってモデルを定義した。現在よく知られているこれらの用語は、初期の実装に由来するものである。コッドは後に、実際の実装が、モデルの基礎となった数学的な基礎から逸脱する傾向にあることを批判した。
テーブル間の関係を表すために、ディスクアドレスではなく主キー(ユーザー指向の識別子)を使用したのは、主に2つの動機があった。エンジニアリングの観点からは、費用がかかるデータベースの再編成をすることなく、テーブルの再配置やサイズ変更を可能とした。しかし、コッドは、セマンティクス(意味)の違いにより強い興味を持っていた。明示的な識別子を使用することで、純粋な数学的定義で更新操作を定義することが容易になり、一階述語論理という確立した学問分野の観点でクエリ操作を定義できるようになった。これらの操作は純粋な数学的性質があるため、クエリ最適化の基礎をなす証明可能な正しい方法でクエリを書き換えることが可能となる。テーブル間の接続は明示的ではなくなったが、階層型モデルやネットワーク型モデルと比較して表現力が損なわれることはない。
階層型モデルやネットワーク型モデルでは、レコードが複雑な内部構造を持つことが許容された。たとえば、ある従業員の給与履歴は、従業員レコードの中の「繰り返しグループ」として表わされることがある。