SlideShare a Scribd company logo
1 of 71
© 2024 NTT DATA Group Corporation
© 2024 NTT DATA Group Corporation
DEIM2024
OSSデータベースの
開発コミュニティに参加しよう︕
2024年3⽉4⽇
NTTデータグループ 藤井雅雄、加藤慎也
© 2024 NTT DATA Group Corporation 2
アジェンダ
PostgreSQLの概要
PostgreSQL開発コミュニティに参加しよう︕
(開発コミュニティでの議論、パッチレビュー、パッチ作成・投稿)
ライブコーディング
PostgreSQLとデータベース研究との関わり
© 2024 NTT DATA Group Corporation 3
⾃⼰紹介
藤井 雅雄
Database Technical Lead @ NTTデータグループ
データベース研究開発
PostgreSQL 技術⽀援
PostgreSQLコミッタ
レプリケーション
WAL圧縮
バックアップ進捗確認
pg_bigm(全⽂検索モジュール) コミッタ
fujii_masao
MasaoFujii
© 2024 NTT DATA Group Corporation 4
PostgreSQLの概要
© 2024 NTT DATA Group Corporation 5
いろいろなデータベース製品・サービス
Ignite
カラム指向
Cassandra
HBase
ドキュメント指向
Couchbase
グラフ指向
Neo4j
Memgraph
KVS
Redis
etcd
MongoDB
インメモリ
データグリッド
Hazelcast
Geode
Oracle
汎⽤RDB
PostgreSQL
組込DB
SQLite
DWH・情報系
Snowflake
BigQuery
Redshift
Teradata
NewSQL Spanner TiDB YugabyteDB
CockroachDB
MySQL
MariaDB
リレーショナル
⾮リレーショナル
© 2024 NTT DATA Group Corporation 6
PostgreSQLとは
オープンソースの定番RDBMSのひとつ
豊富な機能/商⽤製品との親和性
コミュニティによるオープンな開発・保守
トランザクション保障
⽇本語対応
ストアドプロシージャ
SQL標準
ビュー/トリガ BSDライクなライセンス
優れたクエリプランナ
© 2024 NTT DATA Group Corporation 7
PostgreSQLのライセンス
The PostgreSQL Licence
https://opensource.org/license/postgresql
BSDに似たライセンスで、使⽤、変更、配布を個⼈、商⽤、学術など、⽬的に限らず無償で可能。
例えば、PostgreSQLを改変して商⽤製品を作ることも、そのソースを⾮公開にすることもできる。
PostgreSQL開発コミュニティは、
ライセンスを変更したり、別のライセンスでPostgreSQLをリリースする予定はない。
https://www.postgresql.org/about/licence/
© 2024 NTT DATA Group Corporation 8
PostgreSQLの⼈気
DB-EnginesのDBMS⼈気ランキングでは、PostgreSQLは第4位︕ (2024年3⽉時点)
https://db-engines.com/en/ranking
⼈気は上昇傾向で、2023年の DBMS of the Year を獲得︕ (2年ぶり4回⽬の獲得)
https://db-engines.com/en/blog_post/106
© 2024 NTT DATA Group Corporation 9
PostgreSQL開発コミュニティに参加しよう︕
© 2024 NTT DATA Group Corporation 10
PostgreSQLコミュニティ (グローバル)
The PostgreSQL Global Development Group
PostgreSQL本体を開発しているコミュニティ
Local User Groups
世界各地 (33ヶ国62地域) にあるPostgreSQLユーザグループ
PUG = PostgreSQL User Group
Events
世界各地でPostgreSQLに関するカンファレンスなどのイベントが開催
Slack, IRC, LinkedIn, etc
様々なチャンネルでPostgreSQLユーザが集まってコミュニケーション
© 2024 NTT DATA Group Corporation 11
PostgreSQLコミュニティ (⽇本)
⽇本PostgreSQLユーザ会
⽇本のPostgreSQLユーザグループ
JPUG = Japan PostgreSQL User Group
⽀部
北海道、東北、新潟、名古屋、関⻄、四国、中国、九州、沖縄
⽂書・書籍関連分科会
PostgreSQL関連の⽂書の翻訳
PostgreSQLエンタープライズ・コンソーシアム
PostgreSQLの普及推進を⽬的とする企業コンソーシアム
PGECons = PostgreSQL Enterprise Consortium
© 2024 NTT DATA Group Corporation 12
PostgreSQLコミュニティ (⽇本)
Events
⽇本の様々なコミュニティ・団体・企業・個⼈がカンファレンスなどのイベントを開催
PostgreSQL Conference Japan
PostgreSQLアンカンファレンス ...etc
Slack
PostgreSQLに関する⽇本語Slack
© 2024 NTT DATA Group Corporation 13
PostgreSQLコミュニティ (グローバル)
The PostgreSQL Global Development Group
PostgreSQL本体を開発しているコミュニティ
Local User Groups
世界各地 (35ヶ国67地域) にあるPostgreSQLユーザグループ
PUG = PostgreSQL User Group
Events
世界各地でPostgreSQLに関するカンファレンスなどのイベントが開催
Slack, IRC, LinkedIn, etc
様々なチャンネルでPostgreSQLユーザが集まってコミュニケーション
PostgreSQL開発コミュニティに参加しよう︕
© 2024 NTT DATA Group Corporation 14
The PostgreSQL Global Development Group
メーリングリスト Wiki
Gitレポジトリ
コアチーム コミッタ
開発、レビュー、テスト、バグ報告
コントリビュータ
ユーザ
© 2024 NTT DATA Group Corporation 15
The PostgreSQL Global Development Group
メーリングリスト Wiki
Gitレポジトリ
コアチーム コミッタ
開発、レビュー、テスト、バグ報告
コントリビュータ
ユーザ
参加
選出
選出
7名
30名
v16開発では
361名
© 2024 NTT DATA Group Corporation 16
The PostgreSQL Global Development Groupに参加の企業例
企業別の所属コミッタ数(2024年3⽉時点)
count | company
-------+-------------------------
7 | EnterpriseDB
6 | Amazon Web Services
5 | Microsoft
1 | Crunchy Data
1 | Fujitsu
1 | Google Cloud Platform
1 | Individuals
1 | Instaclustr
1 | NTT
1 | NTT DATA
1 | Neon, Inc
1 | Redpill Linpro
1 | SRA OSS
1 | Supabase Inc.
1 | University of Cambridge
© 2024 NTT DATA Group Corporation 17
モチベーション
PostgreSQL開発コミュニティになぜ参加したいか︖
技術者にとってのモチベーションの例としては、
① PostgreSQLの内部や設計思想、仕様、制約などを深く理解できる。
PostgreSQLを効果的に利⽤できるようになる
② 世界中の様々な技術者たちの考えに触れることで、
技術者としての⾒識が⼤きく広がる。様々な技術者とのパイプができる
③ パッチの作成やレビューを通じて、コーディングスキルが向上する
④ 新機能開発やバグ修正の成果に対して世界中から感謝される。
⾃⾝の成果として名前が残り、セルフブランディングになる
© 2024 NTT DATA Group Corporation 18
モチベーション
PostgreSQL開発コミュニティになぜ参加したいか︖
事業者にとってのモチベーションの例としては、
① データベース技術の最新動向について早期に情報を⼊⼿でき、
事業に活かすことで、その事業領域でのプレゼンスを獲得できる
② 世界中の様々な企業・技術者とパイプができ、
他社とのアライアンスなどの機会につながる可能性がある
③ 事業で必要な機能やバグ修正をPostgreSQLに取り込める。
事業者の技術⼒アピールやブランド⼒を向上できる
© 2024 NTT DATA Group Corporation 19
PostgreSQL開発のフロー
新機能の提案やバグの報告を⾏う
新機能の必要性やユーザI/F、アーキテクチャ、
実現⽅法、バグ原因、修正⽅法などを議論する
議論結果を踏まえて、新機能やバグ修正を
コーディングして、パッチを作成・投稿する
パッチをレビューして、不備を改修する
コミッタがパッチをPostgreSQL本体に取り込む
提案・バグ報告
議論
パッチ作成
レビュー
コミット
繰
"
返
$
© 2024 NTT DATA Group Corporation 20
議論に参加しよう︕
© 2024 NTT DATA Group Corporation 21
メーリングリストの購読
PostgreSQL開発コミュニティでのコミュニケーションはメーリングリストが基本
PostgreSQL公式サイトでコミュニティアカウントを作成して、4つのMLを購読
pgsql-hackers
新機能の提案やバグ修正、開発課題などについて議論する
pgsql-bugs
ユーザからのバグ報告先。報告されたバグやその修正などについて議論する
pgsql-docs
ドキュメントやその問題、改修などについて議論する
pgsql-committers
コミットされた内容が通知される
過去の議論内容は、各メーリングリストのアーカイブから確認可能
https://www.postgresql.org/list/
© 2024 NTT DATA Group Corporation 22
議論を読む
藤井がv13向けに
バックアップ取得の
進捗確認機能を
提案したときのメール
© 2024 NTT DATA Group Corporation 23
議論を読むコツ
興味あるテーマ・機能・バグの議論から読む
OSS-DBの資格取得などを通じて
PostgreSQLの体系的な事前知識を得ておく
英語の⻑い議論を⼿軽に読みたいときは、翻訳サイトなども活⽤
例えば、Shaperで英⽂を整形して、DeepLで⽇本語翻訳
https://dream-exp.net/shaper/
https://www.deepl.com/translator
© 2024 NTT DATA Group Corporation 24
議論で返信する
宛先にMLを含める
内容は公開されることに注意
bottom-posting
返信したい対象の⽂章を引⽤して、
その下に返信を記載する
⾏動規範に則った発⾔
https://www.postgresql.org/about/policies/coc/ja/
引⽤
返信
引⽤
返信
© 2024 NTT DATA Group Corporation 25
議論で返信するコツ
翻訳サイトなどを活⽤して、英⽂を作成
例えば、⽇本語で⽂章を作成して、DeepLで英語翻訳、Grammarlyで添削
https://www.deepl.com/translator
https://www.grammarly.com/
⽂を無理に⻑くしない、箇条書きにする、例を出して説明する
他の⼈のメールやPostgreSQLドキュメント、ソースコメントの
英⽂を参考にする
© 2024 NTT DATA Group Corporation 26
レビューに参加しよう︕
© 2024 NTT DATA Group Corporation 27
PostgreSQL開発のサイクル
2023年度 2024年度
6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11
CF CF CF CF CF
v17開発
v16開発
v18開発
CF CF
Beta / RC
Beta / RC
Feature
Freeze リリース
リリース
コミュニティサポート
CF
CommitFest
パッチレビューに
集中する期間
© 2024 NTT DATA Group Corporation 28
CommitFest
CommitFest Appでレビュー対象のパッチを⼀覧管理
https://commitfest.postgresql.org/
© 2024 NTT DATA Group Corporation 29
CommitFestのワークフロー
Needs review
レビュー待ち
Waiting on Author
開発者の対応待ち
Ready for
Committer
コミッタの判断待ち
Committed
コミット成功︕
Moved to next CF
次回CFでレビュー継続
Returned with
Feedback
今回CFで⼗分にレビュー済
Rejected
提案却下
Withdrawn
提案撤回
パッチ修正 レビュー
パッチ提案
レビュー完了
差し戻し
コミット
パッチレビュー中 パッチクローズ
提案撤回
提案却下
レビュー⼗分
CF終了
パッチ作者 レビュア コミッタ
© 2024 NTT DATA Group Corporation 30
レビューするパッチを決める
興味ある機能や分野のパッチ
レビューしやすいパッチ
ドキュメントやテストケースのパッチ
独⽴した機能などで影響範囲の⼩さいパッチ
(クライアントツール、contribモジュール、SQL関数など)
サイズの⼩さいパッチ
仕様やI/Fなどの内容がコミュニティで合意済のパッチ
メインのレビュアがいるパッチ
メインのレビュアによるレビュー内容を勉強しながら、サブのレビュアとして取り組む
© 2024 NTT DATA Group Corporation 31
レビュアとして登録する
CommitFest App
「Become reviewer」を押して、
レビュアとして登録
CF App 内の各パッチのページ
© 2024 NTT DATA Group Corporation 32
パッチを⼊⼿する
〜
パッチをダウンロード
CF App 内の各パッチのページ ML上でパッチについて議論しているメール
© 2024 NTT DATA Group Corporation 33
パッチをレビューする
提案レビュー
パッチは適⽤できるか︖ドキュメントやテストを含んでいるか︖
仕様レビュー
パッチは本当に必要か︖仕様はコミュニティで合意されているか︖
機能テスト
仕様通りに動作するか︖クラッシュや想定外のエラーはないか︖
性能試験
パッチにより性能劣化しないか︖
コーディング・レビュー
Windowsでも動作するか︖コーディング規約に従っているか︖
アーキテクチャ・レビュー
他機能と⼀貫性のあるアーキテクチャか︖
https://wiki.postgresql.org/wiki/Reviewing_a_Patch/ja
レビューコメントとして
MLで返信する
© 2024 NTT DATA Group Corporation 34
パッチを適⽤、コンパイル、テストする
① ソースの⼊⼿、コンパイルに必要なライブラリをインストールする
$ sudo dnf install git gcc make bison flex readline readline-devel zlib-devel
② TAPテスト(*)に必要なライブラリをインストールする
$ sudo dnf install perl-CPAN
$ sudo cpan -i IPC::Run Test::Simple Time::HiRes Test::Harness
③ ドキュメントのコンパイルに必要なライブラリをインストールする
$ sudo dnf install docbook-dtds docbook-style-xsl libxslt
環境によって必要なライブラリやインストールのコマンドが異なることに注意︕
上記はRHEL8系環境での実⾏例
(*) PostgreSQLのクライアントツールなどを対象とする追加テスト
© 2024 NTT DATA Group Corporation 35
パッチを適⽤、コンパイル、テストする
④ PostgreSQLのgitレポジトリをクローンする
$ git clone git://git.postgresql.org/git/postgresql.git
⑤ パッチ適⽤先ブランチをチェックアウトする
$ cd postgresql
$ git checkout master
⑥ パッチ⽤の新規ブランチを作成する
$ git checkout -b xxx
$ git branch
master
* xxx
基本的に「開発中の最新メジャーバージョン」の
masterブランチがパッチ適⽤先
⼿元環境だと
クローンにかかった時間は約15分
レビュー完了後などに
パッチ適⽤を⼿軽にクリアできるように、
パッチ⽤のブランチを作成するのがおススメ︕
© 2024 NTT DATA Group Corporation 36
パッチを適⽤、コンパイル、テストする
⑦ パッチを適⽤する
$ patch -p1 -d. < $HOME/xxx.patch
⑧ PostgreSQLをコンパイルする
$ ./configure --enable-debug --enable-cassert --enable-tap-tests ¥
--prefix=$HOME/pgsql/xxx CFLAGS=-O0
$ make -j 4
$ make install
デバッグしやすいようにオプションを指定する
--enable-debug
--enable-cassert
--enable-tap-tests
CFLAGS=-O0
インストール先のディレクトリを指定する
--prefix
時間短縮のため複数多重でコンパイルするように
-jオプションを指定するのがおススメ︕
パッチ適⽤やコンパイルで発⽣したエラー・警告は、レビューコメントとしてMLで報告する
© 2024 NTT DATA Group Corporation 37
パッチを適⽤、コンパイル、テストする
⑨ contribモジュールをコンパイルする
$ cd contrib
$ make
$ make install
$ cd ..
⑩ ドキュメントをコンパイルする
$ make html
⑪ リグレッションテストを実⾏する
$ make -j 4 check-world
コンパイルやテストで発⽣したエラー・警告は、レビューコメントとしてMLで報告する
CF登録のパッチは⾃動的にテストが⾛り、
その結果をPatch Testerから確認できる
http://cfbot.cputube.org/
時間短縮のため複数多重でコンパイルするように
-jオプションを指定するのがおススメ︕
© 2024 NTT DATA Group Corporation 38
パッチを適⽤、コンパイル、テストする
⑫ PostgreSQLを起動する
$ cd $HOME/pgsql/xxx
$ bin/initdb -D data --locale=C --encoding=UTF8
$ bin/pg_ctl -D data start
⑬ パッチの新機能をテストする
$ bin/psql
...
⑭ PostgreSQLを停⽌する
$ bin/pg_ctl -D data stop
思いつく限りの新機能の使い⽅を試してみる︕例えば、
⼊⼒のバリエーション (境界値、⼤規模データ、不正値など)
⼤量実⾏、複数多重同時実⾏
物理/論理レプリケーション環境での動作
起動・停⽌やテストで発⽣したエラー・想定外動作は、レビューコメントとしてMLで報告する
© 2024 NTT DATA Group Corporation 39
パッチをコーディング・レビューする
コーディング規約やエラーメッセージのスタイルガイドに従っているか︖
https://www.postgresql.jp/document/current/html/source.html
コメントやドキュメントに内容誤り(古い内容のまま)やTypoはないか︖
関数名、変数名、マクロ名、ファイル名などの命名が分かりやすく適切か︖
初期化忘れ、クローズ・解放忘れ、戻り値のチェック忘れなどのバグはないか︖
セグメンテーションフォルトやアサーションエラーを引き起こすコードパスはないか︖
無駄、⾮効率、(必要以上に)複雑すぎる、理解しにくいコードはないか︖
例えば、以下の観点でコード上気になる点をレビューコメントとしてMLで報告する
© 2024 NTT DATA Group Corporation 40
レビューコメントを返信する
レビューコメントの返信メールの例 (抜粋)
変数の初期値の誤りや
初期化忘れを指摘
カラム名の命名が
適切でないことの指摘
© 2024 NTT DATA Group Corporation 41
パッチのステータスを変更する
「Change Status」を押して、
パッチのステータスを変更
© 2024 NTT DATA Group Corporation 42
CommitFestのワークフロー
Needs review
レビュー待ち
Waiting on Author
開発者の対応待ち
Ready for
Committer
コミッタの判断待ち
Committed
コミット成功︕
Moved to next CF
次回CFでレビュー継続
Returned with
Feedback
今回CFで⼗分にレビュー済
Rejected
提案却下
Withdrawn
提案撤回
パッチ修正 レビュー
パッチ提案
レビュー完了
差し戻し
コミット
パッチレビュー中 パッチクローズ
提案撤回
提案却下
レビュー⼗分
CF終了
パッチ作者 レビュア コミッタ
© 2024 NTT DATA Group Corporation 43
パッチのコミットを確認する
コミットログの例
レビューしたパッチがコミットされると、
レビュアとして名前がコミットログに
記録される︕
© 2024 NTT DATA Group Corporation 44
パッチを作成・投稿しよう︕
© 2024 NTT DATA Group Corporation 45
パッチネタを⾒つける
研究成果やその関連技術をPostgreSQLに組み込む
成果が⼤きすぎる場合は、細かい技術要素に分けて、少しずつパッチ化できないか考える
コミュニティでの議論やパッチレビューでパッチネタを⾒つける
議論中に新機能のアイデアが出ることや、レビュー中にPostgreSQLの不具合が⾒つかることが多い
PostgreSQLの最新バージョンリリース前後に、そのバージョンの新機能を試す
リリース前後は、新機能に不具合が含まれていることが多い
© 2024 NTT DATA Group Corporation 46
PostgreSQL開発のフロー
新機能の提案やバグの報告を⾏う
新機能の必要性やユーザI/F、アーキテクチャ、
実現⽅法、バグ原因、修正⽅法などを議論する
議論結果を踏まえて、新機能やバグ修正を
コーディングして、パッチを作成・投稿する
パッチをレビューして、不備を改修する
コミッタがパッチをPostgreSQL本体に取り込む
提案・バグ報告
議論
パッチ作成
レビュー
コミット
繰
"
返
$
パッチネタについてまずはコミュニティで議論して、その結果にもとづいてパッチを作成するのが基本
パッチを作成してみないと提案・議論しにくい場合は、パッチを先に作成することも
© 2024 NTT DATA Group Corporation 47
パッチを作成する
① masterブランチでソースを最新化して、パッチ⽤のブランチを作成する。
$ git checkout master
$ git pull
$ git checkout -b new-func
② ソースを改修して、その改修内容をコミットする。
$ emacs ...
$ git commit -a -m "Add new func ..."
③ masterブランチからパッチ⽤ブランチへのソース差分をパッチとして作成する。
$ git format-patch master
$ ls *.patch
0001-Add-new-func.patch
© 2024 NTT DATA Group Corporation 48
パッチレビューの観点をクリアできているか
提案レビュー
パッチは適⽤できるか︖ドキュメントやテストを含んでいるか︖
仕様レビュー
パッチは本当に必要か︖仕様はコミュニティで合意されているか︖
機能テスト
仕様通りに動作するか︖クラッシュや想定外のエラーはないか︖
性能試験
パッチにより性能劣化しないか︖
コーディング・レビュー
Windowsでも動作するか︖コーディング規約に従っているか︖
アーキテクチャ・レビュー
他機能と⼀貫性のあるアーキテクチャか︖
https://wiki.postgresql.org/wiki/Reviewing_a_Patch/ja
© 2024 NTT DATA Group Corporation 49
パッチレビューの観点をクリアできているか
コーディング規約やエラーメッセージのスタイルガイドに従っているか︖
https://www.postgresql.jp/document/current/html/source.html
コメントやドキュメントに内容誤り(古い内容のまま)やTypoはないか︖
関数名、変数名、マクロ名、ファイル名などの命名が分かりやすく適切か︖
初期化忘れ、クローズ・解放忘れ、戻り値のチェック忘れなどのバグはないか︖
セグメンテーションフォルトやアサーションエラーを引き起こすコードパスはないか︖
無駄、⾮効率、(必要以上に)複雑すぎる、理解しにくいコードはないか︖
© 2024 NTT DATA Group Corporation 50
PostgreSQL開発のサイクル
2023年度 2024年度
6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11
CF CF CF CF CF
v17開発
v16開発
v18開発
CF CF
Beta / RC
Beta / RC
Feature
Freeze リリース
リリース
コミュニティサポート
CF
CommitFest
パッチレビューに
集中する期間
© 2024 NTT DATA Group Corporation 51
CommitFestのワークフロー
Needs review
レビュー待ち
Waiting on Author
開発者の対応待ち
Ready for
Committer
コミッタの判断待ち
Committed
コミット成功︕
Moved to next CF
次回CFでレビュー継続
Returned with
Feedback
今回CFで⼗分にレビュー済
Rejected
提案却下
Withdrawn
提案撤回
パッチ修正 レビュー
パッチ提案
レビュー完了
差し戻し
コミット
パッチレビュー中 パッチクローズ
提案撤回
提案却下
レビュー⼗分
CF終了
パッチ作者 レビュア コミッタ
© 2024 NTT DATA Group Corporation 52
パッチのコミットを確認する
コミットログの例
作成したパッチがコミットされると、
作者として名前がコミットログに記録される︕
リリースノートの例
ユーザが知るべき機能・改変の場合は、
リリースノートにも記録される︕
© 2024 NTT DATA Group Corporation 53
困ったときは⽇本のコミュニティで相談も
例えば、ほぼ⽉1ペースで開催のアンカンファレンスでバグのLTをするなど
© 2024 NTT DATA Group Corporation 54
ライブコーディング
© 2024 NTT DATA Group Corporation 55
⾃⼰紹介
• 名前
• 加藤 慎也 @ShinyaKato_
• 所属
• 株式会社NTTデータグループ 技術開発本部
• 業務
• PostgreSQLコミュニティでの開発
• PostgreSQLの研究開発やサポート業務
© 2024 NTT DATA Group Corporation 56
① SQL処理部分を書き換えて、
TRUNCATEコマンドを実⾏できないように改造
② ドキュメントの修正を⾏って、
実際にメーリングリストにパッチを投稿
© 2024 NTT DATA Group Corporation 57
① SQL処理部分を書き換えて、TRUNCATEコマンドを実⾏できないように改造
SQL処理部分の概要
Parser
Analyzer
Planner
Executor
構⽂を解析する(⽂法的に正しければよい)
テーブルや列が存在するかを確認する
インデックススキャンやシーケンシャルスキャンなどの
アクセス⽅法を決める
Plannerが決めた⽅法でSQLを実⾏する
↑ここを書き換えてTRUNCATEコマンドを実⾏できないようにする
© 2024 NTT DATA Group Corporation 58
PostgreSQLとデータベース研究との関わり
© 2024 NTT DATA Group Corporation 59
PostgreSQLとデータベース研究の関わりを知るメリット
PostgreSQL開発者
機能実装する際により効率的で優れた⼿法を知ることができる︕
PostgreSQL利⽤者
どんな理論に基づいて内部実装されているかを理解することで、より効果的にPostgreSQLを利⽤できる︕
データベース研究者
データベース研究がどのように実世界に適⽤されているかを知ることができる︕
説得⼒のある研究背景が書けたり、研究のモチベーションアップにつながる︕
PostgreSQL開発者/利⽤者、データベース研究者それぞれに
PostgreSQLとデータベース研究の関わりを知るメリットがある︕
© 2024 NTT DATA Group Corporation 60
PostgreSQLの歴史(1/2)
PostgreSQLはデータベース研究プロジェクトから誕⽣した︕
1970年 E.F.Coddによりリレーショナルモデルが考案
1976年 INGRESプロジェクト始動
カリフォルニア⼤学バークレー校でM.Stonebrakerらが始めたリレーショナルデータベース開発プロジェクト
1986年 POSTGRESプロジェクト始動
POSTGRES = Post INGRES
カリファルニア⼤学バークレー校でM.Stonebrakerらが始めたリレーショナルデータベース開発プロジェクト
1993年 POSTGRESプロジェクト終了
コミュニティの規模が⼤きくなり、本来データベースの研究に費やすべき時間が
ソースコードの保守とサポートに使われているという課題
© 2024 NTT DATA Group Corporation 61
PostgreSQLの歴史(2/2)
PostgreSQLはデータベース研究プロジェクトから誕⽣した︕
1995年 Postgres95
POSTGRESプロジェクトに参加していたAndrew YuとJolly Chenが
POSTGRESに⼤規模な変更を加えPostgres95を開発
問い合わせ⾔語がPostQUELからSQLに
1996年 PostgreSQL誕⽣
PostgreSQL = POSTGRES + SQL
POSTGRESプロジェクトでのバージョン番号に戻したため、初期バージョンは6.0
2024年3⽉現在 PostgreSQL 16.2
https://www.postgresql.org/docs/release/16.2/
© 2024 NTT DATA Group Corporation 62
取り上げるトピック
PostgreSQLのトランザクションとインデックスについて
データベース研究との関わりを説明します︕
インデックス
トランザクション ストレージエンジン
セキュリティ バックアップ/リストア レプリケーション
モニタリング
クライアント/サーバ
プログラム
拡張機能
PostgreSQL
© 2024 NTT DATA Group Corporation 63
PostgreSQLのトランザクション分離レベル
ANSI SQL標準*で定義されたトランザクション分離レベルを設定できるが、
内部実装としてはSIGMOD1995年の論⽂を参考にしている︕
分離レベル 発⽣しうるアノマリー
READ UNCOMMITTED ダーティリード
※内部的には実装されておらずPostgreSQLでは発⽣しない
READ COMMITTED 反復不能読み取り
REPEATABLE READ ファントムリード
※PostgreSQLでは発⽣しない
SERIALIZABLE 直列化異常
*) 以下の論⽂で、ANSI SQL標準の分離レベルの定義は曖昧であると批判している。
また、PostgreSQLのトランザクション分離は以下の論⽂で定義されているスナップショット分離を
MVCC(Multi-Version Concurrency Control)で実装することにより実現している。
Hal Berenson et al., A critique of ANSI SQL isolation levels (SIGMOD1995)
© 2024 NTT DATA Group Corporation 64
Serializable Snapshot Isolation
PostgreSQLのSERIALIZABLE分離は、
Serializable Snapshot Isolationにより実現している︕
2008年 Serializable Snapshot Isolation(SSI)が提案
Michael J. Cahill et al., Serializable Isolation for Snapshot Databases (SIGMOD2008)
Snapshot Isolationで発⽣する異常を⾃動的に検出して防⽌することでSERIALIZABLE分離を実現
2012年 PostgreSQLでのSSIの実装に関する論⽂が発表
Dan R. K. Ports and Kevin Grittner, Serializable Snapshot Isolation in PostgreSQL (VLDB2012)
性能はSIよりわずかに劣るものの、従来の2PL(2 Phase Lock)よりも⼤幅な性能向上を実現
2011年 PostgreSQL 9.1にSSIベースのSERIALIZABLE分離に変更
https://www.postgresql.org/docs/9.1/release-9-1.html
© 2024 NTT DATA Group Corporation 65
B⽊インデックス
Blink⽊
Philip L. Lehman and S. Bing Yao, Efficient Locking for Concurrent Operations on B-Trees
(TODS1981)
B+⽊に、High Keyと兄弟ノードへのポインタを実装し最適化
PostgreSQLの実装
上の論⽂の実装に加えて、下の論⽂の削除ロジックの簡易版を実装
Vladimir Lanin and Dennis Shasha, A Symmetric Concurrent B-tree Algorithm
(ACM Fall Joint Computer Conference 1986)
PostgreSQLはB+⽊を改良したBlink⽊を実装している︕
© 2024 NTT DATA Group Corporation 66
GiSTインデックス
GiSTインデックスとは︖
Joseph M. Hellerstein et al., Generalized Search Trees for Database Systems (VLDB1995)
インデックスを実装する際のテンプレートであり、データベースの専⾨家以外でもインデックスを実装すること容易にする
GiSTインデックスプロジェクト
カリフォルニア⼤学バークレー校のGiSTインデックス研究プロジェクト
https://gist.cs.berkeley.edu/
PostgreSQLのGiST(Generalized Search Tree)インデックスは
カリフォルニア⼤学バークレー校の研究プロジェクトから開発が始まった︕
© 2024 NTT DATA Group Corporation 67
SP-GiSTインデックス
SP-GiSTインデックスとは︖
Walid G. Aref and Ihab F. Ilyas, SP-GiST: An Extensible Database Index for Supporting
Space Partitioning Trees, Journal of Intelligent Information Systems (JIIS2001)
空間分割された探索⽊(四分⽊、kd⽊など)を開発可能とするGiST
SP-GiSTインデックスプロジェクト
パデュー⼤学のSP-GiSTインデックス研究プロジェクト
https://www.cs.purdue.edu/spgist/
PostgreSQLのSP-GiST(Space-Partitioned GiST)インデックスは
パデュー⼤学の研究プロジェクトから開発が始まった︕
© 2024 NTT DATA Group Corporation 68
NTTデータグループの研究開発
• あ PostgreSQLのスケールアウトの実現に向けた取り組みにおいても、
最新論⽂の知⾒を参考にしている部分が多々あります︕
DEIM2023の技術報告資料より
© 2024 NTT DATA Group Corporation 69
NTTデータグループのインターンシップ
NTTデータグループのインターンでは、PostgreSQLの機能開発や改善を
PostgreSQL開発者とともに経験することができます︕
インターン⽣が開発した機能の例
• Disallow MERGE cleanly for foreign partitions
• psql: Improve tab-completion for MERGE.
• Fix pg_stat_statements for MERGE
• Remove definition of JUMBLE_SIZE from
queryjumble.h
• Improve HINT message that FDW reports when
there are no valid options.
• psql: Improve tab-completion for LOCK TABLE.
• Make autovacuum launcher more responsive to
pg_log_backend_memory_contexts().
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=cba4e78f3599f7edc3fb53d1b094f037fbb8158a
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=9a6915257d1d804ddba05331030b74d7426a4005
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=249b0409b181311bb1c375311e43eb767b5c3bdd
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=839c2520a7937b8895ff84fc8fc718dbfab5e72e
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=5fedf7417b69295294b154a219edd8a26eaa6ab6
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=0b0d277c35533baecc8d1a9356f71de5f2ee0bd8
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=e3e29cec10d15bbcedc6b41887d8f4e138d719bd
© 2024 NTT DATA Group Corporation 70
まとめ
• オープンソースのRDBMSであるPostgreSQLの概要を説明しました。
• PostgreSQLコミュニティに参加し、パッチを開発する⽅法を説明しました。
• ライブコーディングで以下を⾏いました。
• TRUNCATEコマンドの実⾏を禁⽌する改造
• ドキュメント修正パッチの作成からメール送信
• PostgreSQLとデータベース研究の関わりについて説明しました。
興味をもって頂けた⽅は
ぜひNTTデータの企業ブースまでお越しください︕
記載されている会社名、商品名、⼜はサービス名は、
各社の登録商標⼜は商標です。

More Related Content

What's hot

PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...NTT DATA Technology & Innovation
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)Hironobu Suzuki
 
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レプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!NTT DATA Technology & Innovation
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)NTT DATA Technology & Innovation
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...NTT DATA Technology & Innovation
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法Tetsutaro Watanabe
 
MQTTとAMQPと.NET
MQTTとAMQPと.NETMQTTとAMQPと.NET
MQTTとAMQPと.NETterurou
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)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のgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタSatoyuki Tsukano
 

What's hot (20)

PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
 
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLコミュニティに飛び込もう
PostgreSQLコミュニティに飛び込もうPostgreSQLコミュニティに飛び込もう
PostgreSQLコミュニティに飛び込もう
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
 
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レプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
 
MQTTとAMQPと.NET
MQTTとAMQPと.NETMQTTとAMQPと.NET
MQTTとAMQPと.NET
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
 
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 発...
 
使ってみませんか?pg_hint_plan
使ってみませんか?pg_hint_plan使ってみませんか?pg_hint_plan
使ってみませんか?pg_hint_plan
 
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
 

Similar to OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)

PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)NTT DATA Technology & Innovation
 
【Japan Partner Conference 2019】遂に来た! フルマーネージド Azure Red Hat OpenShift で実現する O...
【Japan Partner Conference 2019】遂に来た! フルマーネージド Azure Red Hat OpenShift で実現する O...【Japan Partner Conference 2019】遂に来た! フルマーネージド Azure Red Hat OpenShift で実現する O...
【Japan Partner Conference 2019】遂に来た! フルマーネージド Azure Red Hat OpenShift で実現する O...日本マイクロソフト株式会社
 
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -Masahiko Sawada
 
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...NTT DATA Technology & Innovation
 
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践日本マイクロソフト株式会社
 
日立ソリューションズの取り組みとプラットフォーム関連セション内容のご紹介
日立ソリューションズの取り組みとプラットフォーム関連セション内容のご紹介日立ソリューションズの取り組みとプラットフォーム関連セション内容のご紹介
日立ソリューションズの取り組みとプラットフォーム関連セション内容のご紹介CASAREAL, Inc.
 
Tech Dojo 02/09 IBM Japan CSM
Tech Dojo 02/09 IBM Japan CSMTech Dojo 02/09 IBM Japan CSM
Tech Dojo 02/09 IBM Japan CSM勇 黒沢
 
Microsoft AI Solution Update / DLL community Update
Microsoft AI Solution Update / DLL community UpdateMicrosoft AI Solution Update / DLL community Update
Microsoft AI Solution Update / DLL community UpdateHirono Jumpei
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)NTT DATA Technology & Innovation
 
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshopDaisuke Sugai
 
ToolChainを使った次世代DevOps環境の作り方
ToolChainを使った次世代DevOps環境の作り方ToolChainを使った次世代DevOps環境の作り方
ToolChainを使った次世代DevOps環境の作り方Harada Kazuki
 
20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructure20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructurePreferred Networks
 
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 HiroshimaPostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 HiroshimaShigeru Hanada
 
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...Insight Technology, Inc.
 
A07_ビジネス イノベーションを強力に支援する Azure Red Hat OpenShift のススメ [Microsoft Japan Digita...
A07_ビジネス イノベーションを強力に支援する Azure Red Hat OpenShift のススメ [Microsoft Japan Digita...A07_ビジネス イノベーションを強力に支援する Azure Red Hat OpenShift のススメ [Microsoft Japan Digita...
A07_ビジネス イノベーションを強力に支援する Azure Red Hat OpenShift のススメ [Microsoft Japan Digita...日本マイクロソフト株式会社
 
de:code2018 登壇資料
de:code2018 登壇資料de:code2018 登壇資料
de:code2018 登壇資料Hiroshi Senga
 
なぜ今なのか?非開発者でも開発者でも、これから始めるPower Platform
なぜ今なのか?非開発者でも開発者でも、これから始めるPower Platformなぜ今なのか?非開発者でも開発者でも、これから始めるPower Platform
なぜ今なのか?非開発者でも開発者でも、これから始めるPower PlatformTaiki Yoshida
 

Similar to OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料) (20)

PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
 
【Japan Partner Conference 2019】遂に来た! フルマーネージド Azure Red Hat OpenShift で実現する O...
【Japan Partner Conference 2019】遂に来た! フルマーネージド Azure Red Hat OpenShift で実現する O...【Japan Partner Conference 2019】遂に来た! フルマーネージド Azure Red Hat OpenShift で実現する O...
【Japan Partner Conference 2019】遂に来た! フルマーネージド Azure Red Hat OpenShift で実現する O...
 
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
 
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
 
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
【de:code 2020】 Azure Kubernetes Service と Azure DevOps による GitOps の実践
 
日立ソリューションズの取り組みとプラットフォーム関連セション内容のご紹介
日立ソリューションズの取り組みとプラットフォーム関連セション内容のご紹介日立ソリューションズの取り組みとプラットフォーム関連セション内容のご紹介
日立ソリューションズの取り組みとプラットフォーム関連セション内容のご紹介
 
Tech Dojo 02/09 IBM Japan CSM
Tech Dojo 02/09 IBM Japan CSMTech Dojo 02/09 IBM Japan CSM
Tech Dojo 02/09 IBM Japan CSM
 
Microsoft AI Solution Update / DLL community Update
Microsoft AI Solution Update / DLL community UpdateMicrosoft AI Solution Update / DLL community Update
Microsoft AI Solution Update / DLL community Update
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
 
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshop
 
OSS Market Momentum In Japan
OSS Market Momentum In JapanOSS Market Momentum In Japan
OSS Market Momentum In Japan
 
ToolChainを使った次世代DevOps環境の作り方
ToolChainを使った次世代DevOps環境の作り方ToolChainを使った次世代DevOps環境の作り方
ToolChainを使った次世代DevOps環境の作り方
 
20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructure20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructure
 
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 HiroshimaPostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
 
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
 
A07_ビジネス イノベーションを強力に支援する Azure Red Hat OpenShift のススメ [Microsoft Japan Digita...
A07_ビジネス イノベーションを強力に支援する Azure Red Hat OpenShift のススメ [Microsoft Japan Digita...A07_ビジネス イノベーションを強力に支援する Azure Red Hat OpenShift のススメ [Microsoft Japan Digita...
A07_ビジネス イノベーションを強力に支援する Azure Red Hat OpenShift のススメ [Microsoft Japan Digita...
 
OSS光と闇
OSS光と闇OSS光と闇
OSS光と闇
 
de:code2018 登壇資料
de:code2018 登壇資料de:code2018 登壇資料
de:code2018 登壇資料
 
なぜ今なのか?非開発者でも開発者でも、これから始めるPower Platform
なぜ今なのか?非開発者でも開発者でも、これから始めるPower Platformなぜ今なのか?非開発者でも開発者でも、これから始めるPower Platform
なぜ今なのか?非開発者でも開発者でも、これから始めるPower Platform
 
NET5 and Diagnostics
NET5 and DiagnosticsNET5 and Diagnostics
NET5 and Diagnostics
 

More from NTT DATA Technology & Innovation

COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方NTT DATA Technology & Innovation
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...NTT DATA Technology & Innovation
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)NTT DATA Technology & Innovation
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)NTT DATA Technology & Innovation
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...NTT DATA Technology & Innovation
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)NTT DATA Technology & Innovation
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...NTT DATA Technology & Innovation
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)NTT DATA Technology & Innovation
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)NTT DATA Technology & Innovation
 
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)NTT DATA Technology & Innovation
 
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...NTT DATA Technology & Innovation
 
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)NTT DATA Technology & Innovation
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)NTT DATA Technology & Innovation
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)NTT DATA Technology & Innovation
 

More from NTT DATA Technology & Innovation (20)

COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
 
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)
 
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
 
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)
 

Recently uploaded

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 

Recently uploaded (9)

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 

OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)

  • 1. © 2024 NTT DATA Group Corporation © 2024 NTT DATA Group Corporation DEIM2024 OSSデータベースの 開発コミュニティに参加しよう︕ 2024年3⽉4⽇ NTTデータグループ 藤井雅雄、加藤慎也
  • 2. © 2024 NTT DATA Group Corporation 2 アジェンダ PostgreSQLの概要 PostgreSQL開発コミュニティに参加しよう︕ (開発コミュニティでの議論、パッチレビュー、パッチ作成・投稿) ライブコーディング PostgreSQLとデータベース研究との関わり
  • 3. © 2024 NTT DATA Group Corporation 3 ⾃⼰紹介 藤井 雅雄 Database Technical Lead @ NTTデータグループ データベース研究開発 PostgreSQL 技術⽀援 PostgreSQLコミッタ レプリケーション WAL圧縮 バックアップ進捗確認 pg_bigm(全⽂検索モジュール) コミッタ fujii_masao MasaoFujii
  • 4. © 2024 NTT DATA Group Corporation 4 PostgreSQLの概要
  • 5. © 2024 NTT DATA Group Corporation 5 いろいろなデータベース製品・サービス Ignite カラム指向 Cassandra HBase ドキュメント指向 Couchbase グラフ指向 Neo4j Memgraph KVS Redis etcd MongoDB インメモリ データグリッド Hazelcast Geode Oracle 汎⽤RDB PostgreSQL 組込DB SQLite DWH・情報系 Snowflake BigQuery Redshift Teradata NewSQL Spanner TiDB YugabyteDB CockroachDB MySQL MariaDB リレーショナル ⾮リレーショナル
  • 6. © 2024 NTT DATA Group Corporation 6 PostgreSQLとは オープンソースの定番RDBMSのひとつ 豊富な機能/商⽤製品との親和性 コミュニティによるオープンな開発・保守 トランザクション保障 ⽇本語対応 ストアドプロシージャ SQL標準 ビュー/トリガ BSDライクなライセンス 優れたクエリプランナ
  • 7. © 2024 NTT DATA Group Corporation 7 PostgreSQLのライセンス The PostgreSQL Licence https://opensource.org/license/postgresql BSDに似たライセンスで、使⽤、変更、配布を個⼈、商⽤、学術など、⽬的に限らず無償で可能。 例えば、PostgreSQLを改変して商⽤製品を作ることも、そのソースを⾮公開にすることもできる。 PostgreSQL開発コミュニティは、 ライセンスを変更したり、別のライセンスでPostgreSQLをリリースする予定はない。 https://www.postgresql.org/about/licence/
  • 8. © 2024 NTT DATA Group Corporation 8 PostgreSQLの⼈気 DB-EnginesのDBMS⼈気ランキングでは、PostgreSQLは第4位︕ (2024年3⽉時点) https://db-engines.com/en/ranking ⼈気は上昇傾向で、2023年の DBMS of the Year を獲得︕ (2年ぶり4回⽬の獲得) https://db-engines.com/en/blog_post/106
  • 9. © 2024 NTT DATA Group Corporation 9 PostgreSQL開発コミュニティに参加しよう︕
  • 10. © 2024 NTT DATA Group Corporation 10 PostgreSQLコミュニティ (グローバル) The PostgreSQL Global Development Group PostgreSQL本体を開発しているコミュニティ Local User Groups 世界各地 (33ヶ国62地域) にあるPostgreSQLユーザグループ PUG = PostgreSQL User Group Events 世界各地でPostgreSQLに関するカンファレンスなどのイベントが開催 Slack, IRC, LinkedIn, etc 様々なチャンネルでPostgreSQLユーザが集まってコミュニケーション
  • 11. © 2024 NTT DATA Group Corporation 11 PostgreSQLコミュニティ (⽇本) ⽇本PostgreSQLユーザ会 ⽇本のPostgreSQLユーザグループ JPUG = Japan PostgreSQL User Group ⽀部 北海道、東北、新潟、名古屋、関⻄、四国、中国、九州、沖縄 ⽂書・書籍関連分科会 PostgreSQL関連の⽂書の翻訳 PostgreSQLエンタープライズ・コンソーシアム PostgreSQLの普及推進を⽬的とする企業コンソーシアム PGECons = PostgreSQL Enterprise Consortium
  • 12. © 2024 NTT DATA Group Corporation 12 PostgreSQLコミュニティ (⽇本) Events ⽇本の様々なコミュニティ・団体・企業・個⼈がカンファレンスなどのイベントを開催 PostgreSQL Conference Japan PostgreSQLアンカンファレンス ...etc Slack PostgreSQLに関する⽇本語Slack
  • 13. © 2024 NTT DATA Group Corporation 13 PostgreSQLコミュニティ (グローバル) The PostgreSQL Global Development Group PostgreSQL本体を開発しているコミュニティ Local User Groups 世界各地 (35ヶ国67地域) にあるPostgreSQLユーザグループ PUG = PostgreSQL User Group Events 世界各地でPostgreSQLに関するカンファレンスなどのイベントが開催 Slack, IRC, LinkedIn, etc 様々なチャンネルでPostgreSQLユーザが集まってコミュニケーション PostgreSQL開発コミュニティに参加しよう︕
  • 14. © 2024 NTT DATA Group Corporation 14 The PostgreSQL Global Development Group メーリングリスト Wiki Gitレポジトリ コアチーム コミッタ 開発、レビュー、テスト、バグ報告 コントリビュータ ユーザ
  • 15. © 2024 NTT DATA Group Corporation 15 The PostgreSQL Global Development Group メーリングリスト Wiki Gitレポジトリ コアチーム コミッタ 開発、レビュー、テスト、バグ報告 コントリビュータ ユーザ 参加 選出 選出 7名 30名 v16開発では 361名
  • 16. © 2024 NTT DATA Group Corporation 16 The PostgreSQL Global Development Groupに参加の企業例 企業別の所属コミッタ数(2024年3⽉時点) count | company -------+------------------------- 7 | EnterpriseDB 6 | Amazon Web Services 5 | Microsoft 1 | Crunchy Data 1 | Fujitsu 1 | Google Cloud Platform 1 | Individuals 1 | Instaclustr 1 | NTT 1 | NTT DATA 1 | Neon, Inc 1 | Redpill Linpro 1 | SRA OSS 1 | Supabase Inc. 1 | University of Cambridge
  • 17. © 2024 NTT DATA Group Corporation 17 モチベーション PostgreSQL開発コミュニティになぜ参加したいか︖ 技術者にとってのモチベーションの例としては、 ① PostgreSQLの内部や設計思想、仕様、制約などを深く理解できる。 PostgreSQLを効果的に利⽤できるようになる ② 世界中の様々な技術者たちの考えに触れることで、 技術者としての⾒識が⼤きく広がる。様々な技術者とのパイプができる ③ パッチの作成やレビューを通じて、コーディングスキルが向上する ④ 新機能開発やバグ修正の成果に対して世界中から感謝される。 ⾃⾝の成果として名前が残り、セルフブランディングになる
  • 18. © 2024 NTT DATA Group Corporation 18 モチベーション PostgreSQL開発コミュニティになぜ参加したいか︖ 事業者にとってのモチベーションの例としては、 ① データベース技術の最新動向について早期に情報を⼊⼿でき、 事業に活かすことで、その事業領域でのプレゼンスを獲得できる ② 世界中の様々な企業・技術者とパイプができ、 他社とのアライアンスなどの機会につながる可能性がある ③ 事業で必要な機能やバグ修正をPostgreSQLに取り込める。 事業者の技術⼒アピールやブランド⼒を向上できる
  • 19. © 2024 NTT DATA Group Corporation 19 PostgreSQL開発のフロー 新機能の提案やバグの報告を⾏う 新機能の必要性やユーザI/F、アーキテクチャ、 実現⽅法、バグ原因、修正⽅法などを議論する 議論結果を踏まえて、新機能やバグ修正を コーディングして、パッチを作成・投稿する パッチをレビューして、不備を改修する コミッタがパッチをPostgreSQL本体に取り込む 提案・バグ報告 議論 パッチ作成 レビュー コミット 繰 " 返 $
  • 20. © 2024 NTT DATA Group Corporation 20 議論に参加しよう︕
  • 21. © 2024 NTT DATA Group Corporation 21 メーリングリストの購読 PostgreSQL開発コミュニティでのコミュニケーションはメーリングリストが基本 PostgreSQL公式サイトでコミュニティアカウントを作成して、4つのMLを購読 pgsql-hackers 新機能の提案やバグ修正、開発課題などについて議論する pgsql-bugs ユーザからのバグ報告先。報告されたバグやその修正などについて議論する pgsql-docs ドキュメントやその問題、改修などについて議論する pgsql-committers コミットされた内容が通知される 過去の議論内容は、各メーリングリストのアーカイブから確認可能 https://www.postgresql.org/list/
  • 22. © 2024 NTT DATA Group Corporation 22 議論を読む 藤井がv13向けに バックアップ取得の 進捗確認機能を 提案したときのメール
  • 23. © 2024 NTT DATA Group Corporation 23 議論を読むコツ 興味あるテーマ・機能・バグの議論から読む OSS-DBの資格取得などを通じて PostgreSQLの体系的な事前知識を得ておく 英語の⻑い議論を⼿軽に読みたいときは、翻訳サイトなども活⽤ 例えば、Shaperで英⽂を整形して、DeepLで⽇本語翻訳 https://dream-exp.net/shaper/ https://www.deepl.com/translator
  • 24. © 2024 NTT DATA Group Corporation 24 議論で返信する 宛先にMLを含める 内容は公開されることに注意 bottom-posting 返信したい対象の⽂章を引⽤して、 その下に返信を記載する ⾏動規範に則った発⾔ https://www.postgresql.org/about/policies/coc/ja/ 引⽤ 返信 引⽤ 返信
  • 25. © 2024 NTT DATA Group Corporation 25 議論で返信するコツ 翻訳サイトなどを活⽤して、英⽂を作成 例えば、⽇本語で⽂章を作成して、DeepLで英語翻訳、Grammarlyで添削 https://www.deepl.com/translator https://www.grammarly.com/ ⽂を無理に⻑くしない、箇条書きにする、例を出して説明する 他の⼈のメールやPostgreSQLドキュメント、ソースコメントの 英⽂を参考にする
  • 26. © 2024 NTT DATA Group Corporation 26 レビューに参加しよう︕
  • 27. © 2024 NTT DATA Group Corporation 27 PostgreSQL開発のサイクル 2023年度 2024年度 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11 CF CF CF CF CF v17開発 v16開発 v18開発 CF CF Beta / RC Beta / RC Feature Freeze リリース リリース コミュニティサポート CF CommitFest パッチレビューに 集中する期間
  • 28. © 2024 NTT DATA Group Corporation 28 CommitFest CommitFest Appでレビュー対象のパッチを⼀覧管理 https://commitfest.postgresql.org/
  • 29. © 2024 NTT DATA Group Corporation 29 CommitFestのワークフロー Needs review レビュー待ち Waiting on Author 開発者の対応待ち Ready for Committer コミッタの判断待ち Committed コミット成功︕ Moved to next CF 次回CFでレビュー継続 Returned with Feedback 今回CFで⼗分にレビュー済 Rejected 提案却下 Withdrawn 提案撤回 パッチ修正 レビュー パッチ提案 レビュー完了 差し戻し コミット パッチレビュー中 パッチクローズ 提案撤回 提案却下 レビュー⼗分 CF終了 パッチ作者 レビュア コミッタ
  • 30. © 2024 NTT DATA Group Corporation 30 レビューするパッチを決める 興味ある機能や分野のパッチ レビューしやすいパッチ ドキュメントやテストケースのパッチ 独⽴した機能などで影響範囲の⼩さいパッチ (クライアントツール、contribモジュール、SQL関数など) サイズの⼩さいパッチ 仕様やI/Fなどの内容がコミュニティで合意済のパッチ メインのレビュアがいるパッチ メインのレビュアによるレビュー内容を勉強しながら、サブのレビュアとして取り組む
  • 31. © 2024 NTT DATA Group Corporation 31 レビュアとして登録する CommitFest App 「Become reviewer」を押して、 レビュアとして登録 CF App 内の各パッチのページ
  • 32. © 2024 NTT DATA Group Corporation 32 パッチを⼊⼿する 〜 パッチをダウンロード CF App 内の各パッチのページ ML上でパッチについて議論しているメール
  • 33. © 2024 NTT DATA Group Corporation 33 パッチをレビューする 提案レビュー パッチは適⽤できるか︖ドキュメントやテストを含んでいるか︖ 仕様レビュー パッチは本当に必要か︖仕様はコミュニティで合意されているか︖ 機能テスト 仕様通りに動作するか︖クラッシュや想定外のエラーはないか︖ 性能試験 パッチにより性能劣化しないか︖ コーディング・レビュー Windowsでも動作するか︖コーディング規約に従っているか︖ アーキテクチャ・レビュー 他機能と⼀貫性のあるアーキテクチャか︖ https://wiki.postgresql.org/wiki/Reviewing_a_Patch/ja レビューコメントとして MLで返信する
  • 34. © 2024 NTT DATA Group Corporation 34 パッチを適⽤、コンパイル、テストする ① ソースの⼊⼿、コンパイルに必要なライブラリをインストールする $ sudo dnf install git gcc make bison flex readline readline-devel zlib-devel ② TAPテスト(*)に必要なライブラリをインストールする $ sudo dnf install perl-CPAN $ sudo cpan -i IPC::Run Test::Simple Time::HiRes Test::Harness ③ ドキュメントのコンパイルに必要なライブラリをインストールする $ sudo dnf install docbook-dtds docbook-style-xsl libxslt 環境によって必要なライブラリやインストールのコマンドが異なることに注意︕ 上記はRHEL8系環境での実⾏例 (*) PostgreSQLのクライアントツールなどを対象とする追加テスト
  • 35. © 2024 NTT DATA Group Corporation 35 パッチを適⽤、コンパイル、テストする ④ PostgreSQLのgitレポジトリをクローンする $ git clone git://git.postgresql.org/git/postgresql.git ⑤ パッチ適⽤先ブランチをチェックアウトする $ cd postgresql $ git checkout master ⑥ パッチ⽤の新規ブランチを作成する $ git checkout -b xxx $ git branch master * xxx 基本的に「開発中の最新メジャーバージョン」の masterブランチがパッチ適⽤先 ⼿元環境だと クローンにかかった時間は約15分 レビュー完了後などに パッチ適⽤を⼿軽にクリアできるように、 パッチ⽤のブランチを作成するのがおススメ︕
  • 36. © 2024 NTT DATA Group Corporation 36 パッチを適⽤、コンパイル、テストする ⑦ パッチを適⽤する $ patch -p1 -d. < $HOME/xxx.patch ⑧ PostgreSQLをコンパイルする $ ./configure --enable-debug --enable-cassert --enable-tap-tests ¥ --prefix=$HOME/pgsql/xxx CFLAGS=-O0 $ make -j 4 $ make install デバッグしやすいようにオプションを指定する --enable-debug --enable-cassert --enable-tap-tests CFLAGS=-O0 インストール先のディレクトリを指定する --prefix 時間短縮のため複数多重でコンパイルするように -jオプションを指定するのがおススメ︕ パッチ適⽤やコンパイルで発⽣したエラー・警告は、レビューコメントとしてMLで報告する
  • 37. © 2024 NTT DATA Group Corporation 37 パッチを適⽤、コンパイル、テストする ⑨ contribモジュールをコンパイルする $ cd contrib $ make $ make install $ cd .. ⑩ ドキュメントをコンパイルする $ make html ⑪ リグレッションテストを実⾏する $ make -j 4 check-world コンパイルやテストで発⽣したエラー・警告は、レビューコメントとしてMLで報告する CF登録のパッチは⾃動的にテストが⾛り、 その結果をPatch Testerから確認できる http://cfbot.cputube.org/ 時間短縮のため複数多重でコンパイルするように -jオプションを指定するのがおススメ︕
  • 38. © 2024 NTT DATA Group Corporation 38 パッチを適⽤、コンパイル、テストする ⑫ PostgreSQLを起動する $ cd $HOME/pgsql/xxx $ bin/initdb -D data --locale=C --encoding=UTF8 $ bin/pg_ctl -D data start ⑬ パッチの新機能をテストする $ bin/psql ... ⑭ PostgreSQLを停⽌する $ bin/pg_ctl -D data stop 思いつく限りの新機能の使い⽅を試してみる︕例えば、 ⼊⼒のバリエーション (境界値、⼤規模データ、不正値など) ⼤量実⾏、複数多重同時実⾏ 物理/論理レプリケーション環境での動作 起動・停⽌やテストで発⽣したエラー・想定外動作は、レビューコメントとしてMLで報告する
  • 39. © 2024 NTT DATA Group Corporation 39 パッチをコーディング・レビューする コーディング規約やエラーメッセージのスタイルガイドに従っているか︖ https://www.postgresql.jp/document/current/html/source.html コメントやドキュメントに内容誤り(古い内容のまま)やTypoはないか︖ 関数名、変数名、マクロ名、ファイル名などの命名が分かりやすく適切か︖ 初期化忘れ、クローズ・解放忘れ、戻り値のチェック忘れなどのバグはないか︖ セグメンテーションフォルトやアサーションエラーを引き起こすコードパスはないか︖ 無駄、⾮効率、(必要以上に)複雑すぎる、理解しにくいコードはないか︖ 例えば、以下の観点でコード上気になる点をレビューコメントとしてMLで報告する
  • 40. © 2024 NTT DATA Group Corporation 40 レビューコメントを返信する レビューコメントの返信メールの例 (抜粋) 変数の初期値の誤りや 初期化忘れを指摘 カラム名の命名が 適切でないことの指摘
  • 41. © 2024 NTT DATA Group Corporation 41 パッチのステータスを変更する 「Change Status」を押して、 パッチのステータスを変更
  • 42. © 2024 NTT DATA Group Corporation 42 CommitFestのワークフロー Needs review レビュー待ち Waiting on Author 開発者の対応待ち Ready for Committer コミッタの判断待ち Committed コミット成功︕ Moved to next CF 次回CFでレビュー継続 Returned with Feedback 今回CFで⼗分にレビュー済 Rejected 提案却下 Withdrawn 提案撤回 パッチ修正 レビュー パッチ提案 レビュー完了 差し戻し コミット パッチレビュー中 パッチクローズ 提案撤回 提案却下 レビュー⼗分 CF終了 パッチ作者 レビュア コミッタ
  • 43. © 2024 NTT DATA Group Corporation 43 パッチのコミットを確認する コミットログの例 レビューしたパッチがコミットされると、 レビュアとして名前がコミットログに 記録される︕
  • 44. © 2024 NTT DATA Group Corporation 44 パッチを作成・投稿しよう︕
  • 45. © 2024 NTT DATA Group Corporation 45 パッチネタを⾒つける 研究成果やその関連技術をPostgreSQLに組み込む 成果が⼤きすぎる場合は、細かい技術要素に分けて、少しずつパッチ化できないか考える コミュニティでの議論やパッチレビューでパッチネタを⾒つける 議論中に新機能のアイデアが出ることや、レビュー中にPostgreSQLの不具合が⾒つかることが多い PostgreSQLの最新バージョンリリース前後に、そのバージョンの新機能を試す リリース前後は、新機能に不具合が含まれていることが多い
  • 46. © 2024 NTT DATA Group Corporation 46 PostgreSQL開発のフロー 新機能の提案やバグの報告を⾏う 新機能の必要性やユーザI/F、アーキテクチャ、 実現⽅法、バグ原因、修正⽅法などを議論する 議論結果を踏まえて、新機能やバグ修正を コーディングして、パッチを作成・投稿する パッチをレビューして、不備を改修する コミッタがパッチをPostgreSQL本体に取り込む 提案・バグ報告 議論 パッチ作成 レビュー コミット 繰 " 返 $ パッチネタについてまずはコミュニティで議論して、その結果にもとづいてパッチを作成するのが基本 パッチを作成してみないと提案・議論しにくい場合は、パッチを先に作成することも
  • 47. © 2024 NTT DATA Group Corporation 47 パッチを作成する ① masterブランチでソースを最新化して、パッチ⽤のブランチを作成する。 $ git checkout master $ git pull $ git checkout -b new-func ② ソースを改修して、その改修内容をコミットする。 $ emacs ... $ git commit -a -m "Add new func ..." ③ masterブランチからパッチ⽤ブランチへのソース差分をパッチとして作成する。 $ git format-patch master $ ls *.patch 0001-Add-new-func.patch
  • 48. © 2024 NTT DATA Group Corporation 48 パッチレビューの観点をクリアできているか 提案レビュー パッチは適⽤できるか︖ドキュメントやテストを含んでいるか︖ 仕様レビュー パッチは本当に必要か︖仕様はコミュニティで合意されているか︖ 機能テスト 仕様通りに動作するか︖クラッシュや想定外のエラーはないか︖ 性能試験 パッチにより性能劣化しないか︖ コーディング・レビュー Windowsでも動作するか︖コーディング規約に従っているか︖ アーキテクチャ・レビュー 他機能と⼀貫性のあるアーキテクチャか︖ https://wiki.postgresql.org/wiki/Reviewing_a_Patch/ja
  • 49. © 2024 NTT DATA Group Corporation 49 パッチレビューの観点をクリアできているか コーディング規約やエラーメッセージのスタイルガイドに従っているか︖ https://www.postgresql.jp/document/current/html/source.html コメントやドキュメントに内容誤り(古い内容のまま)やTypoはないか︖ 関数名、変数名、マクロ名、ファイル名などの命名が分かりやすく適切か︖ 初期化忘れ、クローズ・解放忘れ、戻り値のチェック忘れなどのバグはないか︖ セグメンテーションフォルトやアサーションエラーを引き起こすコードパスはないか︖ 無駄、⾮効率、(必要以上に)複雑すぎる、理解しにくいコードはないか︖
  • 50. © 2024 NTT DATA Group Corporation 50 PostgreSQL開発のサイクル 2023年度 2024年度 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11 CF CF CF CF CF v17開発 v16開発 v18開発 CF CF Beta / RC Beta / RC Feature Freeze リリース リリース コミュニティサポート CF CommitFest パッチレビューに 集中する期間
  • 51. © 2024 NTT DATA Group Corporation 51 CommitFestのワークフロー Needs review レビュー待ち Waiting on Author 開発者の対応待ち Ready for Committer コミッタの判断待ち Committed コミット成功︕ Moved to next CF 次回CFでレビュー継続 Returned with Feedback 今回CFで⼗分にレビュー済 Rejected 提案却下 Withdrawn 提案撤回 パッチ修正 レビュー パッチ提案 レビュー完了 差し戻し コミット パッチレビュー中 パッチクローズ 提案撤回 提案却下 レビュー⼗分 CF終了 パッチ作者 レビュア コミッタ
  • 52. © 2024 NTT DATA Group Corporation 52 パッチのコミットを確認する コミットログの例 作成したパッチがコミットされると、 作者として名前がコミットログに記録される︕ リリースノートの例 ユーザが知るべき機能・改変の場合は、 リリースノートにも記録される︕
  • 53. © 2024 NTT DATA Group Corporation 53 困ったときは⽇本のコミュニティで相談も 例えば、ほぼ⽉1ペースで開催のアンカンファレンスでバグのLTをするなど
  • 54. © 2024 NTT DATA Group Corporation 54 ライブコーディング
  • 55. © 2024 NTT DATA Group Corporation 55 ⾃⼰紹介 • 名前 • 加藤 慎也 @ShinyaKato_ • 所属 • 株式会社NTTデータグループ 技術開発本部 • 業務 • PostgreSQLコミュニティでの開発 • PostgreSQLの研究開発やサポート業務
  • 56. © 2024 NTT DATA Group Corporation 56 ① SQL処理部分を書き換えて、 TRUNCATEコマンドを実⾏できないように改造 ② ドキュメントの修正を⾏って、 実際にメーリングリストにパッチを投稿
  • 57. © 2024 NTT DATA Group Corporation 57 ① SQL処理部分を書き換えて、TRUNCATEコマンドを実⾏できないように改造 SQL処理部分の概要 Parser Analyzer Planner Executor 構⽂を解析する(⽂法的に正しければよい) テーブルや列が存在するかを確認する インデックススキャンやシーケンシャルスキャンなどの アクセス⽅法を決める Plannerが決めた⽅法でSQLを実⾏する ↑ここを書き換えてTRUNCATEコマンドを実⾏できないようにする
  • 58. © 2024 NTT DATA Group Corporation 58 PostgreSQLとデータベース研究との関わり
  • 59. © 2024 NTT DATA Group Corporation 59 PostgreSQLとデータベース研究の関わりを知るメリット PostgreSQL開発者 機能実装する際により効率的で優れた⼿法を知ることができる︕ PostgreSQL利⽤者 どんな理論に基づいて内部実装されているかを理解することで、より効果的にPostgreSQLを利⽤できる︕ データベース研究者 データベース研究がどのように実世界に適⽤されているかを知ることができる︕ 説得⼒のある研究背景が書けたり、研究のモチベーションアップにつながる︕ PostgreSQL開発者/利⽤者、データベース研究者それぞれに PostgreSQLとデータベース研究の関わりを知るメリットがある︕
  • 60. © 2024 NTT DATA Group Corporation 60 PostgreSQLの歴史(1/2) PostgreSQLはデータベース研究プロジェクトから誕⽣した︕ 1970年 E.F.Coddによりリレーショナルモデルが考案 1976年 INGRESプロジェクト始動 カリフォルニア⼤学バークレー校でM.Stonebrakerらが始めたリレーショナルデータベース開発プロジェクト 1986年 POSTGRESプロジェクト始動 POSTGRES = Post INGRES カリファルニア⼤学バークレー校でM.Stonebrakerらが始めたリレーショナルデータベース開発プロジェクト 1993年 POSTGRESプロジェクト終了 コミュニティの規模が⼤きくなり、本来データベースの研究に費やすべき時間が ソースコードの保守とサポートに使われているという課題
  • 61. © 2024 NTT DATA Group Corporation 61 PostgreSQLの歴史(2/2) PostgreSQLはデータベース研究プロジェクトから誕⽣した︕ 1995年 Postgres95 POSTGRESプロジェクトに参加していたAndrew YuとJolly Chenが POSTGRESに⼤規模な変更を加えPostgres95を開発 問い合わせ⾔語がPostQUELからSQLに 1996年 PostgreSQL誕⽣ PostgreSQL = POSTGRES + SQL POSTGRESプロジェクトでのバージョン番号に戻したため、初期バージョンは6.0 2024年3⽉現在 PostgreSQL 16.2 https://www.postgresql.org/docs/release/16.2/
  • 62. © 2024 NTT DATA Group Corporation 62 取り上げるトピック PostgreSQLのトランザクションとインデックスについて データベース研究との関わりを説明します︕ インデックス トランザクション ストレージエンジン セキュリティ バックアップ/リストア レプリケーション モニタリング クライアント/サーバ プログラム 拡張機能 PostgreSQL
  • 63. © 2024 NTT DATA Group Corporation 63 PostgreSQLのトランザクション分離レベル ANSI SQL標準*で定義されたトランザクション分離レベルを設定できるが、 内部実装としてはSIGMOD1995年の論⽂を参考にしている︕ 分離レベル 発⽣しうるアノマリー READ UNCOMMITTED ダーティリード ※内部的には実装されておらずPostgreSQLでは発⽣しない READ COMMITTED 反復不能読み取り REPEATABLE READ ファントムリード ※PostgreSQLでは発⽣しない SERIALIZABLE 直列化異常 *) 以下の論⽂で、ANSI SQL標準の分離レベルの定義は曖昧であると批判している。 また、PostgreSQLのトランザクション分離は以下の論⽂で定義されているスナップショット分離を MVCC(Multi-Version Concurrency Control)で実装することにより実現している。 Hal Berenson et al., A critique of ANSI SQL isolation levels (SIGMOD1995)
  • 64. © 2024 NTT DATA Group Corporation 64 Serializable Snapshot Isolation PostgreSQLのSERIALIZABLE分離は、 Serializable Snapshot Isolationにより実現している︕ 2008年 Serializable Snapshot Isolation(SSI)が提案 Michael J. Cahill et al., Serializable Isolation for Snapshot Databases (SIGMOD2008) Snapshot Isolationで発⽣する異常を⾃動的に検出して防⽌することでSERIALIZABLE分離を実現 2012年 PostgreSQLでのSSIの実装に関する論⽂が発表 Dan R. K. Ports and Kevin Grittner, Serializable Snapshot Isolation in PostgreSQL (VLDB2012) 性能はSIよりわずかに劣るものの、従来の2PL(2 Phase Lock)よりも⼤幅な性能向上を実現 2011年 PostgreSQL 9.1にSSIベースのSERIALIZABLE分離に変更 https://www.postgresql.org/docs/9.1/release-9-1.html
  • 65. © 2024 NTT DATA Group Corporation 65 B⽊インデックス Blink⽊ Philip L. Lehman and S. Bing Yao, Efficient Locking for Concurrent Operations on B-Trees (TODS1981) B+⽊に、High Keyと兄弟ノードへのポインタを実装し最適化 PostgreSQLの実装 上の論⽂の実装に加えて、下の論⽂の削除ロジックの簡易版を実装 Vladimir Lanin and Dennis Shasha, A Symmetric Concurrent B-tree Algorithm (ACM Fall Joint Computer Conference 1986) PostgreSQLはB+⽊を改良したBlink⽊を実装している︕
  • 66. © 2024 NTT DATA Group Corporation 66 GiSTインデックス GiSTインデックスとは︖ Joseph M. Hellerstein et al., Generalized Search Trees for Database Systems (VLDB1995) インデックスを実装する際のテンプレートであり、データベースの専⾨家以外でもインデックスを実装すること容易にする GiSTインデックスプロジェクト カリフォルニア⼤学バークレー校のGiSTインデックス研究プロジェクト https://gist.cs.berkeley.edu/ PostgreSQLのGiST(Generalized Search Tree)インデックスは カリフォルニア⼤学バークレー校の研究プロジェクトから開発が始まった︕
  • 67. © 2024 NTT DATA Group Corporation 67 SP-GiSTインデックス SP-GiSTインデックスとは︖ Walid G. Aref and Ihab F. Ilyas, SP-GiST: An Extensible Database Index for Supporting Space Partitioning Trees, Journal of Intelligent Information Systems (JIIS2001) 空間分割された探索⽊(四分⽊、kd⽊など)を開発可能とするGiST SP-GiSTインデックスプロジェクト パデュー⼤学のSP-GiSTインデックス研究プロジェクト https://www.cs.purdue.edu/spgist/ PostgreSQLのSP-GiST(Space-Partitioned GiST)インデックスは パデュー⼤学の研究プロジェクトから開発が始まった︕
  • 68. © 2024 NTT DATA Group Corporation 68 NTTデータグループの研究開発 • あ PostgreSQLのスケールアウトの実現に向けた取り組みにおいても、 最新論⽂の知⾒を参考にしている部分が多々あります︕ DEIM2023の技術報告資料より
  • 69. © 2024 NTT DATA Group Corporation 69 NTTデータグループのインターンシップ NTTデータグループのインターンでは、PostgreSQLの機能開発や改善を PostgreSQL開発者とともに経験することができます︕ インターン⽣が開発した機能の例 • Disallow MERGE cleanly for foreign partitions • psql: Improve tab-completion for MERGE. • Fix pg_stat_statements for MERGE • Remove definition of JUMBLE_SIZE from queryjumble.h • Improve HINT message that FDW reports when there are no valid options. • psql: Improve tab-completion for LOCK TABLE. • Make autovacuum launcher more responsive to pg_log_backend_memory_contexts(). https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=cba4e78f3599f7edc3fb53d1b094f037fbb8158a https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=9a6915257d1d804ddba05331030b74d7426a4005 https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=249b0409b181311bb1c375311e43eb767b5c3bdd https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=839c2520a7937b8895ff84fc8fc718dbfab5e72e https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=5fedf7417b69295294b154a219edd8a26eaa6ab6 https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=0b0d277c35533baecc8d1a9356f71de5f2ee0bd8 https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=e3e29cec10d15bbcedc6b41887d8f4e138d719bd
  • 70. © 2024 NTT DATA Group Corporation 70 まとめ • オープンソースのRDBMSであるPostgreSQLの概要を説明しました。 • PostgreSQLコミュニティに参加し、パッチを開発する⽅法を説明しました。 • ライブコーディングで以下を⾏いました。 • TRUNCATEコマンドの実⾏を禁⽌する改造 • ドキュメント修正パッチの作成からメール送信 • PostgreSQLとデータベース研究の関わりについて説明しました。 興味をもって頂けた⽅は ぜひNTTデータの企業ブースまでお越しください︕