PostgreSQL最新情報セミナー
ということで、SRA OSS.主催のPostgreSQL最新情報セミナーに行ってきましたよ。
セミナー概要
- 場所はいつも通り、東銀座と築地の間にあるJJK会館。
- 人数はきちんと確認してないけど、80人くらいはいたのかなあ?
- 講演内容
- 石井さん@SRA OSS 挨拶
- Schema-less PostgreSQL
- PostgreSQL 9.4評価検証報告
Schema-less PostgreSQL
- 講師は Oleg Bartunov 氏
- Locale, GiST, GIN, SP-GiST, Full Text Search, pg_trgm, hstoreなど、過去にPostgreSQL本体やcontribへ多くの貢献を行っている方。
- 私が来月、JPUG勉強会でJSONBの発表をするので、とても気になっていた講演だ。
- 最初にNoSQLの話。NoSQL自体が複雑化しつつあると(グラフデータベースとか)。
hstoreの話
GINの話
- 次に転置インデックスの話。転置インデックスは2つのツリー(Entry tree, Posting trees)から構成されている。
- で、9.4のGINインデックスの改善の話に繋がる。Posting listの圧縮と検索性能改善の件。
- GIN検索性能の話。9.3では頻出値の量に、9.4ではレアな値の量に対して検索速度が比例する。(その理解で合ってるのかな)
- hstore_ops EXTENSION(Github公開)を入れることで、9.3でも9.4のような検索性能を得ることができる
- 性能面で見るとJSON型より、hstoreのほうが数倍速いと。しかしhstoreはシンプル過ぎる。ここで、バイナリJSON(JSONB)という話に繋がる。
- hstoreとしてネスト可能なものを作ろうという動きもあった。2012年のPGConで発表。
JSONBの話
- JSONと比較すると、JSONBのほうが、入力データがちょっと大きくなること、格納時にバイナリ化オーバヘッドがかかって少し遅くなる。
- こういう話を正直に話してくれるのは嬉しい。
- そんかし、キーからの値取得(条件なし)ではJSONBが圧倒的(スライドだと20倍くらい)に速い。
- さらに、GIN+json_path_ops演算子を使うと2000倍近く、検索性能が上がる!
- PostgreSQL JSONBとMongoDBとの比較も興味深い。
- MongoDBの格納性能が極端に遅いのは何故だろう。>Mongoに詳しい人
- ふむ。MongoDBのインデックスはbtreeだと。
jsqueryの話
VODKAの話
- そして、GINの後継?インデックスであるVODKAの話。濃いなあ。
- 自分としては嬉しい話ではあるけど、後半のセッション目当ての人だと、ちょい退屈かも・・・?
- VODKAの目的はインデックスアクセスメソッドをbtreeに固定せず、汎用的な(ex. GIS等)基盤を提供するということか。(合ってるか自信ない)
- Vodka distilling instructionsのスライドを見ると、GINのアクセスメソッドを拡張したインタフェースなのかな。
- GIN内でbtreeツリーで検索する。VODKAはどのツリーを使うか(例えばR-treeを使う)を選択可能とする基盤。
- キーワード:nested search trees
- VODKAは9.5あるいは9.6での導入を目指して現在開発中と。あと、開発チームへの参加も募集中。
質疑応答
- HINT句相当の本体取り込みをどうやって、Tom Laneに認めさせるのか?w
- ⇒HINTは拡張として提供というのが当面の方針。良い統計が取れればオプティマイザ側で頑張れるようになるはず。
- JSONBとそのインデックスはトランザクションに対応しているか?
- ⇒JSONBは普通のデータ型なのでもちろん対応している。
- XML型は死んだのか?というQAを受け狙いで言おうと思ったが自重したw
- そーだいさん(@soudai1025)がツイートしてきた。"JSON型だとPHPのjson_decode()っていう標準関数で配列にMapping出来るんですけどJSONB型もJSON文字列と同等なんですよね?"
- ⇒"JSONBの外部表現を受け付ける関数なら、大丈夫かなあ。"とツイートしておく。
PostgreSQL 9.4評価検証報告
- 講師は高塚さん@SRA OSS.
- こっちも今夜のPostgreSQL NightのLTや、来週の中国DB勉強会LTの内容と被らないか、ちょっと心配していた。
前半:性能改善レポート。
-
- GIN性能改善、WAL性能改善、JSONB性能。
- WAL書き込みの同時実行性向上はかなりコア数が多い、かつストレージ性能が良い場合に一番効果が出るだろうと。
後半:PostgreSQL 9.4の新機能紹介
- レプリケーションスロット、更新ビューのCHECKオプション、FILTERオプション、ALTER SYSTEM、マテビューCONCURRENTLYオプション、ALTER TABLEのロック競合軽減。
- レプリケーションスロット:プライマリとスタンバイを繋ぐ絆である(意味深)
- physicalレプリケーションスロットとlogicalレプリケーションスロットの説明。
- physicalのほうは実際に運用に使えるもの。
- logicalははまだ実用というより、これを使った拡張作成の基盤。
- logicalレプリケーションではDDLの情報は(反復可能な情報込みでは)書き込まれないっぽい。
- グループ化演算のFILTERオプションの話。
- FILTERオプションに対応したNodeも追加されているので、プランナも改善されると。
- スライドの誤記訂正:ALTER TABLESPACE MODEではなく、ALTER TABLESPACE MOVE。
PostgreSQL Night
- 今回はセミナーの後に、PostgreSQL Nightというイベントがあったので参加してきた。
- PostgreSQL開発者 Oleg 氏初来日記念パーティーという意味合いもある。
- こっちから参加というメンバも結構多しw
- 会場は浜離宮近くにある「DG Fish&Shellfish」
- PostgreSQL飲み会ってことなので、ただ飲み食いするだけなく、PostgreSQLに関するショートセッション発表もある。
- PostgreSQL女子の出席者が多かった!(重要)
- 最後にみんなで記念撮影。別途、SRA OSS.さんのページに掲載されるかな?
- 何気に私が美味しい場所にいるかもしれないw
ショートセッション
- PostgreSQL 9.4の微妙なSELECT強化と集約関数性能改善
- 私の発表です。いきなり最初にやってください、と言われてちょいビビるw
- 資料については、DB勉強会 in 中国の発表後にupします。
- postgres_fdwでredshiftを使ってみる
- 松村直樹さんの発表。
- 結論から言うと、postgres_fdwでredshiftを使ってみるのはいろいろ問題があってやめたほうがいいと。
- CTB57 神7発表
- 勝俣さんの発表。先週のアンカンファレンスでの投票結果をまとめたもの。
- CTB=Contribモジュールのこと。57種類のContribモジュールから神7を決めるという誰得な企画をやってて、その結果を発表したもの。
- 詳細は略すけど、栄えあるセンターを得たのはpgbench。会場にいた石井さんもガッツポーズw
- JSONログ
- HOOKを組み込んでPostgreSQLサーバログをJSON化してみた、というもの。
- file_fdw + JSONBと組み合わせてログの検索を簡単にすることが出来るかも?
- つーか、この機能は9.5あたりで本体に組み込んでくれないものかなあ・・・
- PostgreSQL Quiz
- 藤井さんの発表
- クイズ1のWHERE句評価は見事に引っかかったなー。そうか、行毎の評価を行なうときにrandom()が動いちゃうのか・・・。
- クイズ2は最初の私の発表が大ヒントになってしまったっぽいw
- PG-Strom
- 海外さんの発表(終了直前になってしまった)
- 先週のアンカンファレンスで発表したものの要約かなー?
籤引き大会
- もう一つのイベントは籤引き大会。
- 先日、勝俣さん、佐伯さんと書いたPostgreSQL本(内部構造から学ぶPostgreSQL 設計・運用計画の鉄則)も景品として3冊提供しました。
- なんとOlegさんが1冊引き当てた!?
- 勝俣さんと一緒にマジックでサインを書きましたw
- 他の当選者の方にも同じようにサインを書きました。勝俣さんのサインは象っぽい何か。私のサインは何の捻りもなく「ぬこ」。
- 最後にロシアコミュニティのロゴ入りポロシャツ3着が景品に。
- これ、欲しかったんだよなー。残念ながら当選せず。
- 写真は当選した人が、SNSやブログでいずれアップしてくれるだろう・・・
おまけ(2次会)
- 築地近くの魚料理居酒屋にて実施。
- 参加者(順不同)
- 奥野さん、江川さん、勝俣さん、ぬこ、藤井さん、澤田さん、Amitさん、Michaelさん。
- 話の内容は色々な意味でアレなので割愛w