- 拡張可能性: PostgreSQLは、ユーザーが新しいデータ型、関数、演算子、および集約関数を作成できる拡張機能を提供しています。たとえば、以下のコードは、新しい集約関数を作成する方法の例です。
CREATE AGGREGATE median(anyelement) (
SFUNC = array_append,
STYPE = anyarray,
FINALFUNC = median_final
);
CREATE FUNCTION median_final(anyarray)
RETURNS anyelement AS $$
SELECT percentile_cont(0.5) WITHIN GROUP (ORDER BY $1)
$$ LANGUAGE SQL;
- JSONサポート: PostgreSQLは、JSONデータ型をサポートしており、JSONデータの格納、クエリ、操作が可能です。以下は、JSONデータのクエリの例です。
SELECT data->'name' AS name, data->'age' AS age
FROM users
WHERE data->'country' = '"Japan"';
- 高度なインデックス: PostgreSQLは、Bツリー、ハッシュ、GiST(汎用検索ツリー)、GIN(汎用逆インデックス)など、さまざまなタイプのインデックスをサポートしています。以下は、Bツリーインデックスの作成の例です。
CREATE INDEX idx_users_name ON users USING btree (name);
- トランザクション処理: PostgreSQLは、ACID(Atomicity、Consistency、Isolation、Durability)プロパティをサポートし、安全なトランザクション処理を実現します。以下は、トランザクションの使用例です。
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;
COMMIT;
これらは、PostgreSQLのいくつかの主要な特徴の一部です。さらに多くの機能がありますので、公式ドキュメントや参考書などを参照することをおすすめします。