第5回 PostgreSQL アンカンファレンス
第5回PostgreSQLアンカンファレンス
ということで、今回もPostgreSQLアンカンファレンスに参加してきましたよ。
概要
- 場所は前回と同様、アシストさんのセミナールーム。今回は参加人数&発表者が多そうなので最初3ルームを用意したけど、最終的な発表枠が2ルーム分だったので、中央のルームは休憩エリアっぽい感じにw
- @s87 PostgreSQLアンカンファレンスの会場到着?。今回は封印が解かれるらしいです。 #普段より一部屋多い
- Twitterハッシュタグは #pgunconf
PostgreSQLアンカンファレンスとは(前のときの記述のぱくり)
- 最初に@snaga さんの挨拶があり、その後廊下にあるホワイトボードに付箋紙で発表ネタを発表者がぺたぺた貼っていく。
- 各セッションの時間枠は基本20分。
- 自分が発表するときには、隣で発表しているテーマが聞けないので、どこで発表するのかは、なかなか悩ましい・・・。
- @kitayama_t 始まり。初めての人が多い。これからプログラムを決めるところ。/
発表枠
- 発表枠ははこんな感じ。
- 後で河原さんが17:00からの右トラックで追加発表。
開始時間 | 左トラック | 右トラック |
14:00 | ポスグレ9.5の新しいGROUP BY(国府田さん) | HOW TO < 今日(河原さん) |
14:20 | SymmetricDSの話(高塚さん) | DBT-2に今も残る都市伝説(堀川さん) |
14:40 | 9.5 Custom Scan/Join(海外さん) | pl/pythonでWEBアプリ(山田さん) |
15:00 | JSONベンチマークネタ2本(ぬこ@横浜) | fsyncと9.4.2(ミカエルさん) |
15:20 | 休憩 | 休憩 |
15:40 | postgres_fdwでリモートジョイン(花田さん) | PostgreSQLで日本語検索(すとうさん) |
16:00 | Postgres Toolkit(永安さん) | XID周回とかVACUUM FREEZEの問題(澤田さん) |
16:20 | pgAdminIIIを使おう!(チョコレートバーさん) | PostgreSQL監査(石井さん) |
16:40 | ポスグレ向けのマイグレーションツール(桑田さん) | pg_bulkload, pg_reorgの細かい話(大山さん) |
17:00 | JSONBを使ってみた(永安さん) | インデックスアドバイザの話(河原さん) |
発表内容
自分が聞いていないセッション&自分が話していたセッションについては、他の方のTweetで補完します。
ポスグレ9.5の新しいGROUP BY
- 講師は国府田(KODA)さん。
- スライド(PDF)はこちら⇒PostgreSQL 9.5 の新しいGROUP BY
- @y_yagi GROUP BY のオプション増えてるのか. ROLLUPとかなんだろ.
- @yancya GRUOP BY の列指定、番号で出来るの… したくないが…
- @y_yagi CUBE: 各列で絞る or 絞らないの、全組合せ ROLLUP: 片方向に絞る組合せ なのか。なるほど。
HOW TO < 今日
- 河原さん@NTTソフトウェアの発表。
- 河原さんの発表「HOW TO < 今日」 今日より古い日付を如何に高速に算出するのかというテーマ
- 実務であったやたら遅い日付比較の話。to_char()とnow()を全件かけるとめっさ遅いというトラブルシューティングがあった。
- 次の例は col < CURRENT_DATE の例。速くはなったが、まだ改善の余地がある?
- col < date_trunc('day', now()) の例。CURRENT_DATEとあんまり変わらない。そもそも今日を取得する関数がそもそもレコード数分呼ばれてしまうのが問題だもんなあ。
- WITHを使ったトリッキーな方法・・・これは可読性的に、ツラい
- 'today'::date なんて出来るのか!マジで知らんかった。なお、'yesterday', 'tommorow'も出来るらしい。どこで定数に展開してるんだっけ。
- ちょい地味だけど、面白い発表だった。さすが、Gold聖闘士。
SymmetricDSの話
- 講師は高塚さん。
- @y_yagi SymmetricDSの話し. これかな / SymmetricDS | Open Source Database Replication
- @surumegohan 左トラック:マイグレーションの切り札 多機能データ同期ツール SymmetricDSを使ってみましょう
- (ぬこ) もしかするとsyncdbとの比較が必要かなあ。
DBT-2に今も残る都市伝説
9.5 Custom Scan/Join
- 講師はPG-Strom開発者でもある海外さんの発表。資料はこちら ⇒ PostgreSQL v9.5の新機能~CustomScan/Join Interface
- scan ⇒ set_rel_pathlist_hook,Join ⇒ set_join_pathlist_hook,Others ⇒ planner_hook という実行計画に介入できるhookの話。
- @kitayama_t Custom Scan/Join Interface で特定の条件では列志向見に行くとか色々できそう。
- 海外さんがやりたいのはGPUに処理させるためのプラン介入。
- PostgreSQL 9.5では2つhookが追加された。set_rel_pathlist_hook,set_join_pathlist_hook
- set_join_pathlist_hook内で俺々JOINを実装し、その実行コストと既存のJOINと比較して低ければ、俺々JOINが選択される。
- Executorコールバックの話。その後、CustomScanによるJOINの置換えの話。Join後のリレーションをスキャンする、というCustomScanを作るという話か。
- さっきのCustomScan時には結果セットのレコード数は時と場合によって異なる。さてどうするか。⇒2つの列を両方もった仮想表にアクセスする、ということをプランナに伝える必要がある。
- @yancya GpuPreAgg, GpuJoin, GpuScan とか、夢いっぱいだ
- これで何が嬉しいのかというと、GPUアクセラレータを使った処理をプランに組み込めるということ。
- 9.5開発中に、Child-pathのインタフェースが変えられたのでコミュニティと議論中とのこと。
- Q&A: カスタムプランの同時実行に関する議論?
- (海外さんコメント) @kkaigai 一応フォローしておくと、Funnel Executorが入った時点でBackground Worker側で同一のCustomScan/Joinが再現できなくなるため、outfunc/readfuncの対応を入れようとは思います。
- @kkkida_twtr @nuko_yokohama カスタムスキャンの応用 表Aと表Bを結合したマテビューがあればそちらをscanする →Oraのクエリリライト。こちらは誰かが作れば、の話。
pl/pythonでWEBアプリ
- (こっちは聞いてなかったので、どなたかフォローおねがいします・・・)
JSONベンチマークネタ2本
- 講師は俺。本当はそれぞれ20分発表用の資料のつもりで作ったけど、これを20分で2本話すという暴挙にw
- @yancya 9.5 から JSONB に部分更新インターフェース入りそうなのか
- @y_yagi お、PostgreSQL 9.5 でJSONBの部分更新が入るかもしれないのか
- @kkkida_twtr ぬこさんの9.5 JSONBもろもろ。ベンチマークとか、JPUG合宿でやった続きもありそう!
- @y_yagi XMLつらい
- @surumegohan XMLのpgbenchモデル 見るのも嫌だw
- @kkkida_twtr pgbenchのクエリをXML、hstore、JSON、JSONB対応に書き換え。hstoreとJSONBでは部分更新ができるよ
- @y_yagi シンプルなkey/value型のデータ扱うなら、今の所はhstoreが一番良さそう
fsyncと9.4.2
- 講師はミカエルさん。
- 5/22にリリースされたけど、すぐに問題が発覚して実質上、黒歴史化しそうなマイナーバージョンアップの問題の件、だと思う・・・
- ちょうどこの時間帯は俺も発表タイムだったので、詳細は全く聞けなかった・・・。
- 休憩タイムにミカエルさんに聞いたら、6/4の修正版リリースって間に合うのか微妙な雰囲気だったなあ・・・
休憩
- 15:40まで休憩タイム〜
postgres_fdwでリモートジョイン
- 講師はpostgres_fdwの主開発者の花田さん。
- @kkkida_twtr 花田さん postgres_fdwでリモートJOIN 個人的にリモートJOINの実装を心待ちにしていましたのでこの話を聞けるのを楽しみにしてきました。
- @kkaigai postgresql_fdwのリモートJoinはほとんどCustomJoinと同じインフラを使っていますよ。
- (ぬこ) PG-Strom開発者とpostgres_fdw開発者の、こーゆーやりとりが聞けるのもPostgreSQLアンカンファレンスの醍醐味の一つですね。
- 最初にpostgres_fdwの内部処理に関する説明。リモートの検索結果をタプルに変換する処理が必要になる。
- ここまでは9.4の話。そして結合時にローカルでの結合を行うという問題がある。リモート側で結合までさせようという話。
- リモートジョインのプランは海外さんのCustom Joinとセットで提案して採用された。
- リモートジョインで一番苦労したのは、結合SQLをどう生成するかだったと。
- 結合の記述方法をどうするか(JOIN句、WHEREで記述?)も厄介だった。
- 問い合わせのエイリアス記述方法が、リモートジョインSQL生成の簡易化に役に立ったという話。
- 従来のローカルでJONIする方式と、9.5のリモートジョインSQLと比較すると、リモートJONIをするほうが遅いケースもあるらしい。原因は調査中。データ転送量が関連しているのかも?
PostgreSQLで日本語検索
- 講師はすどうさん。
- @y_yagi PGroongaとpg_bigmのベンチマーク結果 https://github.com/groonga/wikipedia-search/issues/2
- @yancya PGroonga のインデックス作成、めっちゃ速い
- @y_yagi PGroongaとpg_bigmのベンチマーク結果のサマリーを作る https://github.com/groonga/wikipedia-search/issues/3
- @yancya pg_shard とは
- pg_shard、名前は聞いたんですけど、全然試せていません・・・
- これとJSONBを組み合わせて、MongoDBシャードと同じようなことが出来るのか、試してみたいのだが。
- @y_yagi 知らなかった / PostgreSQL extension to scale out real-time reads and writes https://github.com/citusdata/pg_shard
- @yancya “pg_shardとPGroongaを使ったレプリケーション対応の高速日本語全文検索可能なPostgreSQLクラスターの作り方 - ククログ(2015-05-18)”
- @ktou 「PostgreSQLで日本語全文検索 - LIKEとpg_bigmとPGroonga」の内容は http://www.clear-code.com/blog/2015/5/25.html … にまとまっています。
Postgres Toolkit
- 講師は永安さん。
- スライド⇒Postgres Toolkitのご紹介
- Postgres Toolkit=サーバを運用・管理するためのスクリプト・ツールのコレクション
- Postgres ToolkitはほとんどがPyton、一部Cで記述されたものあり。 (最初、Perlって書いてたら、@snaga さんからちげーよ、と指摘受けたw)
- Postgres Toolkitはcurl経由でネットワークインスコできる。
- Postgres Toolkitのネットワークトキャプチャツールは、そのへんに疎い自分にとっては助かりそう。
- 後半はPostgres Toolkitのデモ。
- pt-session-profilerはtcpdumoと組み合わせているのか。
- pt-snap-statementはpg_stats_statementのスナップショット間の差分を見るためのもの。
- @kkaigai 外部からPostgreSQLプロセスを覗き見て、今、プランノードのどの辺を実行中なのかをトレースできる仕組みがあればなぁ…。
- pt-verify-checksumはオフラインでバックアップファイル等のチェックサムを確認するもの。
XID周回とかVACUUM FREEZEの問題
- 講師は澤田さん。
- スライド⇒PostgreSQL: XID周回問題に潜む別の問題
- うーむ、ツイートがない・・・後で、スライドがアップされると思うから見てみるか・・・
pgAdminIIIを使おう!
- 講師はチョコレートバーさん。
- @surumegohan きわどい小技が多い・・w 裏ワザみたいだw
- (詳細、誰かフォローお願いします・・・)
PostgreSQL監査
- 講師は石井さん。
- アイエエエ!REVERT!REVERTナンデ!
- 5/29にpg_auditがコミュニティによってREVERTされたらしい・・・むむむ。
- ちょっといろんな意味で自分的にもツラいw
- @yancya 「ログで出力されるテーブル名にスキーマ名が修飾されない」これは厳しそうだ
- そういえば、pl/pgsql内のSQLがどう取得されるのかって、まだ試してなかった気がするな。> pg_audit
- pg_audit.log_levelはデバッグつーか、リグレッションテスト用って位置づけか。NOTICEを指定してリグレッションを実行すると。
- 現状のpg_auditを使ってできないこと。スーパーユーザの監査、OSユーザの監査。
- @yancya 「auditd に流したら堅いのでは」
- ログの出力先は?PostgreSQLログなので、PostgreSQLがハックされると改竄し放題。
- INSERTのみ可能なファイルに書き出すとか。
- 監査ログの出力先を(audit.d)にするとかの工夫はできる?
- @yancya 「そもそも監査ログとは」 ヤバい話になってきたw
- single-user モードで実行された場合は、ログが出力されないなどの問題もある。
- 海外さん「セキュリティやってる人はだいたい性格が悪いwww」監査って難しいね・・・
- 監査そのものに対する要件が満たせてないんでは?というやや厳し目のツッコミが目立った。
ポスグレ向けのマイグレーションツール
pg_bulkload, pg_reorgの細かい話(大山)
JSONBを使ってみた
インデックスアドバイザの話
- 講師は河原さん。急遽空きがあったので発表したとのこと。
- 詳細不明・・・後で聞いてみよう・・・。
その他
- @snaga Built a 4-node PostgreSQL cluster with Raspberry Pi 2! Way cool! :)
クロージング
- 次回は11月開催らしい。それまでに各自ネタを貯めておけと。
- (クロージングで話したかどうかは不明。Facebookに書いてあった) PostgreSQLアンカンファレンスの幹事を誰かにやってほしいとな・・・?
懇親会&その後
他の方々のまとめ(見つけ次第、適宜追加します)
- @surumegohan さんのまとめ するめごはん日記: PostgreSQLアンカンファレンス@東京に参加しました
- 国府田さんのまとめ Bitbucket | The Git solution for professional teams
- toggeterまとめ PostgreSQLアンカンファレンス@東京(2015/5/30) - Togetter
お礼
- 発表者のお名前を教えていただきありがとうございます!>きださん