SlideShare a Scribd company logo
1 of 32
Download to read offline
Copyright © 2015 NTT DATA Corporation
2015年11月14日
株式会社NTTデータ 澤田雅彦
PostgreSQLコミュニティに飛び込もう
~ PostgreSQLのパッチをレビュー ~
2Copyright © 2015 NTT DATA Corporation
はじめに
PostgreSQLのコミュニティ開発って、
• 興味はあるけどなんか難しそう。。英語とか。
• 「コミュニティ開発」=「すごい機能を開発」
と思っていませんか?
新しい機能を作るだけでなく、パッチのレビュー、typoの修正も一つのコミュニティ開発です。
本日は、PostgreSQLコミュニティにおける「パッチのレビュー方法」についてできるだけ具体的に解
説します。
資料での説明後、実際にパッチをレビューする時間を設けていますので、一緒にやってみましょう。
3Copyright © 2015 NTT DATA Corporation
はじめに ~レビュアーの仕事とは?~
The eventual committer will do their own review before the patch goes
into the code base. The task of a reviewer is to take off load from
committers by catching simple problems.
The reviewer's job is not necessarily to guarantee some level of quality,
but just to report any problems they are able to find. That task is done if
you think the patch is ready for in-depth review from a committer.
レビューアの仕事は、前もって問題を取り除くことで、コミッタの仕事を減らすことです。
レビューアには完璧を求められることはなく、見つけられるだけの問題を見つけることが仕事
になります。もしあなたが、そのパッチがコミッタの詳細レビューにたる品質になったと判断したら、
そこでレビューは完了します。
https://wiki.postgresql.org/wiki/Reviewing_a_Patch/ja より
4Copyright © 2015 NTT DATA Corporation
はじめに ~パッチレビューのモチベーション~
パッチをレビューすることで、
• PostgreSQLの最前線に身を置き、最新情報を知れる。
• レビューしたパッチやその周辺機能に(ソースコードレベルで)詳しくなれる。
• 途中の議論も知れるので、なぜその機能が入ったのか?なぜそのような仕様になっ
たのか?残課題はあるか?どのような条件でバグが発生するか?など、その機能
(やバグ修正)の知識がより深まる。
• 他人のパッチやコミットされたコードを見ることで、プログラミングスキルが向上する。
(PostgreSQL開発における勘所を学べる)
• カンファレンス等でパッチ作成者とコミュニケーションを取りやすくなる。
5Copyright © 2015 NTT DATA Corporation
INDEX
PostgreSQL開発サイクル
PostgreSQLはどのように開発されている?
Commit Festとは?
PostgreSQLのパッチをレビューをしてみよう
パッチレビューに必要なもの
パッチレビューのやり方
おすすめパッチ紹介
Copyright © 2015 NTT DATA Corporation 6
PostgreSQLの開発サイクル
7Copyright © 2015 NTT DATA Corporation
2014年度 2015年度
5
月
6
月
7
月
8
月
9
月
10
月
11
月
12
月
1
月
2
月
3
月
4
月
5
月
6
月
7
月
8
月
9
月
10
月
11
月
12
月
PostgreSQL開発サイクル
CF1 CF2 CF3 CF4 CF5
Feature
Freeze Alpha1,2
Beta1 Beta2 RC1Beta3
9.5開発
9.4開発
コミュニティサポート
CF1 CF2 CF3
9.6開発
Beta1,2
8Copyright © 2015 NTT DATA Corporation
Commit Festとは?
• パッチレビューを集中的に行うサイクル
• 「パッチ作成:1か月、パッチレビュー:1か月」で1サイクル
• 1パッチ、1レビューのルール
• パッチはCommit Fest Appで管理
Ready for
Committer
Needs review
Waiting on
Author
Committed
Returned with
feedback
(次のCFへ。
ただし課題あり。)
Rejected
(提案却下)
Move to next CF
(次のCFで引き続きレ
ビュー)
パッチレビュー中
パッチレビュー完了
パッチクローズ
パッチ
修正・投稿 レビュー
コミット
レビュー
完了
パッチ作成者
レビュアー
コミッター
CF終了
課題あり
提案却下
9Copyright © 2015 NTT DATA Corporation
Commit Fest Appの使い方
• アカウントの作成が必要ですので、登録します。
• https://www.postgresql.org/account/signup/
• Commit Fest Appで現在のCFに移動します。
• https://commitfest.postgresql.org/
レビューする
パッチを選択
します
10Copyright © 2015 NTT DATA Corporation
Commit Fest Appの使い方
「Become reviewer」
を押してレビュアーと
して登録します
11Copyright © 2015 NTT DATA Corporation
Commit Fest Appの使い方
パッチのステータス
を変えるときはここ
Copyright © 2015 NTT DATA Corporation 12
PostgreSQLのパッチレビュー
13Copyright © 2015 NTT DATA Corporation
パッチレビューはコミュニティへの貢献方法の一つ
コミュニティへの貢献方法は
• 新規機能の開発
• バグ修正
• バグ報告
• パッチのレビュー
など様々。
もちろん、
• ソースコード内のコメントのtypo修正
• ドキュメントのtypo修正
もコミュニティへの貢献です。
14Copyright © 2015 NTT DATA Corporation
コメントのtypo修正もコミュニティへの貢献の一つ
15Copyright © 2015 NTT DATA Corporation
レビュアーとしてコミットログに
16Copyright © 2015 NTT DATA Corporation
必要なもの
• 開発環境
• Linux, Windowsどちらでも
• PostgreSQLがコンパイル、起動できるように
• PostgreSQLのソースコードが見れるように
• gitあると便利です
(例) Mac + VMFusion(CentOS) + git + emacs
• ネット環境
• ソースコードの入手、MLへの投稿で必要
(例) git使うときとメール送るときしかネットを使わないので、テザリング環境でも十分
• メールアドレス
• コミュニティで議論するために必要
(例) gmailアカウントを作る
• PostgreSQLコミュニティのアカウント
• Commit Fest Appで必要
• C言語の知識
• C言語で書かれたソースをレビューするので
• 少しの英語力
• 中学生レベルの英語でOK(だと思います)
17Copyright © 2015 NTT DATA Corporation
メーリングリストへの登録
PostgreSQLコミュニティでのコミュニケーションはメーリングリストが主体です。
登録しておくべきメーリングリストは3つ
• pgsql-hackers
• pgsql-hackers@postgresql.org
• 開発、バグ修正関連の議論はここで行われる。パッチレビューコメントを送るのもここ。
• pgsql-committers
• pgsql-committers@postgresql.org
• コミットされた内容が流れる。何がコミットされたかを知る為に必要。
• pgsql-bugs
• pgsql-bugs@postgresql.org
• バグレポートの内容や、その後の議論がここで行われる。
http://www.postgresql.org/community/lists/subscribe/ から今すぐ登録!
18Copyright © 2015 NTT DATA Corporation
パッチレビューの流れ
レビューコメントを送る
パッチをレビューする
これまでの議論を追う
レビューするパッチを決める
19Copyright © 2015 NTT DATA Corporation
レビューするパッチを決める
決め方は人それぞれ
• 機能、分野別
• プランナ関連、インデックス関連、レプリケーション関連…
• contribモジュール別、クライアントアプリケーション別…
• 実業務で関連しそうな所
• 自分が興味ある所
• 難易度別
• PostgreSQLのバックエンド機能(プランナ、レプリケーションなど)より、
PostgreSQLのフロントエンド機能(psql, pg_dump、pgbenchなど)の方が、読むコード
量が少ない場合が多く、取り掛かりやすい
• 規模別
• 大きい機能をレビューしてみたい!(UPSERT、BRINなど)
• 簡単なバグ修正
20Copyright © 2015 NTT DATA Corporation
議論を追う
既に議論が進んでいる場合は、これまでの議論をキャッチアップします。
• どんなことを解決する機能なのか?ユースケースは?
• どのようなインタフェースで作られているか?
• 議論の雲行きを見る。
• それまでの議論での合意事項、未合意事項。
21Copyright © 2015 NTT DATA Corporation
パッチをレビューする
レビューのレビュー
コーディング・レビュー
性能試験
アーキテクチャ・レビュー
機能テスト
提案・仕様レビュー
そのパッチは
本当に必要?
既存機能との重複
はない?
仕様通りに動く?
クラッシュしない?
本当に性能向上する?
他の機能の性能に影響
を与えてない?
コーディング規約
に沿っている?
十分なコメントが
ある?
将来問題になりそうな
依存関係がないか?
他のモジュールと組み
合わせても問題ない
か?
レビューアは本来
やるべきことをす
べて行ったか?
参考:https://wiki.postgresql.org/wiki/Reviewing_a_Patch/ja
22Copyright © 2015 NTT DATA Corporation
Wikiの内容に沿ったレビュー
23Copyright © 2015 NTT DATA Corporation
(例)よくやるレビューの流れ
• パッチをHEADにあててみる
• git diff --check
• コンパイル
• リグレッションテスト(make check-world)
• 仕様通り動くか?
• 性能試験
• 思いつくいろんな使い方をしてみる
• 境界値テストとかでもOK
• すごい大量に実行してみたり、すごい長い文字を入れてみたり
• レプリケーション環境でもちゃんと動くか?pg_upgradeしても問題ないか?
など
ここまでで何か問題があれば、それを開発者に伝えてあげましょう!
24Copyright © 2015 NTT DATA Corporation
パッチがHEADに当たらなかった
25Copyright © 2015 NTT DATA Corporation
仕様通りに動かなかった
26Copyright © 2015 NTT DATA Corporation
(例)そして、パッチを見ていく(コードレビュー)
• コーディング規約
• インデントはスペースは4つ。コメントの書き方もチェック。
• コーディング規約:http://www.postgresql.org/docs/current/static/source.html
• コメント
• 適切なコメントが書いてあるか?コメントの更新忘れはないか?
• ドキュメントパッチ
• ドキュメントの内容に間違いはないか?typoはない?
• リグレッションテストパッチ
• テストすべきテストケースがリグレッションテストにあるか?
• 既存コードの流用
• 既存のコードをうまく利用して作られているか?無駄なコードはないか?
• 環境依存(Windows対応)
• Windowsでも動くように。
• レビュアーそれぞれの視点
• 実装方法がいまいちだと思う。この既存機能と衝突しそう。
• ここのロジックはもっとシンプルに実装できそう。
27Copyright © 2015 NTT DATA Corporation
メールを書くときのポイント
• 日本語を書いて英語に訳す?最初から英語で考える?
• 具体的な例を出して説明する
• For example …
• 他の人が書いている英語のマネをする
• 文を無理に長くしなくてもよい
• I applied the patch to HEAD. But I got FAILED. …
• 箇条書きにする
• 分からないことは素直に聞いてみる
• PostgreSQLコミュニティの人は優しい人が多い
28Copyright © 2015 NTT DATA Corporation
レビューコメントを送る
例えば、
Thank you for updating the patch.
The followings are my review comments and questions.
* pg_stat_vacuum_progress should have the oid of relation begin vacuumed.
* progress_message variable in PgBackendStatus is not used at all.
IIRC, progress_message variable is set the description of processing.
* The progress of VACUUM FULL seems wrong.
When I run VACUUM FULL for a table, I got following progress.
=# SELECT * FROM pg_stat_vacuum_progress;
:
:
* The vacuum by autovacuum is not displayed.
Could you check this on your environment?
Regards,
--
Masahiko Sawada
29Copyright © 2015 NTT DATA Corporation
いざ、レビューコメントを送信
• 返信は必ずpgsql-hackersをTOに入れる。(作成者個人宛てに送らない)
• 議論の途中であれば、議論に参加している他の開発者もTOまたはCCに入れる。
• 基本「reply all」で問題なし。
• メールを送ったら、パッチのステータスを「Waiting on Author」に変更
ここから本当のコミュニティ活動が始まります。
議論→レビューを繰り返し、自分が満足いくまでレビューをしましょう。
また、必要に応じて議論にも参加しましょう!
「”Ready for Committer” is reviewer saying, “Based on my review,
I would have committed this if I had been the patch’s committer.”」
30Copyright © 2015 NTT DATA Corporation
最後に
• CF3はすでに始まっています!
• 約100個のパッチが登録
• その中で「Needs review」は約半数(本日時点)
• ちなみに、FreezeMap(PageInfoMap)パッチをレビューしてくれるかた募集中です!
• これまでの議論の経緯、パッチの説明、全部します。
Copyright © 2011 NTT DATA Corporation
Copyright © 2015 NTT DATA Corporation
32Copyright © 2015 NTT DATA Corporation
(参考) パッチをあてる、リグレッションテストまでのコマンド例
• 開発版のソースコードを入手
• $ git clone git://git.postgresql.org/git/postgresql.git
※既に開発版を入手している場合は、「$ git pull origin master」等で最新にします。
• パッチをHEADにあててみる
• $ cd postgresql
• $ patch -p1 < <パッチへのパス>
または、
• $ git apply <パッチへのパス>
※patchコマンドではあてられるHUNKは全て実際に変更を加えるのに対し、git applyではHUNKが1つでもあたらない場
合に、パッチ全体の適用をやめます(つまり、git applyではパッチの適用がアトミック)
• git diff --check
• $ git diff --check
※ソースコード末尾に空白等がある場合に検知できます。
• コンパイル
• $ make -j 4 > /dev/null
※こうするとコンパイルWARNINGが出た時だけわかります。ただし、
In file included from gram.y:13990:
scan.c: In function ‘yy_try_NUL_trans’:
scan.c:10192: 警告: unused variable ‘yyg’
は、いつも出るWARNINGなので無視します。
• リグレッションテスト(make check-world)
• $ make check-world | tee /tmp/check-world.log
• $ less /tmp/check-world.log
※make check-worldの結果を目で確認しつつ、ログを「FAILED」でgrepします。

More Related Content

What's hot

オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...NTT DATA Technology & Innovation
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)NTT DATA Technology & Innovation
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションMasahiko Sawada
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...NTT DATA Technology & Innovation
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!NTT DATA Technology & Innovation
 
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~Miki Shimogai
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...NTT DATA Technology & Innovation
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説Masahiko Sawada
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングKosuke Kida
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウトMasahiko Sawada
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...NTT DATA Technology & Innovation
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)NTT DATA Technology & Innovation
 

What's hot (20)

オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
 
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
 
使ってみませんか?pg_hint_plan
使ってみませんか?pg_hint_plan使ってみませんか?pg_hint_plan
使ってみませんか?pg_hint_plan
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウト
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
 

Viewers also liked

PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方Satoshi Nagayasu
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)Uptime Technologies LLC (JP)
 
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介Masahiko Sawada
 

Viewers also liked (20)

PostgreSQLレプリケーション徹底紹介
PostgreSQLレプリケーション徹底紹介PostgreSQLレプリケーション徹底紹介
PostgreSQLレプリケーション徹底紹介
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
 
PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方
 
PostgreSQL 9.5 新機能紹介
PostgreSQL 9.5 新機能紹介PostgreSQL 9.5 新機能紹介
PostgreSQL 9.5 新機能紹介
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
 
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介
 
pg_bigmを用いた全文検索のしくみ(後編)
pg_bigmを用いた全文検索のしくみ(後編)pg_bigmを用いた全文検索のしくみ(後編)
pg_bigmを用いた全文検索のしくみ(後編)
 
10大ニュースで振り返るpg con2013
10大ニュースで振り返るpg con201310大ニュースで振り返るpg con2013
10大ニュースで振り返るpg con2013
 
perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)
 
10大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon201510大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon2015
 
pg_trgmと全文検索
pg_trgmと全文検索pg_trgmと全文検索
pg_trgmと全文検索
 
pg_dbms_statsの紹介
pg_dbms_statsの紹介pg_dbms_statsの紹介
pg_dbms_statsの紹介
 
perfを使ったPostgreSQLの解析(前編)
perfを使ったPostgreSQLの解析(前編)perfを使ったPostgreSQLの解析(前編)
perfを使ったPostgreSQLの解析(前編)
 
pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)
 
PostreSQL監査
PostreSQL監査PostreSQL監査
PostreSQL監査
 
GresCubeで快適PostgreSQLライフ
GresCubeで快適PostgreSQLライフGresCubeで快適PostgreSQLライフ
GresCubeで快適PostgreSQLライフ
 
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
 
PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介
 
PostgreSQL replication
PostgreSQL replicationPostgreSQL replication
PostgreSQL replication
 
JSONBはPostgreSQL9.5でいかに改善されたのか
JSONBはPostgreSQL9.5でいかに改善されたのかJSONBはPostgreSQL9.5でいかに改善されたのか
JSONBはPostgreSQL9.5でいかに改善されたのか
 

Similar to PostgreSQLコミュニティに飛び込もう

OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会
PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会
PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会Shigeru Hanada
 
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 HiroshimaPostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 HiroshimaShigeru Hanada
 
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)NTT DATA OSS Professional Services
 
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Kazuto Kusama
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)NTT DATA Technology & Innovation
 
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -Masahiko Sawada
 
Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2Taiji Tsuchiya
 
ALMツールたべくらべ
ALMツールたべくらべALMツールたべくらべ
ALMツールたべくらべKaoru NAKAMURA
 
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」Taisuke Inoue
 
20130329 rtm3
20130329 rtm320130329 rtm3
20130329 rtm3openrtm
 
レベル1エンジニア、最強コミッタに憧れコミュニティ活動を始める ~Apache Spark: 初めてのパッチ編~(Open Source Conferen...
レベル1エンジニア、最強コミッタに憧れコミュニティ活動を始める ~Apache Spark: 初めてのパッチ編~(Open Source Conferen...レベル1エンジニア、最強コミッタに憧れコミュニティ活動を始める ~Apache Spark: 初めてのパッチ編~(Open Source Conferen...
レベル1エンジニア、最強コミッタに憧れコミュニティ活動を始める ~Apache Spark: 初めてのパッチ編~(Open Source Conferen...NTT DATA Technology & Innovation
 
mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応KyutatsuNishiura
 
XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用賢次 海老原
 
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングPyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングRansui Iso
 

Similar to PostgreSQLコミュニティに飛び込もう (20)

OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
 
PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会
PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会
PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会
 
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 HiroshimaPostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
 
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
 
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
 
NET5 and Diagnostics
NET5 and DiagnosticsNET5 and Diagnostics
NET5 and Diagnostics
 
なぜ今OSGiか
なぜ今OSGiかなぜ今OSGiか
なぜ今OSGiか
 
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
 
Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2
 
ALMツールたべくらべ
ALMツールたべくらべALMツールたべくらべ
ALMツールたべくらべ
 
Patch101
Patch101Patch101
Patch101
 
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
 
20130329 rtm3
20130329 rtm320130329 rtm3
20130329 rtm3
 
レベル1エンジニア、最強コミッタに憧れコミュニティ活動を始める ~Apache Spark: 初めてのパッチ編~(Open Source Conferen...
レベル1エンジニア、最強コミッタに憧れコミュニティ活動を始める ~Apache Spark: 初めてのパッチ編~(Open Source Conferen...レベル1エンジニア、最強コミッタに憧れコミュニティ活動を始める ~Apache Spark: 初めてのパッチ編~(Open Source Conferen...
レベル1エンジニア、最強コミッタに憧れコミュニティ活動を始める ~Apache Spark: 初めてのパッチ編~(Open Source Conferen...
 
Postgres Toolkitのご紹介
Postgres Toolkitのご紹介Postgres Toolkitのご紹介
Postgres Toolkitのご紹介
 
mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応
 
XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用
 
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングPyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
 
私とOSSの25年
私とOSSの25年私とOSSの25年
私とOSSの25年
 

More from NTT DATA OSS Professional Services

Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力NTT DATA OSS Professional Services
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~NTT DATA OSS Professional Services
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントNTT DATA OSS Professional Services
 
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~NTT DATA OSS Professional Services
 
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~NTT DATA OSS Professional Services
 
商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのことNTT DATA OSS Professional Services
 

More from NTT DATA OSS Professional Services (20)

Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力
 
Spark SQL - The internal -
Spark SQL - The internal -Spark SQL - The internal -
Spark SQL - The internal -
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
 
Hadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返りHadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返り
 
HDFS Router-based federation
HDFS Router-based federationHDFS Router-based federation
HDFS Router-based federation
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
 
Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状
 
Distributed data stores in Hadoop ecosystem
Distributed data stores in Hadoop ecosystemDistributed data stores in Hadoop ecosystem
Distributed data stores in Hadoop ecosystem
 
Structured Streaming - The Internal -
Structured Streaming - The Internal -Structured Streaming - The Internal -
Structured Streaming - The Internal -
 
Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?
 
Apache Hadoop and YARN, current development status
Apache Hadoop and YARN, current development statusApache Hadoop and YARN, current development status
Apache Hadoop and YARN, current development status
 
HDFS basics from API perspective
HDFS basics from API perspectiveHDFS basics from API perspective
HDFS basics from API perspective
 
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
 
20170303 java9 hadoop
20170303 java9 hadoop20170303 java9 hadoop
20170303 java9 hadoop
 
ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)
 
Application of postgre sql to large social infrastructure jp
Application of postgre sql to large social infrastructure jpApplication of postgre sql to large social infrastructure jp
Application of postgre sql to large social infrastructure jp
 
Application of postgre sql to large social infrastructure
Application of postgre sql to large social infrastructureApplication of postgre sql to large social infrastructure
Application of postgre sql to large social infrastructure
 
Apache Hadoop 2.8.0 の新機能 (抜粋)
Apache Hadoop 2.8.0 の新機能 (抜粋)Apache Hadoop 2.8.0 の新機能 (抜粋)
Apache Hadoop 2.8.0 の新機能 (抜粋)
 
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
 
商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと
 

PostgreSQLコミュニティに飛び込もう

  • 1. Copyright © 2015 NTT DATA Corporation 2015年11月14日 株式会社NTTデータ 澤田雅彦 PostgreSQLコミュニティに飛び込もう ~ PostgreSQLのパッチをレビュー ~
  • 2. 2Copyright © 2015 NTT DATA Corporation はじめに PostgreSQLのコミュニティ開発って、 • 興味はあるけどなんか難しそう。。英語とか。 • 「コミュニティ開発」=「すごい機能を開発」 と思っていませんか? 新しい機能を作るだけでなく、パッチのレビュー、typoの修正も一つのコミュニティ開発です。 本日は、PostgreSQLコミュニティにおける「パッチのレビュー方法」についてできるだけ具体的に解 説します。 資料での説明後、実際にパッチをレビューする時間を設けていますので、一緒にやってみましょう。
  • 3. 3Copyright © 2015 NTT DATA Corporation はじめに ~レビュアーの仕事とは?~ The eventual committer will do their own review before the patch goes into the code base. The task of a reviewer is to take off load from committers by catching simple problems. The reviewer's job is not necessarily to guarantee some level of quality, but just to report any problems they are able to find. That task is done if you think the patch is ready for in-depth review from a committer. レビューアの仕事は、前もって問題を取り除くことで、コミッタの仕事を減らすことです。 レビューアには完璧を求められることはなく、見つけられるだけの問題を見つけることが仕事 になります。もしあなたが、そのパッチがコミッタの詳細レビューにたる品質になったと判断したら、 そこでレビューは完了します。 https://wiki.postgresql.org/wiki/Reviewing_a_Patch/ja より
  • 4. 4Copyright © 2015 NTT DATA Corporation はじめに ~パッチレビューのモチベーション~ パッチをレビューすることで、 • PostgreSQLの最前線に身を置き、最新情報を知れる。 • レビューしたパッチやその周辺機能に(ソースコードレベルで)詳しくなれる。 • 途中の議論も知れるので、なぜその機能が入ったのか?なぜそのような仕様になっ たのか?残課題はあるか?どのような条件でバグが発生するか?など、その機能 (やバグ修正)の知識がより深まる。 • 他人のパッチやコミットされたコードを見ることで、プログラミングスキルが向上する。 (PostgreSQL開発における勘所を学べる) • カンファレンス等でパッチ作成者とコミュニケーションを取りやすくなる。
  • 5. 5Copyright © 2015 NTT DATA Corporation INDEX PostgreSQL開発サイクル PostgreSQLはどのように開発されている? Commit Festとは? PostgreSQLのパッチをレビューをしてみよう パッチレビューに必要なもの パッチレビューのやり方 おすすめパッチ紹介
  • 6. Copyright © 2015 NTT DATA Corporation 6 PostgreSQLの開発サイクル
  • 7. 7Copyright © 2015 NTT DATA Corporation 2014年度 2015年度 5 月 6 月 7 月 8 月 9 月 10 月 11 月 12 月 1 月 2 月 3 月 4 月 5 月 6 月 7 月 8 月 9 月 10 月 11 月 12 月 PostgreSQL開発サイクル CF1 CF2 CF3 CF4 CF5 Feature Freeze Alpha1,2 Beta1 Beta2 RC1Beta3 9.5開発 9.4開発 コミュニティサポート CF1 CF2 CF3 9.6開発 Beta1,2
  • 8. 8Copyright © 2015 NTT DATA Corporation Commit Festとは? • パッチレビューを集中的に行うサイクル • 「パッチ作成:1か月、パッチレビュー:1か月」で1サイクル • 1パッチ、1レビューのルール • パッチはCommit Fest Appで管理 Ready for Committer Needs review Waiting on Author Committed Returned with feedback (次のCFへ。 ただし課題あり。) Rejected (提案却下) Move to next CF (次のCFで引き続きレ ビュー) パッチレビュー中 パッチレビュー完了 パッチクローズ パッチ 修正・投稿 レビュー コミット レビュー 完了 パッチ作成者 レビュアー コミッター CF終了 課題あり 提案却下
  • 9. 9Copyright © 2015 NTT DATA Corporation Commit Fest Appの使い方 • アカウントの作成が必要ですので、登録します。 • https://www.postgresql.org/account/signup/ • Commit Fest Appで現在のCFに移動します。 • https://commitfest.postgresql.org/ レビューする パッチを選択 します
  • 10. 10Copyright © 2015 NTT DATA Corporation Commit Fest Appの使い方 「Become reviewer」 を押してレビュアーと して登録します
  • 11. 11Copyright © 2015 NTT DATA Corporation Commit Fest Appの使い方 パッチのステータス を変えるときはここ
  • 12. Copyright © 2015 NTT DATA Corporation 12 PostgreSQLのパッチレビュー
  • 13. 13Copyright © 2015 NTT DATA Corporation パッチレビューはコミュニティへの貢献方法の一つ コミュニティへの貢献方法は • 新規機能の開発 • バグ修正 • バグ報告 • パッチのレビュー など様々。 もちろん、 • ソースコード内のコメントのtypo修正 • ドキュメントのtypo修正 もコミュニティへの貢献です。
  • 14. 14Copyright © 2015 NTT DATA Corporation コメントのtypo修正もコミュニティへの貢献の一つ
  • 15. 15Copyright © 2015 NTT DATA Corporation レビュアーとしてコミットログに
  • 16. 16Copyright © 2015 NTT DATA Corporation 必要なもの • 開発環境 • Linux, Windowsどちらでも • PostgreSQLがコンパイル、起動できるように • PostgreSQLのソースコードが見れるように • gitあると便利です (例) Mac + VMFusion(CentOS) + git + emacs • ネット環境 • ソースコードの入手、MLへの投稿で必要 (例) git使うときとメール送るときしかネットを使わないので、テザリング環境でも十分 • メールアドレス • コミュニティで議論するために必要 (例) gmailアカウントを作る • PostgreSQLコミュニティのアカウント • Commit Fest Appで必要 • C言語の知識 • C言語で書かれたソースをレビューするので • 少しの英語力 • 中学生レベルの英語でOK(だと思います)
  • 17. 17Copyright © 2015 NTT DATA Corporation メーリングリストへの登録 PostgreSQLコミュニティでのコミュニケーションはメーリングリストが主体です。 登録しておくべきメーリングリストは3つ • pgsql-hackers • pgsql-hackers@postgresql.org • 開発、バグ修正関連の議論はここで行われる。パッチレビューコメントを送るのもここ。 • pgsql-committers • pgsql-committers@postgresql.org • コミットされた内容が流れる。何がコミットされたかを知る為に必要。 • pgsql-bugs • pgsql-bugs@postgresql.org • バグレポートの内容や、その後の議論がここで行われる。 http://www.postgresql.org/community/lists/subscribe/ から今すぐ登録!
  • 18. 18Copyright © 2015 NTT DATA Corporation パッチレビューの流れ レビューコメントを送る パッチをレビューする これまでの議論を追う レビューするパッチを決める
  • 19. 19Copyright © 2015 NTT DATA Corporation レビューするパッチを決める 決め方は人それぞれ • 機能、分野別 • プランナ関連、インデックス関連、レプリケーション関連… • contribモジュール別、クライアントアプリケーション別… • 実業務で関連しそうな所 • 自分が興味ある所 • 難易度別 • PostgreSQLのバックエンド機能(プランナ、レプリケーションなど)より、 PostgreSQLのフロントエンド機能(psql, pg_dump、pgbenchなど)の方が、読むコード 量が少ない場合が多く、取り掛かりやすい • 規模別 • 大きい機能をレビューしてみたい!(UPSERT、BRINなど) • 簡単なバグ修正
  • 20. 20Copyright © 2015 NTT DATA Corporation 議論を追う 既に議論が進んでいる場合は、これまでの議論をキャッチアップします。 • どんなことを解決する機能なのか?ユースケースは? • どのようなインタフェースで作られているか? • 議論の雲行きを見る。 • それまでの議論での合意事項、未合意事項。
  • 21. 21Copyright © 2015 NTT DATA Corporation パッチをレビューする レビューのレビュー コーディング・レビュー 性能試験 アーキテクチャ・レビュー 機能テスト 提案・仕様レビュー そのパッチは 本当に必要? 既存機能との重複 はない? 仕様通りに動く? クラッシュしない? 本当に性能向上する? 他の機能の性能に影響 を与えてない? コーディング規約 に沿っている? 十分なコメントが ある? 将来問題になりそうな 依存関係がないか? 他のモジュールと組み 合わせても問題ない か? レビューアは本来 やるべきことをす べて行ったか? 参考:https://wiki.postgresql.org/wiki/Reviewing_a_Patch/ja
  • 22. 22Copyright © 2015 NTT DATA Corporation Wikiの内容に沿ったレビュー
  • 23. 23Copyright © 2015 NTT DATA Corporation (例)よくやるレビューの流れ • パッチをHEADにあててみる • git diff --check • コンパイル • リグレッションテスト(make check-world) • 仕様通り動くか? • 性能試験 • 思いつくいろんな使い方をしてみる • 境界値テストとかでもOK • すごい大量に実行してみたり、すごい長い文字を入れてみたり • レプリケーション環境でもちゃんと動くか?pg_upgradeしても問題ないか? など ここまでで何か問題があれば、それを開発者に伝えてあげましょう!
  • 24. 24Copyright © 2015 NTT DATA Corporation パッチがHEADに当たらなかった
  • 25. 25Copyright © 2015 NTT DATA Corporation 仕様通りに動かなかった
  • 26. 26Copyright © 2015 NTT DATA Corporation (例)そして、パッチを見ていく(コードレビュー) • コーディング規約 • インデントはスペースは4つ。コメントの書き方もチェック。 • コーディング規約:http://www.postgresql.org/docs/current/static/source.html • コメント • 適切なコメントが書いてあるか?コメントの更新忘れはないか? • ドキュメントパッチ • ドキュメントの内容に間違いはないか?typoはない? • リグレッションテストパッチ • テストすべきテストケースがリグレッションテストにあるか? • 既存コードの流用 • 既存のコードをうまく利用して作られているか?無駄なコードはないか? • 環境依存(Windows対応) • Windowsでも動くように。 • レビュアーそれぞれの視点 • 実装方法がいまいちだと思う。この既存機能と衝突しそう。 • ここのロジックはもっとシンプルに実装できそう。
  • 27. 27Copyright © 2015 NTT DATA Corporation メールを書くときのポイント • 日本語を書いて英語に訳す?最初から英語で考える? • 具体的な例を出して説明する • For example … • 他の人が書いている英語のマネをする • 文を無理に長くしなくてもよい • I applied the patch to HEAD. But I got FAILED. … • 箇条書きにする • 分からないことは素直に聞いてみる • PostgreSQLコミュニティの人は優しい人が多い
  • 28. 28Copyright © 2015 NTT DATA Corporation レビューコメントを送る 例えば、 Thank you for updating the patch. The followings are my review comments and questions. * pg_stat_vacuum_progress should have the oid of relation begin vacuumed. * progress_message variable in PgBackendStatus is not used at all. IIRC, progress_message variable is set the description of processing. * The progress of VACUUM FULL seems wrong. When I run VACUUM FULL for a table, I got following progress. =# SELECT * FROM pg_stat_vacuum_progress; : : * The vacuum by autovacuum is not displayed. Could you check this on your environment? Regards, -- Masahiko Sawada
  • 29. 29Copyright © 2015 NTT DATA Corporation いざ、レビューコメントを送信 • 返信は必ずpgsql-hackersをTOに入れる。(作成者個人宛てに送らない) • 議論の途中であれば、議論に参加している他の開発者もTOまたはCCに入れる。 • 基本「reply all」で問題なし。 • メールを送ったら、パッチのステータスを「Waiting on Author」に変更 ここから本当のコミュニティ活動が始まります。 議論→レビューを繰り返し、自分が満足いくまでレビューをしましょう。 また、必要に応じて議論にも参加しましょう! 「”Ready for Committer” is reviewer saying, “Based on my review, I would have committed this if I had been the patch’s committer.”」
  • 30. 30Copyright © 2015 NTT DATA Corporation 最後に • CF3はすでに始まっています! • 約100個のパッチが登録 • その中で「Needs review」は約半数(本日時点) • ちなみに、FreezeMap(PageInfoMap)パッチをレビューしてくれるかた募集中です! • これまでの議論の経緯、パッチの説明、全部します。
  • 31. Copyright © 2011 NTT DATA Corporation Copyright © 2015 NTT DATA Corporation
  • 32. 32Copyright © 2015 NTT DATA Corporation (参考) パッチをあてる、リグレッションテストまでのコマンド例 • 開発版のソースコードを入手 • $ git clone git://git.postgresql.org/git/postgresql.git ※既に開発版を入手している場合は、「$ git pull origin master」等で最新にします。 • パッチをHEADにあててみる • $ cd postgresql • $ patch -p1 < <パッチへのパス> または、 • $ git apply <パッチへのパス> ※patchコマンドではあてられるHUNKは全て実際に変更を加えるのに対し、git applyではHUNKが1つでもあたらない場 合に、パッチ全体の適用をやめます(つまり、git applyではパッチの適用がアトミック) • git diff --check • $ git diff --check ※ソースコード末尾に空白等がある場合に検知できます。 • コンパイル • $ make -j 4 > /dev/null ※こうするとコンパイルWARNINGが出た時だけわかります。ただし、 In file included from gram.y:13990: scan.c: In function ‘yy_try_NUL_trans’: scan.c:10192: 警告: unused variable ‘yyg’ は、いつも出るWARNINGなので無視します。 • リグレッションテスト(make check-world) • $ make check-world | tee /tmp/check-world.log • $ less /tmp/check-world.log ※make check-worldの結果を目で確認しつつ、ログを「FAILED」でgrepします。