こんにちは、4年目エンジニアの nakaSay です。
本記事では「データベースのきほん」という書籍の内容をかい摘み、いくつかのパートに分けて記事を投稿しています。
本書籍は入門書であり、記事では以下のような内容を取り上げる予定です。気になった方は是非気軽にお立ち寄りください。
- データベースの全体像
- リレーショナルデータベースとは
- データベースに関わるお金の話
- データベースとアーキテクチャ構成
- DBMS を操作するときの基本知識
- SQL文の基本
- トランザクションと同時実行制御
- テーブル設計の基礎
- バックアップとリカバリ
MySQLとコネクションを作る
ここでは、MySQL を例に DBMS を操作する際の基本知識について説明をしていきます。
まず、DBMSに対してコマンド入力をして操作するためには、ログインが必要です。
MySQL ではログインに成功すると「mysql>」という文字列が表示されますが、これは「プロンプト(prompt)」と言われ、ユーザーからのコマンド入力を受付可能な状態であることを示しています。
上記のように、ログインによる接続を「コネクション(connection)」と呼びます。
コネクションが確立されてから様々なやりとりをするわけですが、このやりとりの開始から終了までを「セッション(session)」と呼びます。
コネクションとセッションは似た概念ですが、コネクションが確立した上にセッションが作られる、という関係があります。
SQLと管理コマンドの違い
RDBのデータを操作するためにSQLという言語が用意されていますが、実はDBMSはSQL以外の様々な用途のコマンドを用意しています。
MySQLを例に挙げると、
show status like 'Threads_connected'
- コネクションの数
show status like 'Uptime'
- MySQLが起動してからの経過時間
show status like 'Queries'
- MySQLが実行したSQL分の数
上記のように、データを操作する以外にDBMSの情報を取得したりするようなコマンドをここでは管理コマンドと表現します。
RDBの階層
ユーザーはDBMSを通じてデータベース内のテーブルを操作することができますが、実は内部的にはいくつか階層に分かれてデータが管理されています。
- インスタンス
- DBMSが動く単位で、物理的な概念。OSからはプロセスとしてん見えており、メモリやCPUを消費する実体として捉えられる
- データベース
- インスタンス配下の階層
- スキーマ
- データベース配下の階層。テーブルを格納するフォルダのようなもの
- テーブル
少しややこしい点として、MySQL など一部が省略されている DBMS も存在しています。
例えば MySQL ではデータベース階層が存在しておらず、インスタンス配下にスキーマが属しています。
なので、Postgress に慣れ親しんだ人が MySQL に触れると、その階層構造に違和感を感じるということも珍しくありません。
まとめ
- データベースを操作するためには、「ログイン」が必要
- ログインに成功すると、コネクションが確立されセッションが作られる
- データベースの操作するコマンドに、SQL以外の管理コマンドがある
- DBMSの階層は上からインスタン、データベース、スキーマ、テーブルとなっている
- MySQLなど一部の階層が省略されているものもある
参考