Instiq

OSS-DB Silver のナレッジマップ

OSS-DB Silver の主要概念 55 件と、そのつながり。上のマップでノードをクリックすると関連用語や前提をたどれます。下は全概念の索引で、定義と「前提・関連する概念」への内部リンクを掲載しています。

概念一覧(55)

  • PostgreSQL

    オープンソースのオブジェクトリレーショナルデータベース管理システム(ORDBMS)。PostgreSQL Global Development Group が開発を主導し、PostgreSQL ライセンス(BSD/MIT に類似した寛容なライセンス)で配布される。OSS-DB Silver/Gold の対象製品。

    関連: PostgreSQL ライセンス

  • SELECT 文(WHERE/ORDER BY/GROUP BY/HAVING/DISTINCT/LIMIT/OFFSET)

    表からデータを取得する DML 文。WHERE で行を絞り込み、ORDER BY で並べ替え、GROUP BY でグループ化、HAVING でグループへの絞り込み、DISTINCT/SELECT DISTINCT で重複を除去し、LIMIT/OFFSET で取得件数と開始位置を制御する。

  • 更新系 DML(INSERT/UPDATE/DELETE)

    表の行を追加・更新・削除する DML 文。INSERT は新しい行を挿入し、UPDATE ... WHERE のように条件を指定して既存行の列値を変更し、DELETE は条件に合う行を削除する。トリガー内では変更前後の行を OLD/NEW で参照できる。

    前提: SELECT 文(WHERE/ORDER BY/GROUP BY/HAVING/DISTINCT/LIMIT/OFFSET)

    関連: トリガー

  • インデックス(CREATE INDEX)

    CREATE INDEX で作成する、検索を高速化するための補助的なデータ構造。特定列やその組み合わせに対して作成し、WHERE 句や JOIN 条件での絞り込みを高速化する。既定のインデックス種別は B-tree で、インデックスを増やすほど INSERT/UPDATE 時に索引更新の書き込みコストが増える。

    前提: 更新系 DML(INSERT/UPDATE/DELETE)JOIN(INNER/LEFT/RIGHT/FULL/CROSS)SELECT 文(WHERE/ORDER BY/GROUP BY/HAVING/DISTINCT/LIMIT/OFFSET)

  • ロックと同時実行制御

    複数トランザクションが同じデータへ同時アクセスする際の整合性を保つ仕組み。LOCK 文で明示的にロックを取得でき、行ロック(row lock)は特定行のみ、テーブルロック(table lock)はテーブル全体を対象にする。PostgreSQLの同時実行制御はMVCC(多版型同時実行制御)を中核とし、読み取りと書き込みが互いをブロックしないことでロック競合を減らす。

    前提: PostgreSQLトランザクション(BEGIN/COMMIT/ROLLBACK)

  • トランザクション(BEGIN/COMMIT/ROLLBACK)

    複数の操作を1つの不可分な単位としてまとめる仕組み。BEGIN で開始し、COMMIT で全ての変更を確定、ROLLBACK で全ての変更を取り消す。ACID特性(原子性・一貫性・独立性・永続性)を保証し、SAVEPOINT でトランザクション内に部分的なロールバック地点を設けられる。

  • COPY 文と \copy

    テーブルとファイルの間で一括データ入出力を行う手段。SQL の COPY 文はサーバプロセスの権限でサーバ側のファイルを直接読み書きする。psql のメタコマンド \copy はクライアント側の権限でファイルを扱い、内部的に COPY を発行する。

    前提: psql メタコマンドpsql

  • データベースクラスタ

    1つの PostgreSQL サーバインスタンスが管理する、複数のデータベースをまとめたファイルシステム上の領域全体。initdb で作成されるデータディレクトリに対応し、複数のデータベースやロールを内包する。

    前提: PostgreSQL

    関連: initdb

  • システムカタログ(pg_catalog)

    PostgreSQL 独自形式でメタデータを保持するスキーマ。テーブル・索引・型・関数・権限などサーバの全オブジェクト情報を格納し、system information functions(current_database() など)と組み合わせて内部状態を調べられる。

    前提: インデックス(CREATE INDEX)PostgreSQLスキーマ

  • 手続き言語 PL/pgSQL(関数・プロシージャ)

    PostgreSQL に組み込まれた手続き型言語 PL/pgSQL は、制御構造(IF・ループなど)を使って関数やプロシージャを記述できる。関数は値を返し問い合わせ内で使え、プロシージャはトランザクション制御を含む一連の処理を CALL で実行する。

    前提: PostgreSQLシーケンストランザクション(BEGIN/COMMIT/ROLLBACK)

  • データ型(INTEGER/NUMERIC/VARCHAR/TEXT/BOOLEAN/DATE/TIMESTAMP/JSON/JSONB)

    PostgreSQL の主要な列データ型。INTEGER/BIGINT は整数、NUMERIC は任意精度の数値、VARCHAR は可変長文字列(長さ上限指定可)、TEXT は長さ無制限の文字列、BOOLEAN は真偽値、DATE/TIMESTAMP は日付・日時、JSON はテキストとして格納する JSON、JSONB は解析済みバイナリ形式で格納し索引化やより高速な演算が可能な JSON。

    前提: PostgreSQL

    関連: 文字列関数(char_length/length/lower/upper/substring/replace/trim/`||`/LIKE)

  • psql

    PostgreSQL 標準の対話型ターミナル(コマンドラインクライアント)。SQL 文の実行に加え、バックスラッシュで始まるメタコマンドでカタログ情報の確認や表示設定の変更ができる。

    前提: PostgreSQL

    関連: psql メタコマンド

  • WAL(トランザクションログ)

    データファイルへの変更を実際に書き込む前に、その変更内容を先行して記録するログ。クラッシュリカバリの基盤であり、WAL アーカイブと組み合わせて PITR を実現する。

    前提: PITR(ポイントインタイムリカバリ)トランザクション(BEGIN/COMMIT/ROLLBACK)WAL アーカイブ(archive_command)

  • 集約関数(count/sum/avg/max/min)

    複数行を1つの値にまとめる関数群。count(count(*) は全行数)は件数、sum は合計、avg は平均、max/min は最大値・最小値を返す。GROUP BY と組み合わせてグループごとの集計に使う。

    前提: SELECT 文(WHERE/ORDER BY/GROUP BY/HAVING/DISTINCT/LIMIT/OFFSET)

  • autovacuum

    テーブルの更新・削除量が閾値(autovacuum_vacuum_threshold 等)を超えると VACUUM/ANALYZE を自動実行するバックグラウンドプロセス群。多くの場合、手動 VACUUM の負担を大幅に軽減し肥大化と統計の陳腐化を防ぐ(大量更新など特定のワークロードでは手動 VACUUM が依然必要な場合もある)。

    前提: 更新系 DML(INSERT/UPDATE/DELETE)

    関連: VACUUM/ANALYZE

  • データベースロール/ユーザー

    PostgreSQL では「ユーザー」と「グループ」を統一した概念としてロールを扱う。CREATE ROLE ... LOGIN でログイン可能なロール(ユーザー相当)を作成でき、既定属性(LOGIN の有無・スーパーユーザー権限など)や有効期限(VALID UNTIL)を指定できる。ALTER ROLE で属性を変更、DROP ROLE で削除する。

    前提: PostgreSQL

  • DBMS(データベース管理システム)

    データの格納・検索・更新・排他制御・障害復旧などを一元管理するソフトウェア。アプリケーションから直接ファイルを操作させず、SQL などの標準インタフェースを介して整合性・永続性・同時実行制御を保証する。

    前提: ロックと同時実行制御

  • デッドロック

    複数のトランザクションが互いに相手の保持するロックの解放を待ち合い、いずれも先へ進めなくなる状態。PostgreSQL は自動的にデッドロックを検出し、いずれか一方のトランザクションを強制的にロールバックさせて解消する。

    前提: ロックと同時実行制御PostgreSQLトランザクション(BEGIN/COMMIT/ROLLBACK)

  • ファイルシステムレベルバックアップ

    データディレクトリ全体をファイルシステムのコピーとして取得するバックアップ方式。サーバ停止中の単純コピーか、稼働中に行う低レベルバックアップ(PostgreSQL 15 以降は pg_backup_start()/pg_backup_stop()、pg_basebackup による)のいずれかで実施する。

    前提: COPY 文と \copyPostgreSQL

  • information_schema

    SQL 標準に準拠した形式でデータベースのメタデータ(テーブル・列・制約など)を参照できるスキーマ。DBMS 実装に依存しない標準的な問い合わせが可能。

    前提: DBMS(データベース管理システム)スキーマ

  • initdb

    新しいデータベースクラスタを初期化するコマンド。データディレクトリを作成し、template1 と template0 を含む初期システムカタログを構築する。

    前提: システムカタログ(pg_catalog)テンプレートデータベース(template0/template1)

    関連: データベースクラスタ

  • 分離レベル(READ COMMITTED/REPEATABLE READ/SERIALIZABLE)

    同時実行トランザクション間でどこまで他のトランザクションの変更が見えるかを定める設定。標準SQLはREAD UNCOMMITTED(コミット前データも見える=ダーティリードを許容)/READ COMMITTED/REPEATABLE READ/SERIALIZABLEの4段階を定義するが、PostgreSQLはREAD UNCOMMITTEDをREAD COMMITTEDと同一に扱い実質3段階。READ COMMITTED(PostgreSQL の既定)はコミット済みデータのみ見えるが非再現読み取りが起こりうる、REPEATABLE READ はトランザクション開始時点のスナップショットを維持し非再現読み取りだけでなくファントムリードも防ぐ(PostgreSQL固有の挙動)、SERIALIZABLE は直列実行と同等の一貫性を保証する最も厳格なレベル。

    前提: PostgreSQLトランザクション(BEGIN/COMMIT/ROLLBACK)

  • psql メタコマンド

    psql 内でバックスラッシュ(\)から始まる特殊コマンド。\l はデータベース一覧、\dt はテーブル一覧、\du はロール一覧、\c は接続先切替、\? はメタコマンドのヘルプ、\h は SQL 構文のヘルプ、\timing は実行時間表示のトグルを行う。

    関連: psql

  • pg_ctl

    PostgreSQL サーバプロセスを制御するユーティリティ。start/stop/restart/reload/status のサブコマンドで起動・停止・再起動・設定再読み込み・状態確認を行う。

    前提: テーブル定義 DDL(CREATE/ALTER/DROP TABLE・制約)PostgreSQL

  • postgresql.conf

    サーバ全体の動作パラメータを設定するメインの設定ファイル。listen_addresses(待受アドレス)・port(待受ポート)・max_connections(最大接続数)・logging_collector/log_destination(ログ出力方式)などを設定する。include ディレクティブで他ファイルを取り込める。

    前提: PostgreSQL

  • スキーマ

    データベース内でテーブルや他のオブジェクトを論理的にグループ化する名前空間。search_path 設定で修飾なしのオブジェクト名を解決する際に検索するスキーマの順序を指定する。

  • テーブル空間(TABLESPACE)

    テーブルやインデックスの物理データをどのディスク上のディレクトリに格納するかを指定するオブジェクト。1つのデータベース内でオブジェクトごとに異なるストレージ(高速ディスクと大容量ディスクなど)へ配置し分けるのに使う。

    前提: インデックス(CREATE INDEX)

  • テンプレートデータベース(template0/template1)

    CREATE DATABASE の雛形となる特殊データベース。template1 はユーザーがカスタマイズ可能な既定テンプレートで、通常の CREATE DATABASE はこれをコピーする。template0 は初期状態を保持するクリーンな雛形で、ロケールなど特殊なケースの複製元に使う。

    前提: COPY 文と \copy

  • トリガー

    INSERT/UPDATE/DELETE などのイベント発生時に自動的に指定した関数を実行する仕組み。行レベル・文レベル、実行前(BEFORE)・実行後(AFTER)などのタイミングを指定でき、PL/pgSQL で書かれたトリガー関数と組み合わせて使う。

    前提: 手続き言語 PL/pgSQL(関数・プロシージャ)

    関連: 更新系 DML(INSERT/UPDATE/DELETE)

  • テーブル定義 DDL(CREATE/ALTER/DROP TABLE・制約)

    テーブルを定義・変更・削除する DDL 文。CREATE TABLE で列と制約(PRIMARY KEY・FOREIGN KEY/foreign keys・UNIQUE・CHECK・NOT NULL)を定義し、ALTER TABLE(ALTER TABLE ADD COLUMN など)で構造を変更し、DROP TABLE で削除する。

  • createuser/dropuser

    ロール(ユーザー)を作成・削除するコマンドラインラッパー。内部的にはそれぞれ CREATE ROLE/DROP ROLE 文を発行する。

    前提: データベースロール/ユーザー

  • 時間関数(age/now/current_date/current_timestamp/extract/to_char)

    日時を扱う関数群。age は2つの日時の差、now/current_timestamp は現在時刻、current_date は現在日付、extract は日時値から年・月・日などの構成要素を数値(倍精度浮動小数点数)として取り出し、to_char は日時を指定書式の文字列へ変換する。

    前提: データ型(INTEGER/NUMERIC/VARCHAR/TEXT/BOOLEAN/DATE/TIMESTAMP/JSON/JSONB)

  • GRANT/REVOKE

    ロールに対してテーブルなどオブジェクトへの権限を付与・剥奪する DCL 文。GRANT SELECT のように特定権限のみ、GRANT ALL のように全権限をまとめて付与できる。

    前提: SELECT 文(WHERE/ORDER BY/GROUP BY/HAVING/DISTINCT/LIMIT/OFFSET)

  • JOIN(INNER/LEFT/RIGHT/FULL/CROSS)

    複数の表を結合して問い合わせる句。INNER JOIN は両表で条件が一致する行のみ、LEFT JOIN は左表の全行と一致した右表の行、RIGHT JOIN はその逆、FULL JOIN は一致有無に関わらず両表の全行、CROSS JOIN は条件なしの直積を返す。

  • 正規化とデータベース設計

    冗長性や更新時異常(update anomaly)を排除するため表を段階的に分解する設計手法。第一正規形(1NF)は各列の値が原子値(atomic value・単一値)であることを要求する。第二正規形(2NF)は1NFを満たした上で部分関数従属(主キーの一部にのみ従属する列)を排除し、第三正規形(3NF)はさらに推移的関数従属(非キー列を介した間接的な従属)を排除する段階。データベース設計はこの正規化を含めた表構造の決定プロセス全体を指す。

    前提: 更新系 DML(INSERT/UPDATE/DELETE)

  • pg_config

    インストールされている PostgreSQL のビルド設定情報(インストールパス・コンパイルオプション・バージョンなど)を表示するユーティリティ。拡張モジュールのビルド時などに参照される。

    前提: PostgreSQL

  • pg_controldata

    データベースクラスタの制御情報(pg_control ファイル)を表示するユーティリティ。データベースの状態、最新のチェックポイント位置、WAL のバージョンなどを確認できる。

    前提: データベースクラスタ

  • 論理バックアップ・リストア(pg_dump/pg_dumpall/pg_restore)

    SQL レベルバックアップのツール群。pg_dump は単一データベースを論理バックアップし、pg_dumpall はロールやテーブル空間を含むクラスタ全体をダンプする。pg_restore はカスタム/ディレクトリ/tar 形式の pg_dump 出力からリストアし、-t オプションで特定テーブルのみを対象にできる。

    前提: テーブル空間(TABLESPACE)

  • pg_hba.conf

    クライアント認証を制御する設定ファイル。接続元(アドレス・データベース・ユーザー)ごとに認証方式(trust・md5・scram-sha-256・peer など)を行単位で記述し、上から順に評価して最初に一致した行の規則が適用される。

    関連: 認証メソッド(trust/md5/scram-sha-256/peer)

  • pg_isready

    PostgreSQL サーバが接続を受け付けられる状態かを確認するユーティリティ。終了コードで稼働状況(受付可・拒否・接続不可・不明)を返す軽量な死活監視用コマンド。

    前提: PostgreSQL

  • pg_resetwal

    破損などで起動不能になったデータベースクラスタの WAL やその他の制御情報をリセットして強制的に起動可能にするユーティリティ。データ損失を伴いうる最終手段であり、通常運用では使わない。

    前提: データベースクラスタ

  • PITR(ポイントインタイムリカバリ)

    ベースバックアップとその後の WAL アーカイブを組み合わせて、任意の過去時点までデータベースを復元する仕組み。誤操作や障害の直前まで戻すといった柔軟な復旧を可能にする。

  • PostgreSQL ライセンス

    PostgreSQL 本体に適用される寛容型(パーミッシブ)ライセンス。BSD/MIT 系に類似し、著作権表示と免責事項の保持を条件に、改変・再配布・商用利用を自由に認める。コピーレフト条項はない。

    関連: PostgreSQL

  • リレーショナルデータモデル

    データを行(タプル)と列(属性)から成る2次元の表(リレーション)の集合として表現するデータモデル。表同士はキーを介して関連付けられ、集合演算に基づく問い合わせ(SQL)で操作する。

    前提: 集合演算(UNION/INTERSECT/EXCEPT)

  • シーケンス

    呼び出しごとに一意な連番を生成するデータベースオブジェクト。主キーの自動採番などに使われ、CREATE SEQUENCE で作成する。

  • 集合演算(UNION/INTERSECT/EXCEPT)

    複数の SELECT 結果を集合として組み合わせる演算。UNION は和集合(既定で重複除去、UNION ALL は重複を残す)、INTERSECT は積集合、EXCEPT は差集合を返す。

    前提: SELECT 文(WHERE/ORDER BY/GROUP BY/HAVING/DISTINCT/LIMIT/OFFSET)

  • ストリーミング/ロジカルレプリケーションの基礎

    PostgreSQL のレプリケーション方式。ストリーミングレプリケーションは WAL をリアルタイムにスタンバイへ送信して物理的に同期する方式、ロジカルレプリケーションは変更を論理的な行の変更としてパブリッシュ/サブスクライブする方式。Silver では概念レベルの基礎知識が対象(構築・監視・障害対応は Gold の範囲)。

    前提: PostgreSQL

  • WAL アーカイブ(archive_command)

    WAL セグメントファイルが不要になる前に別の保管場所へコピーして保持する仕組み。postgresql.conf の archive_command で、各 WAL セグメントを退避する際に実行するシェルコマンドを指定する。

    前提: PostgreSQLpostgresql.conf

  • SQL

    リレーショナルDBを操作する言語。DDL(定義)/DML(操作)/DQL=SELECT(問い合わせ)/DCL(権限)に分かれる。

    前提: SELECT 文(WHERE/ORDER BY/GROUP BY/HAVING/DISTINCT/LIMIT/OFFSET)

  • 認証メソッド(trust/md5/scram-sha-256/peer)

    pg_hba.conf で指定できる代表的な認証方式。trust は無条件に許可、md5 と scram-sha-256 はパスワードによる認証(scram-sha-256 がより安全な既定方式)、peer は OS のユーザー名で認証するローカル接続向けの方式。

    関連: pg_hba.conf

  • 文字列関数(char_length/length/lower/upper/substring/replace/trim/`||`/LIKE)

    文字列を加工・検索する関数と演算子。char_length/length は文字数、lower/upper は大文字小文字変換、substring は部分文字列抽出、replace は置換、trim は前後の空白(または指定文字)除去、連結演算子 || は文字列結合、LIKE 述語はパターンマッチ(% は任意長、_ は任意の1文字。大文字小文字を区別しない ILIKE もある)。

    前提: 集約関数(count/sum/avg/max/min)

    関連: データ型(INTEGER/NUMERIC/VARCHAR/TEXT/BOOLEAN/DATE/TIMESTAMP/JSON/JSONB)

  • 副問合せ(サブクエリ)

    SQL 文の中に入れ子で記述される別の SELECT 文。1行1列の値を返すものをスカラー副問合せと呼ぶ。EXISTS の否定形である NOT EXISTS のように、副問合せの結果有無を条件に使う書き方もある。

    前提: SELECT 文(WHERE/ORDER BY/GROUP BY/HAVING/DISTINCT/LIMIT/OFFSET)

  • VACUUM/ANALYZE

    VACUUM は削除・更新で発生したデッドタプル(不要領域)を回収し、テーブルの肥大化を防ぐ。VACUUM FULL はテーブルを排他ロックして物理的に再構築し領域をOSへ返す(通常運用では推奨されない)。ANALYZE はクエリプランナが使う統計情報を更新する。両者は目的が異なり、autovacuum が定期的に自動実行する。

    前提: ロックと同時実行制御

    関連: autovacuum

  • バージョニングとリリースサイクル

    PostgreSQL はメジャーバージョン(新機能を含み年1回程度リリース)とマイナーバージョン(バグ修正・セキュリティ修正のみ)を区別する。サポートポリシーにより各メジャーバージョンは初回リリースから約5年間サポートされる。

    前提: PostgreSQL

  • OSS-DB/PostgreSQL のコミュニティ

    PostgreSQL の開発・議論を支える分散コミュニティ。開発者向けメーリングリスト pgsql-hackers(機能開発・パッチ議論)や pgsql-bugs(バグ報告)で意思疎通し、誰でもバグ報告や議論への参加を通じて貢献できる。

    前提: PostgreSQL