コンテンツにスキップ

RDBMS@DB系ミドルウェア

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. RDBMS (関係DB管理システム) の仕組み

RDBMSの種類

RDBMS RDB
MariaDB MariaDBのDB
MySQL MySQLのDB
PostgreSQL PostgreSQLのDB


アーキテクチャ

RDBMSは、リレーショナルエンジン、DBエンジン (ストレージエンジン) 、から構成される。

DB管理システムの仕組み


02. RDBMS

リレーショナルエンジン

記入中...


DBエンジン (ストレージエンジン)

▼ DBエンジンとは

『ストレージエンジン』ともいう。

RDBMSがDBに対してデータのCRUDの処理を行うために必要なソフトウェアのこと。

▼ DBエンジンの種類

RDMS (例:MySQL、PostgreSQL、など) によって、対応するDBエンジンが異なる。

  • InnoDB
  • Memory
  • CSV


保管場所

▼ インメモリDB

メモリ (例:DRAMなどの物理メモリ、仮想メモリ) 上にデータを保管するDBを、ストレージ上に保管することと比較して、インメモリDBという。

インメモリDBを採用する場合は、データ保管とプロセス割り当ての間でメモリ領域を奪い合うことになるため、メモリサイズを大きくする必要がある。

▼ オンディスクDB

ストレージ (例:HDD、SSD) 上にデータを保管するDBを、メモリ上に保管することと比較して、オンディスクDBという。


RDB (関係DB)

▼ RDBとは

データ同士がテーブル状に関係を持つデータ格納形式で構成されるのこと。

NoSQLとは異なり、データはストレージに保存する。


03. RDBMSクライアント

クエリ

▼ クエリとは

RDBMSの種類に応じたクエリが必要になる。

▼ クエリパッケージ

クエリの実装の抽象度に応じて、パッケージがある。

クエリパッケージ 説明
生のクエリ RDB固有のクエリのこと。
クエリビルダー RDB固有のクエリを実装しやすくしたパッケージのこと。
ORM アプリケーション側にDBテーブルに対応したモデルを定義し、これを使用してRDBに固有のクエリを実行するパッケージのこと。


DBコネクション

▼ DBコネクションとは

アプリからRDBMSへのクエリ送信時の通信のこと。

TCP/IPプロトコルを使用する。

▼ DBセッション

ログインに成功したDBコネクションのこと。

セッションを確立できると、クエリを実行できるようになる。

一つのセッション中に一つのトランザクション (複数のクエリからなる) を実行することになる。

▼ コネクションプロキシ

アプリケーションとDBの間に、コネクションプールプロキシ (例:ProxySQL、PgBouncer、など) を配置する。

これにより、アプリケーションサーバーのコネクションプールの処理をコネクションプロキシに委譲する。

注意点として、プリペアードステートメントでは既存のコネクションを再利用する必要があるが、コネクションプロキシでは別のコネクションを使用してしまうことがある。

そのため、コネクションプロキシの採用時には、プリペアードステートメントを使用できない。

▼ コネクションプール

アプリからDBへのクエリ送信時に新しく作成したコネクションを、非アクティブ状態として保持しておき、以降のクエリ送信時に再利用する。

一定回数再利用されたり、一定期間使用されていないコネクションは削除される。

db_connection-pool


04. 性能指標

秒当たりの平均トランザクション数 (TPS:Transaction Per Second)