第27回しくみ+アプリケーション 勉強会

ということで、http://www.postgresql.jp/wg/shikumi/shikumi27/@アキバへ行ってきましたよ。
今回の会場は秋葉原駅から徒歩1分というアクセスしやすいポイント。
そのためか(もちろん発表テーマの面白さもあるが)いつもよりも参加希望者は多かった(最終的には59名?)。
実際に会場に来た人も50名近くいたのかな?会場は満席だった。

なお、ツイートまとめ(ハッシュタグ #jpug_study )は、誰かがtoggeterあたりでまとめてくれんかなーということで、今回はまとめない。

プレ勉強会

実は今回から勉強会の前に、もうちょっとコアな技術に関する勉強会をしようということでプレ勉強会を行うことになった。
といっても今回はテーマ決め。澤田さんが成り行きで(?)司会進行を努めて、当面の進め方を決める。
テーマとして、I久保さんが以前作成した勉強会資料をベースにして、それを最新化するという案や、ジム・グレイ本(トランザクションの例の分厚い本)の読書会、MariaDBのコード読みなど幾つか案が上がったが、まずはI久保さん資料のアップデートをベースとして、VACUUMのコード読みをテーマにすることにした(講師は澤田さん)。

というか、I久保さん、最近どうしてるんだろう・・・

澤田さん、頑張るなー。まだ2年目の若手とは思えん。

勉強会本題

14:00から勉強会の本題開始。
今回のテーマは

というなかなか濃い話。

性能測定道

非常に得ることの多かったセッションだった。漠然と性能測定をやっていた自分を恥じる。

  • はやみずさん、性能測定は趣味なのか・・・w
  • 性能測定の3つの要素。モデリング、測定、シミュレーションが性能測定の3つの大きな柱。
    • 仕事では予算・期間など様々な制約があるんだけど、実際、モデリングなんかはほとんどやってなくて、計測してから悩む、みたいなことが多かったからなあ・・・。そもそもやり方が間違っていたということだ。
  • 性能測定は技芸=ARTである。ベンチマーク動かせば良いというものではない。
  • モデリングなき性能測定は無価値!(信長@戦国無双風に)
    • これを覚えるだけでもこのセッショに参加した価値がある。
  • 計測作業そのものはモデリングの検証にしかすぎない(でも楽しいけど)。
  • メモりアクセスの速度はHDDのアクセス性能などプリミティブな部分の測定の話は非常に面白い。
  • 測定のためには形振り構わず方法を検討する。
    • リーマンには出来ないことを平然とやってのける!そこにシビれる!あこがれるゥ!
    • 消費電力の測定のために室温によって影響されやすい昼間帯ではなく深夜帯に行うとか・・・そこまでするか。
    • 大学の研究室っておいらが考えているより遥かにシビアな世界だったのか・・・。ある意味、労働法に守られていないから結構無茶が効く世界なのかも。
  • モデリング、計測、シミュレーションは相互に検証することが重要。少なくとも2つはやって相互検証が必要。
  • 次回の勉強会は性能測定の応用編。次回も楽しみでござるよ。
  • QA. モデルと測定結果のずれってどのくらい出るものか? →まあ、測定対象次第ではあろうなあ・・・。
  • QA. リアルなアプリケーションは簡単にモデル化できないというのは、やはり皆が持っている悩み。はやみずさんも悩んでいる。
  • QA. 性能測定道は適性なのか、研究室で叩き込まれるものなのか?→性能測定の基本方式はある程度は研究室で指導してもらえる。
  • QA. probeの埋め込みで性能測定結果を阻害するようなケースってどうしてる?→ループ処理をアセンブラで展開!・・・など頭を振り絞って対策するしかない。 うーん、測定ってほんど凄い世界だ。
pg_bigm
  • 今回は2回目。
    • 意外と?前回の発表を聞いていない人が多いので、最初は前回の簡単な復習。
    • もしかするとpg_bigmを日本で一番使い倒しているは俺である可能性が微レ存(俺でなければ多分、K原さん)
    • ほりかわさんの質疑で補足説明。pg_trgmでは先頭は2文字まで空白を入れるが、末尾は1文字空白のみしか入れない。
  • その後はpg_bigmとpg_trgmの性能比較検証結果。
    • はやみずさんの発表の後だと、性能測定結果を出すのはちょっと辛いわなw
  • インデクスサイズはpg_bigmのほうが小さい。それに伴いインデクス構築時間も短い。
    • 多分、bigmのほうが重複度が高く、キー数が少なくなるから。
  • 検索はなかなか興味深い結果が。
    • 文字数による検索性能の比較。1,2文字はbigmが圧倒的に早いが、3文字以上だとtrgmのほうが有利。ただし、bigmではある程度のチューニングが可能。→キー内のbigm文字列数をパラメータで調整可能。
    • pg_bigmのほうが1つのキーにぶら下がるTID数が多くなる傾向にあるため、それが検索に影響する。TID参照数が多いことが検索性能に影響しているのではないか。という仮説。pg_bigmもpg_trgmと比べて全てにおいて強いわけではない。
    • @kasa_zip 基本的にn-gramはn文字の検索がもっとも得意なので、bigm が3文字以上の検索文字で弱いというのは自然だなー
  • データ挿入性能。WALの発生量が小さい。処理時間も短い。WALが小さいのはキー数、処理時間についてはtrgmのハッシュ化が影響?
  • pg_bigmのサポート関数の説明。likequery, show_pigm
    • likequeryは結構便利だよなー。俺も「ゆるい検索」のいろんなパターン(類語検索、ツリー展開検索)で使わせてもらっている。
  • gin_key_limit、enable_recheckパラメータの説明。gin_key_limitのデフォルトは0(全て使う)、enable_recheckは実運用では必ずON(デフォルト)にすること。
  • 検索のデモは青空文庫(500MB)を使用。インデクスが使われている実行計画の表示。seqscanプランとの性能比較。そして1,2文字でもインデクスが使われているというデモ。
  • pg_bigmの新バージョンがリリースとな!?
    • 新バージョンは英語版Doc対応、9.3対応(betaでも動いていたけど)、trgmの同一DB共存。
      • 同一DB共存はおいらの問題点指摘が反映されたようなので、ちょっと嬉しい。
    • 類似度検索は開発中なのか(´・ω・`)
      • 澤田さんパッチ版、おいらの環境では動いているから取り込んでもらってもいいのになー。
  • QA. gin_key_limitの誕生秘話・・・w 開発途中に性能検証を行った結果入れることにした。
  • QA. スニペット対応はできそう?→pg_bigm単体では難しい。Ludiaとの併用ならでいるのでは。(ぬこ質問)
    • @kasa_zip スニペット用のユーティリティないの? -> あるよ、Ludiaの関数使ってくれればできるよ!あれ、文字列とキーワードからスニペットしてくれるんで。
  • QA. gin_key_limitの取り方は?ソート順にした。ちょっと検証したけど、結局シンプルなコードにするために先頭から取得するようにした。
    • @kasa_zip gin_key_limitはチョイスするキーワードが大事だよね。出現頻度とかTIDリストの短い順とか指針はありますね。

PostgreSQL開発事始め

3本目の発表は花田さんのPostgreSQL開発のおはなし。
コア開発の話なのでレベルは高いが非常に興味深い。

  • 最初は9.3の主な変更点。というかコミッタ、メジャーコントリビュータなどの紹介。もちろん花田さんも載ってる。
    • @kaza_zip 花田さんは普通に Contributor というか Major Contributor だと思うけどなー Developers meeting にinvite されてるしー
  • PostgreSQLのリリースノートに載るのは基本的に個人名。企業名は入らないのが普通。
    • @kasa_zip そういえば大きな機能入れた際に"スポンサーありがとう"的なこと言う人、少ない気がするな・・あまり無いのかな
    • @kasa_zip でも、ニュースリリースで主要な貢献をした企業名に言及することはありますね。
  • メジャーリリースまでの開発の流れの説明。そういえば、もう9.4開発も当然ながら始まってるんだよなー。
  • CommitFestの説明。以前はそれがなかったので、パッチが埋もれてしまったりすることがあった。CommitFest&CommitFest Manager導入で、ある意味フツーの開発にちょっと近づいた感じなのかな。
  • へー、CommitFest用の専用のWebアプリがあるのか。コミュニティアカウントを登録すれば誰でも参加できる。
  • CommitFestの流れ。Future→Openの期間中にパッチをアップする→In Progressになるとパッチは締め切られてレビューに徹する→Close
    • @choplin ちょうどin progressのcommit festが
  • パッチの状態遷移。Needs Review→Waitng on Author→Ready for Commiter→Commited。Returned with Feedbackは現CommitFestには入らない。
  • レビューが出来ないとパッチを出すことが出来ないという文化のコミュニティ。互助の精神ということか。
  • @h141gm レビューの説明、日本語ドキュメント http://wiki.postgresql.org/wiki/Reviewing_a_Patch/ja
  • SQL標準はレビュー観点にも入っているから、やっぱりPostgreSQLではSQL標準を重視はしてるんだな。
  • 必要なツール。gcc, bison/flex/perl, DoocBook, git, エディタ。gitで1セット落とすと300MBくらいのソースセットになる。
  • 開発時にあると便利なconfig指定。 --enable-cassert, --enable-debug, CFLAGS=O0(最適化無効化)
    • @hayamiz --enable-depend もつけると便利
  • まずはエグゼキュータやSQLコマンドが最初に読むにはおすすめ。この辺の知識は自分のところの勉強会に展開する上でも重要な情報。
  • gdb上でのデバッグの話。Nodetagで構造体の種類を(enum)示している。gdbでcastかけてprintする小技。0x7f・・・の値(palloc→pfreeで解放された領域がこれで埋まる)などの話。
  • 提案時のポイント。まず設計。いきなりパッチを投げるな。コミッタレベルでも蹴られることは多々あるので蹴られても挫けない心。とにかく議論という文化。相手の意見はダメ出しではない(ML上ではどうしても強い言い方になりがち)。
  • hackers-jp のML最近、ほとんど動いてない・・・らしい。MLをもっと活性化させましょうという話。
  • QA. 性能検証はコミュニティではどうやっているのか。→開発者ベースで変更前後での議論と検証はする。もしかするとBuildfarm上でpgbenchが動いているのかも。
  • QA. 誰をお手本にするといいの?→Tom LaneやRobert Haasなどは観点などが手本になる。要注意な人も・・・ごにょごにょ。
  • QA. Hackers-MLの読み方。どこから読めばいい?→花田さんは関連のあったプランナ・エグゼキュータは見る。スレッド先頭のメールを見て判断。あとは参加している人で判断することも。
  • QA, Hackers-MLの膨大なメール、いつ読むの?→電車内で読むとか隙間時間で。あまりがっつり時間はとらなかった。
発表後
  • 発表終わり。最後、高塚さんからPGCon2013の呼び込みw
  • プログラムは確定。
  • LTはまだ応募できるみたいだよー。俺も本当にくだらんネタならいくつか持ってるけど・・・w

懇親会

ある意味、ここからが本番と言えるw
今回は14名参加。場所は月の雫アキバ店。秋葉原駅から直近なのはいいね。
二次会も12名参加。場所は同じビルの7Fw 懇親会会場に困らないのもアキバ開催のいいところかもw
懇親会でぬこが耳に挟んだ or 参加した話題をいくつか・・・
重要な注意:飲み会での話なので本気にしないように

  • はやみずさんが如何に測定王子であるかという話。
    • 針鼠のケージの気温管理をスマホアプリで自作してるしw
    • ハードを弄るのが楽しいと測定ってさらに楽しくなるんだろうな。
  • 【重要】PostgreSQL女子を如何に増やすべきか。
    • 今回の勉強会参加者はすべて野郎でした・・・orz
      • ちかちゃん、来れなかったんだよな(´・ω・`)
    • 今回はRubyコミュニティの方も来ていたので、いろいろ参考にさせてもらう。Rubyなんかも女子会があるっぽい。
    • F井さんにも「PostgreSQLで10Kgダイエット!」みたいなアピールでPostgreSQL女子拡大に頑張ってもらおう。
    • Oracle女子は結構いるらしい・・・。ラーメンデータベースで有名な某氏が日本Oracleの中の人なので、今度オフ会で聞いてみよう。
    • PostgreSQLの公式ロゴが女子受けしないのではないかという話。
      • あれか、「ちょいWALオヤジ」みたいな感じのアピールが必要なのか(違)
    • 澤田さんの女子受けが良いらしいので、腐女子向けにさらにプッシュする(少し誇張している)
    • 澤田さん女装化計画
  • K原さんと全文検索におけるランキングについてちょっと議論。でも結論はないのよねー。
  • JPUG界隈の2つのミステリー。以前commiterになったI垣氏の消息と、maumau氏の正体。
    • I垣氏は最近blogの更新があったらしい。
    • maumau氏、実は勉強会にいたりして・・・w ホント誰なんだろうね。

おまけ

  • そういえば初めてお会いした方(ISHII Hidenori)に、「ぬこさんですよね?」と聞かれた。なんで分かったんだろう・・・まあ来ていたTシャツがアレゲな猫のTシャツだったから分かったのかもしれないが。