オープンソースデータベース postgresql 最新動向 … › event_seminar › 2013 ›...

24
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 1 オープンソースデータベース PostgreSQL最新動向のご紹介 PostgreSQL最新動向&活用事例セミナー 2013-06-27 14:1014:50

Upload: others

Post on 25-Jun-2020

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.

1

オープンソースデータベースPostgreSQL最新動向のご紹介

PostgreSQL最新動向&活用事例セミナー

2013-06-27 14:10~14:50

Page 2: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 2

TOC

PostgreSQL の概要

次期バージョン PostgreSQL 9.3 のご紹介

講演者 SRA OSS, Inc. 日本支社マーケテイング部

PostgreSQL技術グループ長 高塚 遙

主として PostgreSQL のヘルプデスク、導入構築、

コンサルティング等の業務を担当

Page 3: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 3

PostgreSQLの概要

Page 4: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 4

改めて・・・ PostgreSQL とは

代表的なオープンソースRDBMS

Ingres(1970~ UCB) を先祖に持つ PostgreSQL 6.0 (1996 ~) からでも 15年以上の歴史

BSDタイプのライセンスで配布 PostgreSQL Global Development Gruop と University of

California が著作権を持つ

ひとつのオーナー企業、オーナー個人を持たない PostgreSQL開発に時間を割く技術者を提供している企業がいく

つかある/その企業群も少しずつ変遷している

Page 5: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 5

Contributors

PostgreSQL開発体制

Major Contributors

Core Team

Josh BerkusTom LanePeter EisentrautMagnus HaganderBruce MomjianDave Page

支援企業

開発コミュニティ ※www.postgresql.org 記載より

Fujii MasaoHarada HitoshiIshii TatsuoKaigai KouheiSuzuki Koichi : 30~40名

etc...

Page 6: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 6

PostgreSQLの歩み

PG 7.0 PG 7.1 PG 7.2 PG 7.3 PG 7.4 PG 8.0 PG 8.1 PG 8.2 PG 8.3 PG 8.4 PG 9.0 PG 9.1 PG 9.20

20000

40000

60000

80000

100000

120000

PostgreSQL のコードサイズとリリース

コー

ドサ

イズ

(byt

e)

更新の高速化

ビットマップスキャンプリペアド

ステートメント

並列実行VACUUM外部キー、

JOIN構文

トランザクションログ

スキーマ

PITR、Windows

4 CPUスケール

|2001年

4月

|2005年

1月

|2009年

7月

|2006年12月

|2002年11月

ウィンドウ関数再帰SQL 64 CPU

スケール

|2011年

9月

同期レプリケーション外部テーブル

レプリケーションWindows 64bit

1年1バージョン10年以上

安定リリース

コー

ドサ

イズ

(KB

Page 7: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 7

PostgreSQLはどこで使われているか?

業務基幹システムの商用データベース製品置き換え EnterpriseDB 「Postgres Plus Advanced Server」など、

PostgreSQLベースの商用DB互換製品も

Blog、SNS、ゲーム、各種の新しいオンラインサービス PostgreSQL も使われているが、MySQL も強い

オープンソースWebアプリケーションの標準データベース

廉価クラウドで標準提供される DBMS

BI分野の独自データベース製品のベースとして Netezza、GreenPlum、Yahoo自社内むけデータベース

地理情報システムで大きな存在感 PostGIS というオープンソースの追加モジュールが強力

Page 8: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 8

PostgreSQL 9.3 のご紹介

Page 9: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 9

PostgreSQL 9.3 は盛りだくさん

マテリアライズドビュー

ページ

チェックサム

ストリーミングレプリケーション

タイムライン追随

ロックタイムアウト

外部キー制約

ロック競合軽減

再帰ビュー

暗黙の

更新可能ビュー

並列pg_dumppostgres_fdwと

書き込みFDW

pg_xlogdumpLOBサイズ拡張

LATERAL結合

pg_isready

COPY FREEZE

9.2 開発での機能候補がシフトした

JSON関数worker_spi

DDLトリガ

Page 10: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 10

ストリーミングレプリケーション

タイムライン追随

PostgreSQL

Prim

PostgreSQL

Stby

WALファイル

ストリーミングレプリケーション

ログシッピング

PostgreSQL のレプリケーションはどんなもの?

タイムライン(時系列) とは? リカバリするごとに +1 されるメタ情報

PostgreSQL

stby

PostgreSQL

stby

カスケード可能

1対多 可能

Page 11: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 11

ストリーミングレプリケーション

タイムライン追随

PostgreSQL

Prim

(1)昇格ノードに参照元を切り替え(2)カスケードで昇格後に継続処理(3)ノードのスイッチオーバー

これまでのストリーミングレプリケーションで、できそうでできなかったことが可能に

PostgreSQL

Prim↑

昇格

PostgreSQL

stby障害 ×

PostgreSQL

Prim

PostgreSQL

Prim↑

昇格

PostgreSQL

stby障害

PostgreSQL

Stby↑

降格

PostgreSQL

Prim↑

昇格

↓反転

××

他にも改善項目:「昇格の高速化」「タイムアウト設定拡充」

従来はログシッピングを使うか、ベースバックアップ再取得

Page 12: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 12

FDW = foreign data wrapper (外部データラッパ) 外部にあるデータをテーブルのようにアクセスする枠組み 強力なシステム間連携手段

postgres_fdw と 書き込み FDW

PostgreSQL

CSVファイル

LDAP server

MySQLODBC JDBC

Oracle Web servicemongoDB

redis

couchDB

PostgreSQL

9.3 から書き込みに対応postgres_fdw が本体付属

Page 13: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 13

postgres_fdw と 書き込み FDW

db1=# CREATE SERVER db02srv FOREIGN DATA WRAPPER postgres_fdw OPTIONS (port '5432', host 'dbhost02', dbname 'db02');

db1=# CREATE USER MAPPING FOR user1 SERVER db02srv OPTIONS (user 'user1', password 'secret');

db1=# CREATE FOREIGN TABLE remote_t1 (id int, v text) SERVER db02srv OPTIONS (schema_name 'public', table_name 't1');

サーバ、 ユーザマッピング、 外部テーブル、のモデル 外部テーブルは通常テーブルと同様に読み書き可能 カスケード可能

COMMIT、ROLLBACK が可能振る舞いは各FDW の実装次第

(postgres_fdw の例)

- 別バージョン対応

- リモートで条件 絞り込み

- トランザクション 処理に制限

Page 14: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 14

マテリアライズドビュー

結果を保持するビュー 基本機能のみ提供 提供されない機能:

× 差分更新

× 自動リフレッシュ

× プランナでのクエリリライトtable

table

table

[view]SELECT結果

結果を返す

条件選択、結合、集約・・・

[view]SELECT結果

結果を返す

結果を憶えておく

ビュー参照

「リフレッシュ」で、元テーブルから再取得

マテビュー参照

db1=# CREATE MATERIALIZED VIEW mv_abalance AS SELECT aid, abalance FROM pgbench_accounts ORDER BY abalance LIMIT 10;

db1=# REFRESH MATERIALIZED VIEW mv_abalance;

Page 15: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 15

並列pg_dump

ダンプを並列実行する 以下のとき高速化できる

複数テーブルがある 複数CPUコアがある

ディスクI/Oに余裕がある

-j で並列数を指定

並列でも単一スナップショットが保証される

ディレクトリ形式

スタンバイでは不可

pg_dump 所用時間 (sec)

2テーブルのデータベースを2CPUマシンでダンプ 直列: pg_dump -j 1 -Fd -f out.d db1 2並列: pg_dump -j 2 -Fd -f out.d db1

直列 2並列0

20

40

60

80

100

120

140

160

sec

理想的なケースでは所要時間が1/N になる

Page 16: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 16

高速データローディングを実現するオプション COPY後の初回参照時の処理が不要になる

トランザクション隔離動作としては例外的な振る舞いになる COMMIT前に見えてしまう

COPY FREEZE

db1=# BEGIN;db1=# TRUNCATE t_huge; db1=# COPY t_large FROM '/tmp/t_huge.copy' FREEZE;db1=# COMMIT;

データロード 参照0

10,000

20,000

30,000

40,000

50,000

60,000

70,000

COPY FREEZE効果

FREEZE

FREEZE無し

実行

時間

(ms

)データロード4000万件

初回参照SELECT count(*)

FREEZE有

FREEZEなし

(ms)

Page 17: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 17

外部キー制約

ロック競合軽減 ロックタイムアウト

競合の少ない行ロックが追加された SELECT ... FROM ...

FOR KEY SHARE 主キー以外のカラムに対

する UPDATE とロック競合しない

外部キー制約で使われる

SELECT ... FROM ... FOR NO KEY UPDATE 「FOR KEY SHARE」と競合しない「FOR UPDATE」

タイムアウト設定が可能に

lock_timeout 設定

従来は、 WAIT か NOWAIT の二択

db1=# BEGIN;db1=# SET LOCAL lock_timeout TO '10s';db1=# UPDATE t SET c = 'xx' WHERE id = 12345;ERROR: canceling statement due to lock timeout

(例:t に対するロック待ちの場合)

Page 18: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 18

暗黙の

更新可能ビュー

シンプルなビューは、 作っただけで更新できる

INSERT、 UPDATE、 DELETE は参照元テーブルに適用される

従来は手動でRULE や TRIGGER を定義して上げる必要があった

ビューで再帰SQLを記述

再帰ビュー

CREATE RECURSIVE VIEW v (n)AS SELECT 1 UNION ALL SELECT n+1 FROM v WHERE n < 3;

db=# SELECT * FROM v; n--- 1 2 3(3 rows)

WITH RECURSIVE

構文と同様のことが

記述できる

SELECT ≪カラムリスト≫ FROM ≪単一テーブル≫ WHERE ≪検索条件≫ ORDER BY ≪ソートカラム≫

シンプルなビューとは?:

Page 19: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 19

CREATE、DROP、ALTER にトリガ設定できる

DDL操作の一部制限に

連動した自動操作に

テーブル単位レプリケーションツールでの応用が有力

PostgreSQL死活確認をするクライアントツール

「接続できるか?」を確認

実際には接続しない ホスト、ポートを指定 ユーザ名、パスワード不要 最大接続数が埋まってい

ても大丈夫 プロセスが生きているだけ

ではNG扱い

DDLトリガ(EVENT TRIGGER)

pg_isready

Page 20: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 20

ページ

チェックサム LOBサイズ拡張

テーブル、インデックスデータのバイナリ破損を検知できる 従来は、ヘッダ部分の破損しか検知できなかった

ラージオブジェクトの上限2GB を拡張 従来は、(圧縮後)2GB

を超えるとおかしな動作

     ↓

最大 4TB に拡張WARNING: page verification failed, calculated checksum 61554 but expected 3960

ERROR: invalid page in block 23 of relation base/12896/16466

(エラーメッセージ例)

弊社(SRA OSS,Inc.)

による開発項目

Page 21: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 21

ISO SQL:1999 にある LATERAL構文に対応

FROM句内のサブクエリで左側にあらわれた要素を参照できる

JSON型データむけの 組み込み関数が追加

行データをJSON型として出力する関数のみ

     ↓ JSON配列の各種の操作

表への逆変換 要素取り出し

LATERAL結合 JSON関数 追加

多機能な1カラムデータとして応用できる

SELECT * FROM t1, LATERAL (SELECT * FROM t2 WHERE c2 = t1.c2) v2, LATERAL (SELECT * FROM t3 WHERE c3 = v2.c3) v3;

Page 22: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 22

WALファイル内容を参照するツールが標準付属

用途としては: WALファイルが破損してい

ないかを確認

新たな更新処理が発生したかどうかをデータベース接続することなく確認

トランザクションIDを使った、PITRリカバリ位置決め

pg_xlogdump$ pg_xlogdump \ 0000001300000002000000F5

rmgr: Heap len (rec/tot): 21/ 237, tx: 13238, lsn: 2/F502A4A8, prev 2/F502A440, bkp: 1000, desc: insert: rel 1663/12896/16573; tid 0/1

rmgr: Btree len (rec/tot): 18/ 174, tx: 13238, lsn: 2/F502A598, prev 2/F502A4A8, bkp: 1000, desc: insert: rel 1663/12896/16579; tid 1/3

rmgr: Transaction len (rec/tot): 12/ 44, tx: 13238, lsn: 2/F502A648, prev 2/F502A598, bkp: 0000, desc: commit: 2013-06-06 17:46:32.281513 JST :(後略)

読み解くには、それなりに技術が必要となる

Page 23: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 23

PostgreSQL 9.3 リリース

beta1 時点で 9.3 の大きな機能追加は完結

6/15 に 9.3 系 STABLEブランチ

まもなく 9.3beta2 がリリース予定

2013年秋にリリースされる見通し (例年通りなら・・・)

HEAD

9.3STABLE

2013/6/15Branch

9.3beta22013/6/27 ?

2013/5/139.3beta1

9.2STABLE

2012/6/14Branch

9.2.42013/4/4

Page 24: オープンソースデータベース PostgreSQL 最新動向 … › event_seminar › 2013 › 20130627...2013/06/27  · Title オープンソースデータベース PostgreSQL

Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 24

まとめ

PostgreSQL はオープンソースソフトウェアとして、安定した開発体制を維持しています

PostgreSQL 9.3 には、多数の機能拡張が含まれています

ご清聴ありがとうございました。ご質問を承ります。