Hatena::ブログ(Diary)

日々の記録 別館

2015-05-31

第5回 PostgreSQL アンカンファレンス


第5回PostgreSQLアンカンファレンス

ということで、今回もPostgreSQLアンカンファレンスに参加してきましたよ。

概要

  • 場所は前回と同様、アシストさんのセミナールーム。今回は参加人数&発表者が多そうなので最初3ルームを用意したけど、最終的な発表枠が2ルーム分だったので、中央のルームは休憩エリアっぽい感じにw
  • Twitterハッシュタグは #pgunconf

PostgreSQLアンカンファレンスとは(前のときの記述のぱくり)
  • 最初に@snaga さんの挨拶があり、その後廊下にあるホワイトボードに付箋紙で発表ネタを発表者がぺたぺた貼っていく。
  • セッションの時間枠は基本20分。
  • 自分が発表するときには、隣で発表しているテーマが聞けないので、どこで発表するのかは、なかなか悩ましい・・・。
  • @kitayama_t 始まり。初めての人が多い。これからプログラムを決めるところ。/

発表枠
  • 発表枠ははこんな感じ。

f:id:nuko_yokohama:20150530135514j:image:w360

  • 後で河原さんが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に今も残る都市伝説
  • 講師は堀川さん。
  • いつも堀川さんの話は排他制御まわりのマニアック&深い話が多いけど、今日は比較的、普通の開発者向けの話だw
  • 最初にlibpqDBT-2の簡単な説明。
  • DBT-2をlibpqで実行するサンプルコードの説明。DBT-2だとカーソル使用⇒FETCH ALL⇒カーソルクローズ。でもカーソルを使わなくてもいいんじゃね?という話。

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が一番良さそう

  • @kkkida_twtr ぬこさん二本目 YCSBベンチマーク JSONB対応してMongoと対決
  • @kitayama_t ぬこ@横浜さんの二つ目、YCSBのお話。JSONB対応版を作ってベンチマーク
  • @kitayama_t JSONB型にpgbenchのSQLを対応させるのはかなり無理矢理感があるなぁ。適したAPI(言語)からのアクセスすべきだと思う。
    • この指摘はまったくのところ、その通りだと思います。

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と同じインフラを使っていますよ。
  • 最初にpostgres_fdwの内部処理に関する説明。リモートの検索結果をタプルに変換する処理が必要になる。
  • ここまでは9.4の話。そして結合時にローカルでの結合を行うという問題がある。リモート側で結合までさせようという話。
  • リモートジョインのプランは海外さんのCustom Joinとセットで提案して採用された。
  • リモートジョインで一番苦労したのは、結合SQLをどう生成するかだったと。
  • 結合の記述方法をどうするか(JOIN句、WHEREで記述?)も厄介だった。
  • 問い合わせのエイリアス記述方法が、リモートジョインSQL生成の簡易化に役に立ったという話。
  • 従来のローカルでJONIする方式と、9.5のリモートジョインSQLと比較すると、リモートJONIをするほうが遅いケースもあるらしい。原因は調査中。データ転送量が関連しているのかも?

PostgreSQLで日本語検索
Postgres Toolkit
XID周回とかVACUUM FREEZEの問題
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の細かい話(大山)
  • 講師は大山さん。
  • まあ、pg_bulkloadのマニュアルのDIRECTモードの説明には、そこまで詳しく書いてないよね(1ページ未満ならWAL書くから動いちゃうよ)。
  • pg_reorgの話。マニュアルとは違って、最初の処理フェーズでもAccessExclusiveとっちゃうよという話。
  • O山さんのスライド外小ネタ。IPv6で設定してレプリケーションが出来なかった(libpqの設定も必要)という話。
  • O山さんの上司?であるO西さんコワイw

JSONBを使ってみた
  • 講師は永安さん
  • Github統計情報をPythonスクレイピング。あるURLを叩くとJSON形式の統計情報が取れる
  • JSONBの生データだと使いづらいので、普通のテーブルに変換して使うと。ふむ。
  • JSONRDBの表にマッピングするための方法論がまだ整備されていないんじゃないかと、永安さんのコメント。今後、JSON/JSONBを検証するときに、ちょっと留意しないとなあ・・・。


インデックスアドバイザの話
  • 講師は河原さん。急遽空きがあったので発表したとのこと。
  • 詳細不明・・・後で聞いてみよう・・・。

その他
クロージング
  • 次回は11月開催らしい。それまでに各自ネタを貯めておけと。
  • (クロージングで話したかどうかは不明。Facebookに書いてあった) PostgreSQLアンカンファレンスの幹事を誰かにやってほしいとな・・・?

懇親会&その後

他の方々のまとめ(見つけ次第、適宜追加します)

お礼

  • 発表者のお名前を教えていただきありがとうございます!>きださん

KodaKoda 2015/06/02 16:58 地震のあとお疲れ様でした。25時帰宅ですか… PL/Pythonとマイグレーションツールの報告の件、簡単ですが書きました
http://kenpg.bitbucket.org/blog/201506/01.html

nuko_yokohamanuko_yokohama 2015/06/03 19:10 まとめページ、ありがとうございます!
blogにも反映しておきます。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/nuko_yokohama/20150531/1433071226
リンク元