2015年12月13日日曜日

第6回 PostgreSQLアンカンファレンス@東京(2015/12/12)に参加しました

2015年12月13日

ごきげんよう

第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よりも速くなったりするのかなぁ。



以上

2015年12月6日日曜日

OSS-DB Gold 合格体験記

2015年12月6日

ごきげんよう。

この記事はPostgreSQL Advent Calendar 2015 - Qiitaの6日目の記事です。

5日目はnuko_yokohamaさんに書いていただきました。


テクニカルな話題はみなさんにお任せして
ついさっきOSS-DB Goldに合格したので
その合格体験記(受験体験記)を記載します。

OSS-DB Goldの記事なネットにあんまりないので、少しでもお役にたてば。


受 験 日 : 2015/12/06
合  否 : 合格
受験科目 : OSDBG-01
受験言語 : 日本語
取 得 点 : 73点
合 格 点 : 70点
問 題 数 : 30
出題形式 : 単一選択,複数選択
試験時間 : 90分(同意書・アンケート含む)
勉強期間 : 30-40時間程度
受験目的 : 自分のスキルアップ
勉強形態 : 独学
実務経験 : チョットダケ
勉強前のレベル : Silverの内容すら忘れている状態。contribってなんですか?
本試験のレベル : 簡単ではない。受験するなら本気になった方がいいです。

何度目の挑戦か : 1回目

【 セクション毎の正解率 】

運用管理         ・・・77%
性能監視         ・・66%
パフォーマンスチューニング・・・66%
障害対応         ・・・83%

【 使用教材 】

「PostgreSQL運用管理トレーニング」
「PostgreSQL 高度技術者育成テキスト」
「iStudy for OSS-DB技術者 OSS-DB Gold(Android版)」
「OSS-DBのサイトからダウンロードできる過去の対策講座資料」
「内部構造から学ぶpostgresql 設計・運用計画の鉄則」
「PostgreSQL日本語マニュアル」


一押し >>> PostgreSQL運用管理トレーニング


まず、OSS-DB Goldの対策本が他の試験のようにありません。
Silverの出版社に問い合わせましたが
出版予定はないってバッサリ切られました。
# 出せば売れそうなのに

なので、OSS-DBの公式サイトに載っている対策本をやるしかなかったです。


ただ、
「PostgreSQL運用管理トレーニング」
は4万円するという高価なテキストです。
私はたまたま入手経路がありましたが
多くの人は手に入らないんじゃないかと思います。

なのでその場合は
「PostgreSQL 高度技術者育成テキスト」
を確実に制覇しましょう。
数千円で手に入りますし、実務にも使える感じです。

あと
iStudyですが
PC版はwindows8.1以降に対応してないし(するつもりもないって言われた・・)
16000円くらいします。
スマホ版だと
まったく同じ問題、同じ構成で4000円(2000円×2)で手に入ります。
なのでこちらをオススメです。



【 勉強方法 】

試験勉強をする前に
この試験を受験する方はSilver合格済みと思いますが
結構忘れていませんか?

「内部構造から学ぶpostgresql 設計・運用計画の鉄則」

をまずは読みました。
この本はPostgreSQL9.3ベースですが、一通りのPostgeSQLの知識がまとまっており
知識ベースの持ち上げに最適です。


さて、ここから試験対策本題です。

まずはOSS-DBの公式サイトで試験範囲を確認。
その後、OSS-DBの公式サイトにあるOSS-DB Goldの講座(セミナー)の資料を確認。
資料に書いてある用語で初耳なのはぐぐりーのします。

「PostgreSQL運用管理トレーニング」を一通り読んでから
「iStudy for OSS-DB技術者 OSS-DB Gold(Android版)」を全問正解(バグあるけど)できるまで
やりつくす。(私は移動時間にポチポチしてました)

ここがポイントで1度ある程度の知識まで自分を持っていきます。

そのあとに
「PostgreSQL 高度技術者育成テキスト」
を読み直して知識を補填します。

そして公式サイトに公開されている問題や
手に入る問題はひたすら解きます。

iStudy の問題レベルはやや低いですが
「PostgreSQL 高度技術者育成テキスト」
の問題レベルはやや高いです。

しかし、手に入る問題が少ないため、可能ならばどちらもやりましょう。


【 試験の感想 】

問題数30問で試験時間は事実上80分です。
合格基準が70%なので9問ミスまで許されます。

情処試験やTOEICのように時間に追われる試験ではないので1問1問確実にやりましょう。
特に「適切な答え」と「誤った答え」のどちらを問われているかを間違えないように!

計算問題もありますが、その場合はその問題のみ使える電卓機能があるので
手書きでひっ算したりしなくて済みます。

問題を解く際に、自信がない問題はフラグを付けておきましょう。

一通り丁寧に解き終わった時点で残りが30分程度だったので
フラグをつけた問題をじっくり考えました。

で、どーしてもわからないものはラッキーを信じて埋めて置きます。

時間があまるなら、自信をもって解答した問題も見直してください。
9問ミスまでしか許されません。
1問が致命的になるためです。


【 受験者へのアドバイス 】

「試験に合格さえすればいい!知識を詰め込んでやる!試験なんて覚ゲーだろ!」
って考えはやめておいた方がいいです。
試験を受けて実感しましたが
各種参考書に載ってない問題がわんさかでます。

なので、この試験を勉強する際には
実際に実機でインストールして環境を構築して
ポチポチやりながら勉強することをお勧めします。

「それがめんどくさい!合格すりゃあいいんだ!」
という方は
もうとにかく問題を解いて、マニュアルを読みましょう。

そして繰り返しますが
これだけの本や資料を読んでも
まったくみたことないコマンドなり用語なりが試験には出ます。
(マニュアル制覇すれば別かもですが)

なのでつまずいたり、自信がないってところは
マニュアルみるなり
ぐぐるなりした方がいいです。


【終わりに】


というわけで、何とか合格しました。
ひとまずPostgreSQLの試験はこれが最上位ですが
ここでようやくスタートラインです。
ここで得た知識をもとに、PostgreSQLの実務経験を積んでいきたいところです。



明日の PostgreSQL Advent Calenderの担当はnoborusさんです。よろしくお願いします。

以上!