ごきげんよう
第6回 PostgreSQLアンカンファレンス@東京(2015/12/12)
に参加しましたので、その際のメモを参加報告として記載します。
Twitterハッシュタグ:#pgunconf
======================
■ウィンドウ関数とplv8、PL/R 国府田 諭さん
ウィンドウ関数はWindowsじゃない!w
から始まりました。
PostgreSQLのウィンドウ関数はドキュメントがわかりにくいとのこと。
たしかにドキュメントがちょっとわかりにくい
3章、4章、9章、リファレンスにまたがってる。
というわけで
plv8でウィンドウ関数を自作した
Q.
Window関数をごりごり使う時は分析が多い
Rとかで実装する方がよくない?
plv8はフィット感どうなの?
A.
大量のデータはRでやるには荷が重い
Web系の人が必要かもしれない?
■所感■
たしかにWindow関数のマニュアルは読みにくいかもしれない
plv8 は初耳単語なので調べます・・
======================
■2016年にしたいこと 桑田さん
1、libpgなしでもDBにアクセスしたい
問題点
・DBドライバが配列型やJSON型に未対応
・libpgのバインディングを言語ごとに作るのは面倒
・新しい言語を試したくてもDBアクセスできないから実用性が低い
解決策
・DBサーバにhttp1/2機能(I/F)を追加
どの言語でもhttpには対応している
非同期アクセスもしやすい
2、SQLの静的解析を評価したい
SQLのテストは少々困難
→ テストデータを用意するのが面倒
データ型や制約を活かしきれてない
例;スカラサブクエリになることを表現できない
JavaはCheckStyleやFindBugsみたいなツールがあるけど
SQLだと静的解析するツールが(そんなに)ない!
JSONはちょっと難しい
→ 時刻や日付のデータ型がない
JSONの欠点は「全部」をパースしないと解析できない
http2をDBサーバに組み込むの誰かやってくれたら嬉しい
■所感■
http2のI/Fが追加されたら確かに面白いかも
======================
Kei Hibioさん
Haskellを使ってSQLを組み立てるDSLを作りました
■資料
https://htmlpreview.github.io/?https://github.com/khibino/haskell-relational-record/blob/master/doc/slide/PostgreSQL-Unconference-201512/Query.html
あれやこれや作ってみたようです
・inner Join
・Left Outer Join
・group by
・order by
Q 普段これ使うの?どう使うの?
A SQL生成するところだけ発表したけど、結果も生成されるんです
HaskellのI/FがPostgreSQLにない?
■所感■
スライドを見ながら
なるほど・・って感じたけど
自分じゃ絶対かけない・・・
======================
うさぎコレクター ~PostgreSQLで画像データ管理~
Ayumi ishiiさん
■資料
■問題
変化の激しい世の中において常に技術を追いかけ高いパフォーマンスが求められる
→ 癒しが重要
→ ペットのうさぎが癒し業をボイコットしてる
■仮説
うさぎ画像をみれば癒されるのではないか
■やってみる
うさぎ画像の検索結果から画像を抜き出す
→ ローカルに画像を保存
→ PostgreSQLで画像情報を管理する
<コンプライアンス注意>
非営利目的での再利用が許可された画像に限定
取得した画像は個人で癒しに使うのみ
Googleに非営利目的での再使用が許可された画像を表示する機能がある
→ 非営利目的用のURLになってる
→ 正規表現で地道にこれを抽出する!
ただし、うさぎ画像を非営利目的用画像にしぼると
かわいい画像が減る問題発生
画像をどうやって管理する?
・bytea → データ量が多くなると性能劣化
・ラージオブジェクト → io_import()などを使う
・外部ファイル → 画像の更新がDB管理でできない
PHPを使うとこんな感じになる
insert into image values(Io_import('/home/postgres/1')
■結果
画像フォルダがうさぎ画像でいっぱい!
手元にうさぎ画像がいっぱい!
ローカルなのでオフラインでもうさぎ画像がいっぱい!
何が起きてもうさぎ画像がいっぱい!
Q
このシステムの欠点がある。
このシステムにより飼ってるうさぎが癒し業を完全に放棄してしまうのでは?
A.
うさぎに気づかれないように使いますw
■所感■
こういうの好きw
他の画像でもできそうだし、応用が効きそう
アンカンファレンスらしい発表だった
======================
9.5で追加されたGroup by機能の使い方 喜田さん
GROUP BY GROUPING SETS
1クエリで複数の集計を組み合わせて取得
標準SQLへの対応したと考えてる
・GROUP BY GROUPING SETS
・GROUP BY ROLLUP
・GROUP BY CUBE
→ CUBEはクロス集計ができる
■Group byの新機能で嬉しいこと
1クエリで結果を得られるのでAPとDBのアクセス回数を削減できる。
SeqScanの回数を削減できる。
■注意点
ソートが激増してDISKソートになるので、WORKメモリを増やしましょう
→ クイックソートになります
grouping関数の存在と役割。
9.5では使えたがマニュアルに書いてないし、pg_procなどからも定義が探せない。
関数じゃなくて修飾子っぽい?
■所感■
Group byはたしかに何回もやらないと
欲しい集計が今までできなかった気がする。
複数列を一気に対象にできるなら便利そう。
======================
PostgreSQL CLUSTER計画 久田正樹さん
ウィーンに行ってきました
PostgreSQL Conference Europe 2016
世界最大の401名の参加で世界最大
PGConf.EU Cluster Summitで何が決まった?
PostgreSQL TODOに更新があった
FDW、パラレル実行、パーティショニング、おそらくGSM/GTMを拡張し、ビルドインのShardingソリューションのPOCを作る
議事録公開されてるけど、参加みんな言いたい事いっててよくわからないw
シャーディングをする => PostgeSQLがCLUSTER化されることが決まった!
ひとまずShardingでクラスタのPOCを作りますよ
Postgres-XCを拡張する?
※よくわからなかった
Q:
クラスタ化のマイルストーンありましたか?
A:
ありません
■所感■
クラスタ化されるのが早ければ2~3年後かも?
という話もでていた。
たしかにそろそろクラスタ化とか、こういう話がでてくるんだろうなと思った。
Postgres-XCの発展も個人的には期待したい。
======================
postgres_fdwを久々に使ってみた ぬこさん
AWS RDS PostgreSQL上では実質的に日本語全文検索できねーじゃねーか!
→ postgres_fdwを使おう
※スライドみててメモとってなかった・・
■資料
■所感■
postgres_fdwって聞いたことしかなくて
調べるにはいい機会になった。
======================
パラレルシーケンシャルスキャンの検証 snagaさん
9.6に実装される機能?
パラレルシーケンシャルスキャンのデモ
資料は以下
■所感■
シーケンシャルスキャンが高速化するなら、みんな幸せになりそう。
ただ、まだまだ検証段階なのでこれからどうなるのか楽しみ。
場合によりIndexよりも速くなったりするのかなぁ。
以上