PostgreSQL チュートリアル
PostgreSQL は無料のオブジェクト関係データベースサーバー(ORDBMS)であり、柔軟なBSDライセンスの下で配布されています。
PostgreSQL の開発者はこれを次のように発音します。post-gress-Q-L。
PostgreSQL のスローガンは「世界で最も先進的なオープンソースリレーショナルデータベース」です。
データベースとは?
データベース(Database)は、データ構造に従ってデータを整理、保存、管理する倉庫です。
各データベースには、保存されたデータを作成、アクセス、管理、検索、複製するための1つ以上の異なるAPIがあります。
データをファイルに保存することもできますが、ファイルへのデータの読み書きは比較的遅いです。
そのため、現在ではリレーショナルデータベース管理システム(RDBMS)を使用して大量のデータを保存・管理しています。いわゆるリレーショナルデータベースとは、関係モデルに基づいて構築されたデータベースであり、集合代数などの数学的概念や方法を利用してデータベース内のデータを処理します。
ORDBMS(オブジェクト関係データベースシステム)は、オブジェクト指向技術と従来のリレーショナルデータベースを組み合わせたものです。クエリ処理はORDBMSの重要な構成要素であり、その性能の良し悪しはDBMSの性能に直接影響します。
ORDBMS は、元のリレーショナルデータベースに基づいていくつかの新しい機能を追加しています。
RDBMS はリレーショナルデータベース管理システムであり、エンティティ間の関連を確立し、最終的に関係テーブルを得ます。
OODBMS(object-oriented database management system)オブジェクト指向データベース管理システムは、すべてのエンティティをオブジェクトと見なし、これらのオブジェクトクラスをカプセル化し、オブジェクト間の通信はメッセージによって行われます。OODBMS オブジェクト関係データベースは、実質的にはリレーショナルデータベースです。
ORDBMS 用語
PostgreSQL データベースの学習を始める前に、ORDBMS のいくつかの用語について理解しましょう:
- データベース:データベースは、関連するテーブルの集合です。
- データテーブル:テーブルはデータの行列です。データベース内のテーブルは、単純なスプレッドシートのように見えます。
- 列:列(データ要素)には同じデータが含まれます。例えば、郵便番号のデータなどです。
- 行:行(=タプル、またはレコード)は関連するデータの集まりです。例えば、ユーザー購読の1件のデータです。
- 冗長性:データを2倍保存するため、冗長性はパフォーマンスを低下させますが、データの安全性を高めます。
- 主キー:主キーは一意です。データテーブルには主キーを1つだけ含めることができます。主キーを使用してデータを検索できます。
- 外部キー:外部キーは2つのテーブルを関連付けるために使用されます。
- 複合キー:複合キー(組み合わせキー)は、複数の列を1つのインデックスキーとして扱い、通常は複合インデックスに使用されます。
- インデックス:インデックスを使用すると、データベーステーブル内の特定の情報にすばやくアクセスできます。インデックスは、データベーステーブルの1つまたは複数の列の値を並べ替える構造です。書籍の目次のようなものです。
- 参照整合性:参照整合性は、関係内で存在しないエンティティを参照することを許可しません。エンティティ整合性とともに、リレーショナルモデルが満たさなければならない整合性制約条件であり、データの一貫性を保証することを目的としています。
PostgreSQL の特徴
-
関数:関数を使用すると、データベースサーバー側で命令プログラムを実行できます。
-
インデックス:ユーザーはインデックスメソッドをカスタマイズしたり、組み込みのBツリー、ハッシュテーブル、GiSTインデックスを使用したりできます。
-
トリガー:トリガーはSQL文のクエリによって引き起こされるイベントです。例えば、INSERT文がデータ整合性をチェックするトリガーを起動する場合があります。トリガーは通常、INSERTまたはUPDATE文によって起動されます。
-
マルチバージョン同時実行制御:PostgreSQLは、マルチバージョン同時実行制御(MVCC、Multiversion concurrency control)システムを使用して同時実行制御を行います。このシステムは各ユーザーにデータベースの「スナップショット」を提供し、ユーザーがトランザクション内で行った各変更は、そのトランザクションが正常にコミットされるまで他のユーザーには見えません。
-
ルール:ルール(RULE)を使用すると、クエリを書き換えることができます。通常、ビュー(VIEW)に対する操作(INSERT、UPDATE、DELETEなど)を実装するために使用されます。
-
データ型:テキスト、任意精度の数値配列、JSONデータ、列挙型、XMLデータなどがあります。
など。 -
全文検索:Tsearch2 または OpenFTS を使用します。8.3 バージョンでは Tsearch2 が組み込まれています。
-
NoSQL:JSON、JSONB、XML、HStore をネイティブサポートし、NoSQLデータベースへの外部データラッパーを備えています。
-
データウェアハウス:PostgreSQL エコシステムに属する GreenPlum、DeepGreen、HAWK などへスムーズに移行でき、FDW を使用して ETL を行えます。
関連リソース
PostgreSQL 10.1 マニュアル オンラインマニュアル:http://www.example.com/manual/PostgreSQL/
オフラインマニュアル - PDF版:https://pan.baidu.com/s/1h1J14i8tzJUY3p9yyeW0mA、 抽出コード:xs7r。
オフラインマニュアル - CHM版:https://pan.baidu.com/s/1h1J14i8tzJUY3p9yyeW0mA、 抽出コード:tq4z。
その他の拡張