一言で!
DBMSとは
データベースの編集担当。
他には?
データを取り出す、しまう、直す、消す、などなど、すべて引き受ける頼もしいヤツ。
DBMSとは?
正式名称はDatabase Management System。
日本語では、データベース管理システムという。
テレビ局の編集担当
テレビ局の保管庫の内容から、過去の映像をまとめた番組を作るとする。
ディレクターの頼みを受けて、探して、形にして渡す人がいる。編集担当だ。
リレーショナルデータベースで、この役を受け持つソフトがDBMSだ。
ディレクター (人・アプリ)
| 頼む ^ 渡す
v |
編集担当 (DBMS)
| 探す ^ 取り出す
v |
保管庫 (データ)
データは保管庫に。頼まれて動くのがDBMS。
編集担当の仕事
DBMSは、データと、使う人やプログラムのあいだに立つ窓口だ(Oracle「What Is a Database?」)。
- 取り出す:「佐藤さんの11月の分だけ」と頼まれたら、合うものを集めて渡す。
- しまう:新しいデータを受け入れて、決まった場所へ入れる。
- 直す・消す:頼まれたデータだけを書き換える。
- 見守る:処理の速さの監視や、バックアップと復元も受け持つ(Oracle「What Is a Database?」)。
「編集」と聞くと、元のデータが書き換わると思うかもしれない。
総集編を作っても、保管庫の元の映像はそのままだ。
渡す形を作るだけなら、元のデータは変わらない。もちろん、本当にデータの書き換えもできる。
アプリは、これらの操作をDBMSに頼むだけでよい。
頼むときの言葉:SQL
DBMSへの頼みごとは、SQLという言語で書くのが一般的だ(PostgreSQL「The SQL Language」)。
ディレクターが渡す指示書のようなもので、DBMSはこれを読んで動く。
ただ、編集担当は、指示書に書かれたとおりに動く。
アプリの入力欄から悪意のある命令を紛れ込ませると、秘密のデータを読まれることがある。これをSQLインジェクションという(OWASP「SQL Injection」)。
そのため、入力された値と命令を分けて扱い、DBMSに与える権限を必要最小限に絞る(OWASP「SQL Injection Prevention Cheat Sheet」)。
何でも引き受けるからこそ、守りが要る。
編集担当の働き方は2つある
局に常駐する編集担当と、アプリの中に住み込む編集担当がいる。
PostgreSQLは前者で、サーバーで動き、ほかのパソコンからネットワークでつなぐ(PostgreSQL「Architectural Fundamentals」)。
SQLiteは後者で、別のサーバーを持たず、ふつうのファイルを直接読み書きする(SQLite「About SQLite」)。
サーバー型 (PostgreSQLなど)
パソコン1 ---+
+--> サーバー
パソコン2 ---+ (DBMS + データ)
組み込み型 (SQLite)
アプリ (DBMS入り) --> ファイル1つ
みんなで使うならサーバー型、1つのアプリの中なら組み込み型。用途でDBMSの種類を選ぶ。
まとめ・私見
DBMS。
優秀とはいえ、今までSQLがわからないと話がまともにできなかった。
それに、悪意のある命令をすれば簡単に秘密のデータが持ち出せることができてある意味ポンコツなとこもあった。
ただ、これからはAIが外国人との会話のように翻訳を仲介してくれる。
悪意の命令に引っかからないように、対策してくれる。
DBMSにはますます活躍してもらわないといけない。
そして我々もよく、彼らのことを知らないといけない🤔
豆知識
- SQL: DBMSへ頼みごとを伝える言語。
- SQLインジェクション: 入力欄から悪意のある命令を紛れ込ませる攻撃。
- PostgreSQL: 無料で使える、リレーショナルデータベース用のDBMS。
- MySQL: Webアプリ向けに作られた、オープンソースのDBMS。
- SQLite: アプリの中に組み込んで使う、小さなDBMS。
- サーバー: ほかのパソコンからの頼みを受けて動くコンピューター。
- オープンソース: 中身のプログラムが公開され、誰でも使えるソフト。
歴史
はじまり:工場の生産管理から
1960年代、GE(ゼネラル・エレクトリック)のチャールズ・バックマンが、工場の生産管理の仕組みを作る。
そこからIDS(Integrated Data Store)が生まれた。
ディスクに置くDBMSとして、日々の仕事で使われた最初のものとされる(Computer History Museum「Charlie Bachman」)。
壁と転換点:大企業の製品から、誰でも使えるものへ
1970年、IBMのエドガー・コッドが、データを表で持つ考えを論文にする(Codd「A Relational Model of Data for Large Shared Data Banks」)。
IBMは1983年に、製品のDB2を出荷する(IBM「The relational database」)。
同じころ、1986年にカリフォルニア大学バークレー校でPOSTGRESの開発が始まる(PostgreSQL「A Brief History of PostgreSQL」)。
研究の終了後、1994年に手が加えられ、オープンソースとして公開された。1996年に、名前がPostgreSQLになる(PostgreSQL「A Brief History of PostgreSQL」)。
編集担当を、無料で雇えるようになった。
いま進んでいる開発
- 2025年5月、AWSがAmazon Aurora DSQLの一般提供を始めた。サーバーの管理が要らない分散データベースだ(AWS(2025年5月27日))。
- 2026年10月、PostgreSQL 19の最初のリリース候補が公開された(PostgreSQL(2026年10月15日))。
この先
DBMSを自分のサーバーで動かすのではなく、Aurora DSQLのように外のサービスへ任せる形が広がっている。
データを取り出す、しまうという仕事は同じでも、動かす場所と管理する人は変わっていく。
どこまで外へ任せるのが標準になるかは、まだ分からない。
年表
| 年代・年 | 主な出来事 | 主な人物・組織 | 主な国・地域 | 特徴 |
|---|---|---|---|---|
| 1960年代 | GEでIDSが生まれる | チャールズ・バックマン | アメリカ(GE) | 工場の生産管理から生まれた、初期のDBMS。[Computer History Museum](https://computerhistory.org/profile/charlie-bachman/) |
| 1970年 | データを表で持つ考えの論文 | エドガー・コッド | アメリカ(IBM) | リレーショナルデータベースの出発点。[Codd(1970)](https://www.seas.upenn.edu/~zives/03f/cis550/codd.pdf) |
| 1983年 | DB2が出荷される | IBM | アメリカ | 表で持つDBMSが製品になった。[IBM](https://www.ibm.com/history/relational-database) |
| 1986年 | POSTGRESの開発が始まる | マイケル・ストーンブレーカーほか | アメリカ(カリフォルニア大学バークレー校) | PostgreSQLの源流。[PostgreSQL](https://www.postgresql.org/docs/current/history.html) |
| 1996年 | 名前がPostgreSQLになる | PostgreSQL Global Development Group | 国際 | オープンソースとして育っていく。[PostgreSQL](https://www.postgresql.org/docs/current/history.html) |
| 2025年5月 | Amazon Aurora DSQLの一般提供 | AWS | アメリカ | サーバーの管理が要らない分散データベース。[AWS](https://aws.amazon.com/about-aws/whats-new/2025/05/amazon-aurora-dsql-generally-available/) |
| 2026年10月 | PostgreSQL 19の最初のリリース候補 | PostgreSQL Global Development Group | 国際 | 正式版の手前の版が公開された。[PostgreSQL](https://www.postgresql.org/about/news/postgresql-19-rc-1-released-3409/) |