PostgreSQLアンカンファレンス@東京 に参加してきました
PostgreSQLアンカンファレンス@東京
https://atnd.org/events/64543%22
Twitterのハッシュタグは #pgunconf
メモした内容を記載しておきます。
アンカンファレンスは初めて参加しました。
参加者が各自発表したいことを持ち込んで
ホワイトボードの時間割にポストイットを貼って
1人約20分で発表する形式でした。
会議室3スペースを区切って、発表は2スペースで順次行われました。
発表者の方によってはスライドを公開するようですので
詳細はそちらをご確認ください。
================
■PostgreSQL9.5の新しいGROUP BY
発表者のサイト
http://kenpg.bitbucket.org
Google Analyticsでブログのアクセスを解析
→ JSONでデータを取得できる
pg_read_file 関数でローカルのファイルを読み込んでJSONBにキャストする
GROUPING SETS:GROUP BYを集計行に変える or 足す
総計行を足した出力が、GROUPING SETSで簡単になる(らしい)
GROUPING はSETS(1,())って書くだけ
GROUP BY GROUPIN SETS ((1,2),1,())
CUBEとROLLUP:ある種のGROUPING SETSの短縮形
地方の方がFireFoxが多いw
================
■マイグレーションの切り札 多機能データ同期ツール SymmetricDSを使ってみましょう
#プロジェクタ不具合でスライド出力できず口頭でプレゼン
スライドをどこかで公開する。
JDBCがあってトリガー機能がある
異なるDB間でもやりとりできる
移植するときに使える?
Oracle→PostgreSQL
やってみて苦労した件
ロジカルレプリケーションは遅い
細かいトランザクションが山ほどあるとレプリケーションが遅い
SymmetricDSはトランザクションをまとめて処理できる 1万を100個ずつとか
エラー処理が雑で ぬるぽがよくでる
設定が間違っている場合にぬるぽがでる
異常系の設計がしょぼい
マルチDBレプリケーターだけじゃなくて
カスケードもできる?らしい
マルチマスタのレプリケーションをもってくるのは難しい
=================
■9.5の新機能 CustomSCan / Custom Join
9.5でHookが追加されました
set_rel_pathlist_hook
set_join_pathlist_hook
CustomPath構造体に追加する
JOINするところにCustomScanを追加する
2つのテーブルをJOINしたのをスキャンしたようにみえる実行パス
自作のJOINを実装して、その実行コストと既存のJOINのコストを比較して
もし、自作JOINの方がコストが低ければ、自作JOINが選択される
=================
■ 性能比較 XML、Hstore、JSON、JSONB
スライド後日公開?
JSONB
部分更新入るかも 9.5から
pgbench_XX で測定
XML型はとにかく遅い
=================
■ YCSBベンチマーク JSONBとMongoDBの比較
スライド後日公開?
CPUが少ないならMongoDBの方が有利?
PostgreSQLはCPUがないと性能でないとのこと
==================
■ PostgreSQLで日本語全文検索 LIKE、pg_bigm、PGroonga
●LIKE文
メリット
標準で使える
インデックス作成不要
データが少なければ速い
デメリット
データが多いと遅い
どんくらいなら少ない&速いのか
→ 計測結果と要件で判断
pg_bigmでいろんなデータを日本語検索してみよう!
青空文庫 十分速い
住所データ 十分速い
Wikipedia 十分速い?
十分速ければLIKEでOK
●pg_bigm ぴーじーばいぐらむ?
データが増えても高速
ストリーミングレプリケーション可
別途インストールしないといけない
インデックス作成が遅い
ヒット数に比例して遅くなる
日本語版Wikipediaの本文
200万件
1レコード3777バイト
いんでっくす作成
元データのロード時間16分
インデックス作成時間6時間
遅い?そうでもない?
●PGroonga
メリット
インデックス作成が速い
データ量やヒット数が多くても高速
デメリット
ストリーミングレプリケーション使えない(INDEXの作り直しが必要)
別途インストールしないといけない
PGroongaの方がめっちゃ速い
インデックス作成がめっちゃ速い
●発表者からのおねがい
同じベンチマークを実行して結果を貼ってください
●まとめ
データが少ないならLIKEで十分
1レコード数十バイトなら100万件はいける
データ量が多いならpg_bigmかPGroonga
[参考情報]
pg_shardとPGroongaを使ったレプリケーション対応の
高速日本語全文検索可能な
PostgreSQLクラスタの作り方
==================
■ Postgres Toolkitのご紹介
PostgreSQLのサーバ運用・管理するための
スクリプト・ツールのコレクション
複数のSQLやコマンドを組み合わせて実施する作業を
1つのスクリプトで実行できるようにしたもの
PostgreSQL DBA業務をこなすため
GPLv2ライセンス
スライドアップしてくれるらしい
すっごい便利そう!
使いたい!
======================
■ PgAdminⅢを使いこなそう
チョコレートバーさん
# 同姓同名の方がいらっしゃるのでチョコレートバーと名乗る
PgAdminⅢの操作の話
SJISがなぜかサポートされてない?
PostgreSQLをバージョンアップするとPgAdminもバージョンアップされる
が!!
設定項目のパスが自動更新されないで古いバージョンを参照し続ける!
なので手動で直してあげてください。
タブも実はSQLエディタとかでタブのスペースをコピーして
指定区切り文字のタプルにペーストするとは実はできるw
======================
■ Migr8.rb DBスキーママイグレーションツール
マイグレーションツール自作しました。
# スライドの図がないとわかりにくいので公開されるといいなぁ
Migr8.rbとは
PostgreSQL SQLite3 MySQLをサポート
要Ruby
マイグレーションツールの使い方の説明
マイグレーションツールは従来どんな問題があったか
Ruby on Railsだとタイムスタンプ順で管理するため
複数人でマイグレーションする場合は古いのが最新になる
マイグレーションの適用順序を変えにくい
自作ツールは
マイグレーションの適用順序を変えやすい
Case2
他人のマイグレーションが未適用なのに気づかない
Railsの場合は
未適用のマイグレーションがあっても気づけない
どのマイグレーションが未適用なのか調べられない
Migr8.rbの場合は
未適用のマイグレーションに気づきやすい
→ コンフリクトが発生してくれる
======================
■次回について
今回は前回より間が空いてしまったが
半年に1回ペースでアンカンファレンスを続けていきたいとのこと。
次回開催は11月ごろを考えているので
みなさんそれまでにネタを考えておきましょう。
======================
【参加してみて】
各自が自由に発表できるスタイルはすごいいいと思いました。
発表者の方々のレベルが非常に高く感じました。
私がへぼいのでしょうが・・・がんばろう・・