PostgreSQL Unconference 3rd @市ヶ谷

ということで今回もPostgreSQL Unconferenceに行ってきましたよ。

概要

  • 会場は前々回、前回と同じくアシスト本社のセミナールーム。
  • 30人くらいは来ていたかな。
  • 今回は部屋を2つに分けて進行。
  • 13:40くらいから参加者が適宜テーマを付箋紙に書いてホワイトボードに貼り付けていく。
  • セッションは14:00開始。終了は17:00頃。
  • 各セッションは約20分間。質疑はあったりなかったり。
  • 終了時点のセッション表


セッション内容

  • 2つに区切られてるから、基本的には片方しか聞けないのよね・・・。
DB2 BLU vs Postgres
  • 14:00-14:20 左側
  • 永安さんの発表
  • 別件で昨年12月にDB2 BLUというDB2の列指向機能を使ったベンチマークをやっていたので、それの簡単な報告と、PostgreSQLとの比較を簡単にしてみたというもの。
  • BLUだとかなり圧縮が効く。
  • Non-BLU/BLUEの実行時間比較。検索の平均時間は平均約5倍、最大20倍の向上。ロード時間はさほど変わらない。クエリ実行時間はけっこうばらつきがある?
    • (2回め以降はメモリに乗っているのでは?という見解)
  • BLUアクセラレーションによりレスポンスタイムの維持もできるようになる。
  • PostgreSQL 9.3とDB2 BLUとの(禁断の)比較。ディスクは両方共1本構成。
    • DB2と比較するとPostgreSQLのデータサイズのほうが大きい。これがDBT-3の検索性能にも効いてくる?
    • PostgreSQLの検索レスポンスを比較すると、DB2のパラレル化だけでも7倍、BLUが加わると20倍以上の向上効果がある・・・むむむ。
  • BLUにすることでI/Oが減る⇒CPU依存度上がる⇒コア数増やすといいかも!(コストもかかるが・・・)
pg_rmanバックアップ・リカバリ
  • 14:00-14:20 右側
  • パキエルさんの発表。
  • (yancyaさん) pg_rman 楽そうだな
SSL圧縮
  • 14:20-14:40 左側
  • 河原さん@NTTソフトウェアの発表
  • まずいきなり自社セミナーの宣伝w (と、他人事のように書いてみる)
  • PostgreSQL 9.1まではSSL圧縮がデフォルトで使われていた。9.2で無効化オプションがついた。
  • が、実はlibpqでは有効になっているものの、opensslライブラリでは、デフォルトでSSL圧縮が無効になっている⇒つまり実は圧縮されていないことが判明。
    • 環境変数OPENSSL_DEFAULT_ZLIB=1 に(クライアントもサーバ側も)設定しないと圧縮は有効にならない。
  • で、SSL圧縮ってやったほうがいいの?
    • よほどNWが貧弱でない限りSSL圧縮しないほうがいい、という見解。
    • セキュリティ観点でも(CRIME attack防止の意味)圧縮しないほうがいいかも。
IMSC
psqlの起動画面&時系列データ型
  • 14:40-15:00 左側
  • 私の発表2本。
  • psqlの起動画面
    • .psqlrcをいじって固定のロゴ、ランダムなメッセージ、波動エネルギーによる起動(シェル機能の利用)の3つを見せるだけというもの。
    • こんなしょーもないネタでもアンカンファレンスなら発表OKなので、今回発表しなかった人も是非とも次回は発表を!
  • 時系列データ型
    • 列値に更新履歴を持って世代番号による取り出しや、未来時刻を指定してそのときに自動的に評価される値が変更される、時系列データ型のプロトタイプの説明。
    • 反応が(会場もツイートも)あまりなかったので、ちょっと(´・ω・`)ショボーン
    • (yancyaさん) 毎度、ぬこさんのネタは面白いなw
  • 私の発表が2本で20分しか使わなかったので、15時からの枠(左側)が空いてしまう事案が発生。
  • ということで、急遽、海外さんのCUSTOM SCAN APIが15:00から開始に。
ALTER SYSTEM 9.4
  • 14:40-15:00 右側
  • 自分が話している時間帯だったので、詳細不明・・・
  • (笠原さん) ALTER SYSTEMを利用すると、replicationのモード切り替えをSQLで実施できるのでらくちん!9.4から!
  • この機構自体は石井さんのツイート(だったかな?)でちょっと見た記憶はあるが・・・
CUSTOM SCAN API(CSA)
  • 15:00-15:20 左側
  • 海外さんの発表。
  • 今回の目玉発表の一つ、と自分では思っている。
  • CUSTOM SCAN APIは、EXTENSIONで独自のスキャンや結合を乗っ取るもの!
    • 俺々SCANや俺々JOINを作れる人がどれだけいるのかはさておき。
  • 既存のExecutor_hookでは(いかんのか)?
    • Executor_hookでは結局、エグゼキュータ全体を実装しないといけない・・・
  • CUSTOM SCAN APIには、オプティマイザに介入する機能とエグゼキュータに介入する機能がある。
  • CustomScanの実行方法をコスト付きで自己申告して、それが一番コストが安ければプランナでそれを選択するようになる。
  • CSAとFDWってちょっと似てる?
    • FDWとCSAの違い。FDWはオブジェクトの実装。CSAはメソッドの実装。
    • CSAの場合はデータ型が固定ではない。例えばJOIN実装の場合、返却されるタプルの型はその場で決まる。
  • JOINをCSAで置換する例。Postgres_fdwへの拡張として実装。
  • CSAの応用。Cache-only Scan。必要な列のみをキャッシュするというもの
    • 最終的にキャッシュ側をGPGPUで処理したいとのこと。
  • CSAの応用(アイディアレベル)。 Cheat Join。
  • CSAの実装状況。9.4へ取り込み中。まだコミットはされていない。
pgRouting(経路探索)
  • 15:20-15:40 右側
  • kenpgさんの発表。
  • pgRoutingはPostgreSQL上で経路探索をサポートするEXTENSION。
    • PostGISと組み合わせて使う。最近はPostGISにバンドルされている。
    • 残念ながら日本語情報は少ない・・・
  • 今回は東京メトロの路線図を例にしてpgRoutingを使ってみた例を発表。
    • 乗換駅が複数あっても1レコードにまとめる。また乗換駅で路線を分割という工夫も必要。
    • ダイクストラ(pg_dijkstra関数)で最短経路を探索する例。ダイクストラの場合、ソース、エッジ、コストが返却される。
    • 東京の地下鉄はややこしい・・・重複する路線区間とか、pgRoutingで対応しきれないものがある。ある程度はアプリケーションで工夫が必要ってことか。
  • pgRouting 2.0になって大幅に機能が拡張されたとのこと。
  • (ぬこ) ノードとエッジの概念は、今私が使っているグラフデータベースの概念だよなあ・・・。
  • ちょうど席がkenpgさんの隣だったので、休憩時間中にグラフデータベース(Neo4j)についてkenpgさんに話す。
休憩
  • 15:40-16:00
  • 発表枠が空いたので休憩状態・・・まあ、こういうユルいのがアンカンファレンスならでは。
FreeSpaceMapとVisibility Map
  • 16:00-16:20 右側
  • 永安さんの発表
  • TOAST, FSM, VMの概念と物理的な構成に関する説明。
    • このあたりは技術系セミナーでもあんまり詳しく説明しない部分だからなあ・・・
  • まずTOASTの説明。意外とTOASTに関する解説ってないから嬉しいところ。
  • Chunkは約2KB。なので1ブロック内には4つまでのChunkが格納される。これがTOAST専用の表に格納される。
  • 次はFSMの話。私の概念は知ってるけど物理的な格納まではきちんと見てなかったしなあ。
  • 次はVisibility Map(VM)の話。
    • VMの用途。ブロック単位のVACUUM要否。INDEX-ONLY SCAN可能かどうかの判断で使う。
  • Chunkのoidが32bitなんでoid上限に引っ張られてTOASTを含む行の件数の制限があるんじゃね疑惑について議論が始まる。
    • (花田さん) TOASTの値IDのOidはTOASTテーブルごとのインデックスで未使用値を探して割り当てるので、周回問題はない、みたい。
初心者向けソースコードの読み方
  • 16:20-16:40 左側
  • 江川さんの発表
  • 江川さんのセッションもうちの若手には聞いてほしいなあ・・・。
  • (笠原さん) オンステージになっているww
  • なんか漏れ聞こえてくる内容・・・例の箱根ハッカソン?の内容かな。
(危険な)PL/Rで遊ぶ
  • 16:20-16:40 右側
  • kenpgさんの発表
  • PL/RはR本体ができることは、何でも基本的に何でも可。ローカルファイルアクセス、Webアクセスも可能。それ故危険。
  • PL/Rはまだ9.3 Windows版が対応はされてなかったが、期待はされている。
  • PL/Rの良い所。
    • Rはグラフィックに強い。
    • plot()一発でOK。
    • PostgreSQLの表がRのデータフレームに簡単に変換。
    • PL/Rを使って複数のグラフを1つのPDFに配置したりとか、そういうことも出来る。
  • 良くない点。
    • プログラミングがしにくい・・・。ex. Sys.time()とSys.Date()の例。
    • しかもRは大文字/小文字を区別するw
    • エラーが把握しづらい。
    • 日本語の扱いが中途半端(定数としては使えない)。
  • 事例。ベンフォードの法則をPostgreSQL+PL/Rでやってみた例。
  • 質疑応答。PL/Rってどういうシステムで使われているの?
    • ⇒システムはわからない。でもMacでは使えないという問い合わせがあったりする。あとは、研究の世界で使われることが多いのでは、とのこと。
bgworkerでクラスタ管理
  • 16:40-17:00左側
  • 澤田さんの発表
  • PostgreSQL Advent Calender 2013に書いていた内容かな・・・
  • (江川さん) @sawada_masahiko の発表。pg_promoter、いいよなー
  • (江川さん) VIPの付け替えを行うシェルも作ったらしい
IMSC(2回目)
  • 16:40-17:00右側
  • 笠原さんの発表
  • IMCSは名前だけはチェックしていたけど、きちんと話を聞くのは初めてだ。
    • 田中さんの発表は聞けなかったので、笠原さんが飛び込みでこの発表をしてくれたのは自分にとってはラッキー。
  • (海外さん) IMCS大人気
  • IMCSはドキュメントは英語だけど充実している。現状は改良中なのか頻繁にアップデートがある。
  • IMCSの使い方。cd_createで集計対象のテーブルを作る。同時にそのテーブルアクセス専用の関数が作られる。
  • IMCSはPostgreSQL共有バッファに各列のデータをBtreeで格納している。共有バッファにアクセスするので通常のSQL関数では扱えない。IMCS専用関数でアクセスすると。
  • IMCSで使う領域へのアクセスはLWLockで保護。これがジャイアントロックになっている。
    • 更新があると思いきり待たされる。
    • トランザクションも割り切って対応していない。
    • 集計用という割り切りか。
  • IMCSは集計時にパラレル実行をサポート。ベクタ演算で処理高速化。
  • 9.4の新機能Dynamic Shared Memory, Dynamic Backgrond Workerで再実装したら、という議論もあったらしい。
  • IMCSは実はチューニングがちょっと大変という話。
  • 実際にPostgreSQLと比較すると性能向上効果はある。また、共有メモリから追い出されない(OSレベルではあるかも?)のも良い点かも。
  • IMSCはfloatが使えない?
    • 固定長だから使えるはずでは?という質疑。
    • (笠原さん) すいません、IMCSで float使えないは嘘でした。numericでした・・
  • 笠原さんの所見
    • 荒削りな部分もあるけど、一過性のソフトウェアにするには惜しい。なんとかcontrib化されないものか。
追加セッション:SELECTを含むDMLの監査
  • 17:00- 右側
  • おまけセッション。SELECTを含むDMLをどう監査をとればいいんだろう。というディスカッション。司会は藤井さん。
  • SE-LinuxSE-PostgreSQLで出来ないか。
  • executor hookを使ってauditログを取れないか?という海外さんの提案。やはりhookしかないかと。
  • SE-Linuxを読んでいる箇所を4段階くらいに分類した、カスタム版SE-PostgreSQLという案?
  • そこからの発展。hookを簡単にLLで書ける基盤がほしいという永安さんの提案。
    • つーか、なんでhookのドキュメントねーの?というぬこの疑問。
      • バージョン毎に変わるし、hook書く人はどうせソース読むでしょ by Tom Lane と海外さんの回答
  • 会場の雰囲気:藤井さんだったら、さくっとhook使ったほうが早いんじゃね?的なw

懇親会

  • 一次会は市ヶ谷駅近くの三蔵
    • 懇親会でも技術系トークになるのは、技術系イベント後の懇親会ならでは。
    • 俺以外のネタ系発表者募集!とは言っておいたw
  • 2次会まで行った人がいるらしい・・・>俺もか。