RDBMS@DB系ミドルウェア¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. RDBMS (関係DB管理システム) の仕組み¶
RDBMSの種類¶
RDBMS | RDB |
---|---|
MariaDB | MariaDBのDB |
MySQL | MySQLのDB |
PostgreSQL | PostgreSQLのDB |
アーキテクチャ¶
RDBMSは、リレーショナルエンジン、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へのクエリ送信時に新しく作成したコネクションを、非アクティブ状態として保持しておき、以降のクエリ送信時に再利用する。
一定回数再利用されたり、一定期間使用されていないコネクションは削除される。