PostgreSQL Advent Calendar 2017 の過ぎてしまった14日目の記事です。
データ分析や集計処理で使っている(&使えそうな?)クエリについて紹介しようとしていたのですが、色々アレヤコレヤがあって、察してくれという事で、路線変更。
うちの部署ではデータ分析基盤を新規改装中で、ようやくRDMBSをちゃんと使い始め(まぁもろもろ大変でした)、データ分析向きでお安く始められるけど、素敵なPostgreSQLを使っています(他にもperl、embulk、kuroko2とか色々ありますがこれはまた別の機会に)。
なので、データエンジニアとしては、身銭切ってでも(色々あって会社からサポート取れなかった)行きたいって事で参加してきました。
PGConf.ASIA 2017 は、アジア最大のPostgreSQLコミュニティイベントで、12月4日〜12月6日の期間で実施されました。 私が参加したのは、Day1とDay2の2日間です。
各セッションの説明や一部スライドは以下から確認出来ます。
- DAY 0 (プレユーザカンファレンス) – PGConf.ASIA 2017
- DAY 1 (エンタープライズユーザカンファレンス) – PGConf.ASIA 2017
- DAY 2 (エンタープライズユーザカンファレンス) – PGConf.ASIA 2017
また、当日のツイートまとめは以下
PGCONF.Asia 2017 ツイートまとめ - Togetter
気になった話題としては、以下がありました。
- PostgreSQL 10の説明やそれ以降、どのように変わっていくか
- ロジカルレプリケーション、パラレルクエリ、パーティショニング、シャーディング、HAなどの紹介や制限事項
- SQLクエリの最適化、ウィンドウ関数などのPostgreSQLでのSQLの話
- PostgreSQLの活用事例紹介
- SCRAM認証やDB自身の暗号化といったセキュリティ面
まぁ、全方位って感じですね。
データ分析屋さんとしては、パラレルクエリやロジカルレプリケーション、SCRAM認証やDBの暗号化などは使ってみたいところではあるけど、機能面や周辺のミドルウェアやライブラリの対応などがまだ整っていないので本番で使うには色々悩みどころです。
今後の予定からすると、Pg12辺りにはなんとかなりそう(?)
印象としては、バージョン重ねるたびに、Hadoopに近寄っている感がすごくするのは私だけかなぁ。
では、改めて、本題。聴いた講演の中から印象に残ったいくつかを紹介。
PostgreSQL universal database
Oleg Bartunov さんによる、「PostgreSQLを使うのがいかに良い選択肢なのか」って事が良く分かるお話でした。
歴史を振り返りながら、PostgreSQLの魅力がふんだんに紹介されていました。
スライドpp13(Case 2: NoSQL Postgres)で、NoSQLとしての対応について述べらてていたのですが、2018には SQL:2016 - wikipedia に対応し、 2019頃?には、それを拡張して、Custom typeのサポートや、インデックスの改善?、JSONの更新、削除にも対応するらしい。
詳しいSQL:2016については、 What's New in SQL:2016 を見ると良いかと。 データ分析をする際に、Rawデータを扱う際にスキーマレスにしたいって事が多々あるので、この辺りの対応はとてもうれしい。
ただ、JSON便利なのだけど、データサイズが大きくなるので、PostgreSQLの仕様上、TOASTが発生してパフォーマンスが落ちる問題がある。 TOASTについては、 TOASTメカニズム - KaiGaiの俺メモ がとても参考になります。
また、ご自身の関わるお仕事(宇宙しゅごい話)も熱かった。内容も濃いのだけど、扱っているDBサイズがトータル100TBって、、そこまで行けるんですね。
PostgreSQL Strengthen Our Country
Julyanto Sutandang さんによる、インドネシアでのPostgreSQLの利用について。
「某赤い商用RDBMSなどの外国製のプロプライエタリな製品を使わずにPostgreSQLを使う事で、国レベルで輸入額を減らす。」
なるほどって思いました。また、見ている視野が違う。やり手なんだろうなぁって感じの人でした。
また、様々な金融系の利用事例を見ているとインドネシア国内の大手銀行でも当たり前に使っているようです。
Postgresパーティーをバリでどう?ってバリ島押しが面白かった。一度、行ったことがありますが、ご飯も美味しいし、景色も良いし、バリ良いよバリ。
QAで、Oracle RACをPostgreSQLで置き換えに関して、HAに関する質問だったのだけど、RACとしての機能をどう補完したのかってところには触れられず。。
What’s new in PostgreSQL 10
Magnus HaganderさんによるPosgreSQL10の話。
互換性のなくなる話がちらほら。移管の際には参考になりそう。 クライアント認証をよりセキュアにするSCRAM認証をサポートしたとの事。この辺は、クライアントアプリやドライバやライブラリとかがサポートしているかしっかり確認してから使わないと事故りそうだ。
モニアリング面では、pg_stat_activityの可視性が向上したのと、モニタリング用のロールの追加ってのは運用していてありがたい。
良く分からなかったのは、XML tableのサポート。どこにメリットがあるのかイマイチわからない。
バックアップやレプリケーションに関して、 postgresql.conf
と pg_hba.conf
のデフォルト値が以下のように変わることでローカルでレプリケーションをすぐに使えるようになっているとの事。
postgresql.conf defaults: - wal_level = replica - max_wal_senders = 10 - max_replication_slots = 10 pg_hba.conf defaults: - Replication connections by default
スライドpp42(Don't forget)で、WALリサイクリングとかVACUUMに気をつけようぜ!ってあるけど、その割には、デフォルトの値が割とアグレッシブなのが気になりました。モニタリング必須ですね。
ロジカルレプリケーションについても触れられていたが、利用するにはユースケース選びそうな雰囲気。
アイルランド最大の薬局サプライヤーチェーンの BI プラットホームに使われたPostgres. 私達の経験と失敗
Andy Fefelovさんによる事例紹介。
まったく知らない製品があって、国によって違うんだなぁと。
SpagoBI
SpagoBI は、OSSのBIだそうです。ただ、 新しいバージョンから、 Knowage って言う、 OSSのBIスイートの一部として取り込まれたみたい。CEとEEがあるのでお試しは出来そう。
パット見はキレイだけど、BI製品はどれもライセンス高いのでこれを使ってみるのもありかもしれないですね。
ここでは、BIとしてのUIはこちらを使っているようです。
Pentaho / Mondrian / Saiku
Pentaho もBIスイートの一つですが、もともとは、Pentaho Corporationというアメリカの会社だったのですが、Hitachi Data Systems Corporationと統合して、 Hitachi Vantara の製品となっているようです。
CE版はありますが、もはやオープン感は薄い感じ(勝手な印象)。
この辺りが参考になりました。 オープンソースBIのPentaho(ペンタホ)ブログ: アーカイブ qiita.com
どうやらETL周りはここが担当しているようです。
Cubes(databrewery)
アドホックに分析する際に、いろんな切り口で分析し易いようにするためのOLAPの為のフレームワークのようです。
以下のスライドがとても分かり易いです。
他のスライドも参考になりました。
www.slideshare.net
Cubesを使って、RDBのデータをstar schemaとして集約したモデリングを行い、HTTPで多次元的にスライスするってのは、シンプルで良いですね。 ただ、開発止まってるっぽいのが残念。他のデファクトがあるのかなぁ。
スライドから推測した全体像としては、
Postgresをraw dataを置く「stage」、標準化した「nds」、cubeやスナップショット、ビューとして集約した「ddm」の3層に分けたデータストアとし、
- Cyclone_client(自前?)でCSVを取得、Kachok(かちょく)でWebスクレイピング、Skytoolsで既存のプロダクトからPL/pgsqlでデータ抜くなどした raw dataをstageに配置
- Pentaho(PDI)でETL処理して、標準化して、ndsに配置
- Cubes使ってモデリングし、必要ならスナップショット、ビューを作成して、ddmに配置 して、データを用意
- CubesとAPI経由でデータを取得しリッチなグラフを用意(D3、DC、croosfilter)したり、ACLする自前のRails+ReactのAPIを用意
- 4をI/Fとして、SpagoBIをビューアとしてユーザに見せている
と言った感じかなぁ。
各ツールを使ったこと無いので実際のところどうなのか自信ない。。。
Cubes面白いなぁ。
PostgreSQL 10 を導入!大規模データ分析事例からみる DWH としての PostgreSQL 活用のポイント
石井 愛弓さんによる、PostgreSQL10でパラレルクエリをつかったDWHとしてPostgreSQLを扱う際の抑えどころの紹介。
現状でパラレルクエリを使う際にとても参考になる話でした。実際に使ってみたいと考えていたところだったので、この検証結果は本当にありがたい。
その他
その他にも、
- Dmitry Dolgovさんの「PostgreSQL での NoSQL 成功事例( スライド )」はJSONをPostgreSQLで使う際の参考になった
- Michael Paquierさんの「SCRAM authentication( スライド )」は、SCRAM認証って何か知ることが出来たし
- Bruce Momjianさんの「Postgres Window Magic( スライド )」は、Windows関数についてとても参考になった
- Ashutosh Bapatさん、Amit Langoteさんの「Declarative Partitioning Has Arrived( スライド1 スライド2 )」は、パーティショニングを検討する上でとても参考になった
- Ilya Kosmodemianskyさんの「PostgreSQL クエリ最適化テクニック ステップ・バイ・ステップ( スライド )」や 高塚 遥さんの「SQL パフォーマンスチューニング技法 2017( スライド )」は、SQL最適化に対してとても参考になった
- 篠田 典良さんの「Logical Replication Internals( スライド )」や澤田 雅彦さんの「PostgreSQL Replication 2.0( スライド )」は、今後のレプリケーションを考える上でとても参考になった。また、澤田さんのデモの手際の良さがすごい。手慣れてる感ある。
つまり、みんな良かった。 他にも被ってて聴けなかった講演もありましたが、どの講演もすごく良いものでした。
感想
控えめに言っても、学びの多い、最高の2日間でした。
今のPostgreSQLの話やPostgreSQLの活用事例、DBチューニングやSQL話など様々あって、とても参考になる時間でした。
また、通訳のあるセッションについては、英語のスピーカーに対して、日本語で質問して&回答もらえる(通訳してくれる)のでとても有難かった(事前にアナウンスしてくれるとすごく良かった)。
あと、PostgreSQLのステッカーを期待してたけど無かったのが残念。。。欲しいなぁ
会場は、 秋葉原コンベンションホール で、立地もよくお昼ご飯にも困らなかった(選ぶのに困るくらい)。
今回は、
てな感じで、 そーだい(@soudai1025) さんから@nori_shinoda @tjtakahashi @yassan168 https://t.co/XLhX2b3D5A PostgreSQL方面から来ました。なんとアドベントカレンダーの初日がまだ空いてます!!
— そーだい@初代ALF (@soudai1025) 2017年11月27日
おまけ
Day1の後に、個人的に飲みに行った帰りに、 鈴木酒販神田店 って良さげな酒屋さんがありました。
日本酒やクラフトビールが程良く揃ってて、角打ちもあるので近くの人は行ってみると良いかも。