View
14
Download
0
Category
Preview:
Citation preview
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved.
1
オープンソースデータベースPostgreSQL最新動向のご紹介
PostgreSQL最新動向&活用事例セミナー
2013-06-27 14:10~14:50
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 2
TOC
PostgreSQL の概要
次期バージョン PostgreSQL 9.3 のご紹介
講演者 SRA OSS, Inc. 日本支社マーケテイング部
PostgreSQL技術グループ長 高塚 遙
主として 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開発に時間を割く技術者を提供している企業がいく
つかある/その企業群も少しずつ変遷している
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...
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
)
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 というオープンソースの追加モジュールが強力
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 8
PostgreSQL 9.3 のご紹介
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トリガ
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 10
ストリーミングレプリケーション
タイムライン追随
PostgreSQL
Prim
PostgreSQL
Stby
WALファイル
ストリーミングレプリケーション
ログシッピング
PostgreSQL のレプリケーションはどんなもの?
タイムライン(時系列) とは? リカバリするごとに +1 されるメタ情報
PostgreSQL
stby
PostgreSQL
stby
カスケード可能
1対多 可能
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↑
昇格
↓反転
××
他にも改善項目:「昇格の高速化」「タイムアウト設定拡充」
従来はログシッピングを使うか、ベースバックアップ再取得
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 が本体付属
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 の例)
- 別バージョン対応
- リモートで条件 絞り込み
- トランザクション 処理に制限
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;
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 になる
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)
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 に対するロック待ちの場合)
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 ≪ソートカラム≫
シンプルなビューとは?:
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 19
CREATE、DROP、ALTER にトリガ設定できる
DDL操作の一部制限に
連動した自動操作に
テーブル単位レプリケーションツールでの応用が有力
PostgreSQL死活確認をするクライアントツール
「接続できるか?」を確認
実際には接続しない ホスト、ポートを指定 ユーザ名、パスワード不要 最大接続数が埋まってい
ても大丈夫 プロセスが生きているだけ
ではNG扱い
DDLトリガ(EVENT TRIGGER)
pg_isready
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.)
による開発項目
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;
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 :(後略)
読み解くには、それなりに技術が必要となる
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
Copyright © 2013 SRA OSS, Inc. Japan All rights reserved. 24
まとめ
PostgreSQL はオープンソースソフトウェアとして、安定した開発体制を維持しています
PostgreSQL 9.3 には、多数の機能拡張が含まれています
ご清聴ありがとうございました。ご質問を承ります。
Recommended