Movatterモバイル変換


[0]ホーム

URL:


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

OSSデータベースの開発コミュニティに参加しよう!(DEIM2024 発表資料)2024年3月4日(月)株式会社NTTデータグループ技術開発本部藤井 雅雄、加藤 慎也

Embed presentation

© 2024 NTT DATA Group Corporation© 2024 NTT DATA Group CorporationDEIM2024OSSデータベースの開発コミュニティに参加しよう︕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_masaoMasaoFujii
© 2024 NTT DATA Group Corporation 4PostgreSQLの概要
© 2024 NTT DATA Group Corporation 5いろいろなデータベース製品・サービスIgniteカラム指向CassandraHBaseドキュメント指向Couchbaseグラフ指向Neo4jMemgraphKVSRedisetcdMongoDBインメモリデータグリッドHazelcastGeodeOracle汎⽤RDBPostgreSQL組込DBSQLiteDWH・情報系SnowflakeBigQueryRedshiftTeradataNewSQL Spanner TiDB YugabyteDBCockroachDBMySQLMariaDBリレーショナル⾮リレーショナル
© 2024 NTT DATA Group Corporation 6PostgreSQLとはオープンソースの定番RDBMSのひとつ豊富な機能/商⽤製品との親和性コミュニティによるオープンな開発・保守トランザクション保障⽇本語対応ストアドプロシージャSQL標準ビュー/トリガ BSDライクなライセンス優れたクエリプランナ
© 2024 NTT DATA Group Corporation 7PostgreSQLのライセンスThe PostgreSQL Licencehttps://opensource.org/license/postgresqlBSDに似たライセンスで、使⽤、変更、配布を個⼈、商⽤、学術など、⽬的に限らず無償で可能。例えば、PostgreSQLを改変して商⽤製品を作ることも、そのソースを⾮公開にすることもできる。PostgreSQL開発コミュニティは、ライセンスを変更したり、別のライセンスでPostgreSQLをリリースする予定はない。https://www.postgresql.org/about/licence/
© 2024 NTT DATA Group Corporation 8PostgreSQLの⼈気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 9PostgreSQL開発コミュニティに参加しよう︕
© 2024 NTT DATA Group Corporation 10PostgreSQLコミュニティ (グローバル)The PostgreSQL Global Development GroupPostgreSQL本体を開発しているコミュニティLocal User Groups世界各地 (33ヶ国62地域) にあるPostgreSQLユーザグループPUG = PostgreSQL User GroupEvents世界各地でPostgreSQLに関するカンファレンスなどのイベントが開催Slack, IRC, LinkedIn, etc様々なチャンネルでPostgreSQLユーザが集まってコミュニケーション
© 2024 NTT DATA Group Corporation 11PostgreSQLコミュニティ (⽇本)⽇本PostgreSQLユーザ会⽇本のPostgreSQLユーザグループJPUG = Japan PostgreSQL User Group⽀部北海道、東北、新潟、名古屋、関⻄、四国、中国、九州、沖縄⽂書・書籍関連分科会PostgreSQL関連の⽂書の翻訳PostgreSQLエンタープライズ・コンソーシアムPostgreSQLの普及推進を⽬的とする企業コンソーシアムPGECons = PostgreSQL Enterprise Consortium
© 2024 NTT DATA Group Corporation 12PostgreSQLコミュニティ (⽇本)Events⽇本の様々なコミュニティ・団体・企業・個⼈がカンファレンスなどのイベントを開催PostgreSQL Conference JapanPostgreSQLアンカンファレンス ...etcSlackPostgreSQLに関する⽇本語Slack
© 2024 NTT DATA Group Corporation 13PostgreSQLコミュニティ (グローバル)The PostgreSQL Global Development GroupPostgreSQL本体を開発しているコミュニティLocal User Groups世界各地 (35ヶ国67地域) にあるPostgreSQLユーザグループPUG = PostgreSQL User GroupEvents世界各地でPostgreSQLに関するカンファレンスなどのイベントが開催Slack, IRC, LinkedIn, etc様々なチャンネルでPostgreSQLユーザが集まってコミュニケーションPostgreSQL開発コミュニティに参加しよう︕
© 2024 NTT DATA Group Corporation 14The PostgreSQL Global Development Groupメーリングリスト WikiGitレポジトリコアチーム コミッタ開発、レビュー、テスト、バグ報告コントリビュータユーザ
© 2024 NTT DATA Group Corporation 15The PostgreSQL Global Development Groupメーリングリスト WikiGitレポジトリコアチーム コミッタ開発、レビュー、テスト、バグ報告コントリビュータユーザ参加選出選出7名30名v16開発では361名
© 2024 NTT DATA Group Corporation 16The PostgreSQL Global Development Groupに参加の企業例企業別の所属コミッタ数(2024年3⽉時点)count | company-------+-------------------------7 | EnterpriseDB6 | Amazon Web Services5 | Microsoft1 | Crunchy Data1 | Fujitsu1 | Google Cloud Platform1 | Individuals1 | Instaclustr1 | NTT1 | NTT DATA1 | Neon, Inc1 | Redpill Linpro1 | SRA OSS1 | 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 19PostgreSQL開発のフロー新機能の提案やバグの報告を⾏う新機能の必要性やユーザ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/translatorhttps://www.grammarly.com/⽂を無理に⻑くしない、箇条書きにする、例を出して説明する他の⼈のメールやPostgreSQLドキュメント、ソースコメントの英⽂を参考にする
© 2024 NTT DATA Group Corporation 26レビューに参加しよう︕
© 2024 NTT DATA Group Corporation 27PostgreSQL開発のサイクル2023年度 2024年度6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11CF CF CF CF CFv17開発v16開発v18開発CF CFBeta / RCBeta / RCFeatureFreeze リリースリリースコミュニティサポートCFCommitFestパッチレビューに集中する期間
© 2024 NTT DATA Group Corporation 28CommitFestCommitFest Appでレビュー対象のパッチを⼀覧管理https://commitfest.postgresql.org/
© 2024 NTT DATA Group Corporation 29CommitFestのワークフローNeeds reviewレビュー待ちWaiting on Author開発者の対応待ちReady forCommitterコミッタの判断待ちCommittedコミット成功︕Moved to next CF次回CFでレビュー継続Returned withFeedback今回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 branchmaster* 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-testsCFLAGS=-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 42CommitFestのワークフローNeeds reviewレビュー待ちWaiting on Author開発者の対応待ちReady forCommitterコミッタの判断待ちCommittedコミット成功︕Moved to next CF次回CFでレビュー継続Returned withFeedback今回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 46PostgreSQL開発のフロー新機能の提案やバグの報告を⾏う新機能の必要性やユーザ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 *.patch0001-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 50PostgreSQL開発のサイクル2023年度 2024年度6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11CF CF CF CF CFv17開発v16開発v18開発CF CFBeta / RCBeta / RCFeatureFreeze リリースリリースコミュニティサポートCFCommitFestパッチレビューに集中する期間
© 2024 NTT DATA Group Corporation 51CommitFestのワークフローNeeds reviewレビュー待ちWaiting on Author開発者の対応待ちReady forCommitterコミッタの判断待ちCommittedコミット成功︕Moved to next CF次回CFでレビュー継続Returned withFeedback今回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処理部分の概要ParserAnalyzerPlannerExecutor構⽂を解析する(⽂法的に正しければよい)テーブルや列が存在するかを確認するインデックススキャンやシーケンシャルスキャンなどのアクセス⽅法を決めるPlannerが決めた⽅法でSQLを実⾏する↑ここを書き換えてTRUNCATEコマンドを実⾏できないようにする
© 2024 NTT DATA Group Corporation 58PostgreSQLとデータベース研究との関わり
© 2024 NTT DATA Group Corporation 59PostgreSQLとデータベース研究の関わりを知るメリットPostgreSQL開発者機能実装する際により効率的で優れた⼿法を知ることができる︕PostgreSQL利⽤者どんな理論に基づいて内部実装されているかを理解することで、より効果的にPostgreSQLを利⽤できる︕データベース研究者データベース研究がどのように実世界に適⽤されているかを知ることができる︕説得⼒のある研究背景が書けたり、研究のモチベーションアップにつながる︕PostgreSQL開発者/利⽤者、データベース研究者それぞれにPostgreSQLとデータベース研究の関わりを知るメリットがある︕
© 2024 NTT DATA Group Corporation 60PostgreSQLの歴史(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 61PostgreSQLの歴史(2/2)PostgreSQLはデータベース研究プロジェクトから誕⽣した︕1995年 Postgres95POSTGRESプロジェクトに参加していたAndrew YuとJolly ChenがPOSTGRESに⼤規模な変更を加えPostgres95を開発問い合わせ⾔語がPostQUELからSQLに1996年 PostgreSQL誕⽣PostgreSQL = POSTGRES + SQLPOSTGRESプロジェクトでのバージョン番号に戻したため、初期バージョンは6.02024年3⽉現在 PostgreSQL 16.2https://www.postgresql.org/docs/release/16.2/
© 2024 NTT DATA Group Corporation 62取り上げるトピックPostgreSQLのトランザクションとインデックスについてデータベース研究との関わりを説明します︕インデックストランザクション ストレージエンジンセキュリティ バックアップ/リストア レプリケーションモニタリングクライアント/サーバプログラム拡張機能PostgreSQL
© 2024 NTT DATA Group Corporation 63PostgreSQLのトランザクション分離レベル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 64Serializable Snapshot IsolationPostgreSQLの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 65B⽊インデックス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 66GiSTインデックス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 67SP-GiSTインデックスSP-GiSTインデックスとは︖Walid G. Aref and Ihab F. Ilyas, SP-GiST: An Extensible Database Index for SupportingSpace Partitioning Trees, Journal of Intelligent Information Systems (JIIS2001)空間分割された探索⽊(四分⽊、kd⽊など)を開発可能とするGiSTSP-GiSTインデックスプロジェクトパデュー⼤学のSP-GiSTインデックス研究プロジェクトhttps://www.cs.purdue.edu/spgist/PostgreSQLのSP-GiST(Space-Partitioned GiST)インデックスはパデュー⼤学の研究プロジェクトから開発が始まった︕
© 2024 NTT DATA Group Corporation 68NTTデータグループの研究開発• あ PostgreSQLのスケールアウトの実現に向けた取り組みにおいても、最新論⽂の知⾒を参考にしている部分が多々あります︕DEIM2023の技術報告資料より
© 2024 NTT DATA Group Corporation 69NTTデータグループのインターンシップ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 fromqueryjumble.h• Improve HINT message that FDW reports whenthere are no valid options.• psql: Improve tab-completion for LOCK TABLE.• Make autovacuum launcher more responsive topg_log_backend_memory_contexts().https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=cba4e78f3599f7edc3fb53d1b094f037fbb8158ahttps://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=9a6915257d1d804ddba05331030b74d7426a4005https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=249b0409b181311bb1c375311e43eb767b5c3bddhttps://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=839c2520a7937b8895ff84fc8fc718dbfab5e72ehttps://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=5fedf7417b69295294b154a219edd8a26eaa6ab6https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=0b0d277c35533baecc8d1a9356f71de5f2ee0bd8https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=e3e29cec10d15bbcedc6b41887d8f4e138d719bd
© 2024 NTT DATA Group Corporation 70まとめ• オープンソースのRDBMSであるPostgreSQLの概要を説明しました。• PostgreSQLコミュニティに参加し、パッチを開発する⽅法を説明しました。• ライブコーディングで以下を⾏いました。• TRUNCATEコマンドの実⾏を禁⽌する改造• ドキュメント修正パッチの作成からメール送信• PostgreSQLとデータベース研究の関わりについて説明しました。興味をもって頂けた⽅はぜひNTTデータの企業ブースまでお越しください︕
記載されている会社名、商品名、⼜はサービス名は、各社の登録商標⼜は商標です。

Recommended

PPTX
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PDF
論理レプリケーション用スロットのフェールオーバ機能 (第48回 PostgreSQLアンカンファレンス 発表資料)
PPTX
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PPTX
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
PDF
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
PPTX
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
PDF
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PDF
PostgreSQLコミュニティに飛び込もう
PDF
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PDF
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
PPTX
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PPTX
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
PDF
Apache Arrow - データ処理ツールの次世代プラットフォーム
PDF
分散トレーシング技術について(Open tracingやjaeger)
PDF
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
PPTX
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
PDF
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
PPTX
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PDF
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PPTX
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PDF
Vacuum徹底解説
PDF
dbt Cloud intro 日本語 202206
PPTX
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
PDF
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
PDF
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima

More Related Content

PPTX
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PDF
論理レプリケーション用スロットのフェールオーバ機能 (第48回 PostgreSQLアンカンファレンス 発表資料)
PPTX
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PPTX
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
PDF
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
PPTX
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
PDF
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
論理レプリケーション用スロットのフェールオーバ機能 (第48回 PostgreSQLアンカンファレンス 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)

What's hot

PDF
PostgreSQLコミュニティに飛び込もう
PDF
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PDF
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
PPTX
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PPTX
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
PDF
Apache Arrow - データ処理ツールの次世代プラットフォーム
PDF
分散トレーシング技術について(Open tracingやjaeger)
PDF
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
PPTX
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
PDF
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
PPTX
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PDF
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PPTX
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PDF
Vacuum徹底解説
PDF
dbt Cloud intro 日本語 202206
PPTX
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
PostgreSQLコミュニティに飛び込もう
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
Apache Arrow - データ処理ツールの次世代プラットフォーム
分散トレーシング技術について(Open tracingやjaeger)
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
Vacuum徹底解説
dbt Cloud intro 日本語 202206
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)

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

PDF
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
PDF
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PDF
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
PDF
PostgreSQLコミュニティにおける開発プロセスとプロジェクトマネジメント (PM学会 2024年度秋季研究発表大会 発表資料)
PDF
JTF2021w F3 postgresql frontline
PDF
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう by PostgreS...
PDF
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PDF
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
PDF
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
PDF
PostgreSQLのgitレポジトリから見える2020年の開発状況(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
10大ニュースで振り返るpg con2013
PDF
【Jpug勉強会】10大ニュースで振り返るpg con2013
PDF
PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会
PDF
20191115-PGconf.Japan
PDF
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
PDF
PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介
PDF
NTT DATA と PostgreSQL が挑んだ総力戦
PDF
The Digital Experiences with Postgresql in Taiwan
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
PostgreSQLコミュニティにおける開発プロセスとプロジェクトマネジメント (PM学会 2024年度秋季研究発表大会 発表資料)
JTF2021w F3 postgresql frontline
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう by PostgreS...
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
PostgreSQLのgitレポジトリから見える2020年の開発状況(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
10大ニュースで振り返るpg con2013
【Jpug勉強会】10大ニュースで振り返るpg con2013
PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会
20191115-PGconf.Japan
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
PostgreSQLの新バージョン -PostgreSQL9.4- のご紹介
NTT DATA と PostgreSQL が挑んだ総力戦
The Digital Experiences with Postgresql in Taiwan

More from NTT DATA Technology & Innovation

PDF
基礎から学ぶ PostgreSQL の性能監視 (PostgreSQL Conference Japan 2025 発表資料)
PDF
SAFe実践から見えた、フレームワークより大切な組織変革の道程(Scrum Fest Sendai 2025 発表資料)
PDF
開発中の新機能 Spark Declarative Pipeline に飛びついてみたが難しかった(JEDAI DAIS Recap#2 講演資料)
PDF
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
PDF
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
PDF
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
PDF
2025年現在のNewSQL (最強DB講義 #36 発表資料)
PDF
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
PDF
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
PDF
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
PDF
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
PDF
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PDF
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
PDF
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
PDF
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PDF
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
PDF
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
基礎から学ぶ PostgreSQL の性能監視 (PostgreSQL Conference Japan 2025 発表資料)
SAFe実践から見えた、フレームワークより大切な組織変革の道程(Scrum Fest Sendai 2025 発表資料)
開発中の新機能 Spark Declarative Pipeline に飛びついてみたが難しかった(JEDAI DAIS Recap#2 講演資料)
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
2025年現在のNewSQL (最強DB講義 #36 発表資料)
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...

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

  • 1.
    © 2024 NTTDATA Group Corporation© 2024 NTT DATA Group CorporationDEIM2024OSSデータベースの開発コミュニティに参加しよう︕2024年3⽉4⽇NTTデータグループ 藤井雅雄、加藤慎也
  • 2.
    © 2024 NTTDATA Group Corporation 2アジェンダPostgreSQLの概要PostgreSQL開発コミュニティに参加しよう︕(開発コミュニティでの議論、パッチレビュー、パッチ作成・投稿)ライブコーディングPostgreSQLとデータベース研究との関わり
  • 3.
    © 2024 NTTDATA Group Corporation 3⾃⼰紹介藤井 雅雄Database Technical Lead @ NTTデータグループデータベース研究開発PostgreSQL 技術⽀援PostgreSQLコミッタレプリケーションWAL圧縮バックアップ進捗確認pg_bigm(全⽂検索モジュール) コミッタfujii_masaoMasaoFujii
  • 4.
    © 2024 NTTDATA Group Corporation 4PostgreSQLの概要
  • 5.
    © 2024 NTTDATA Group Corporation 5いろいろなデータベース製品・サービスIgniteカラム指向CassandraHBaseドキュメント指向Couchbaseグラフ指向Neo4jMemgraphKVSRedisetcdMongoDBインメモリデータグリッドHazelcastGeodeOracle汎⽤RDBPostgreSQL組込DBSQLiteDWH・情報系SnowflakeBigQueryRedshiftTeradataNewSQL Spanner TiDB YugabyteDBCockroachDBMySQLMariaDBリレーショナル⾮リレーショナル
  • 6.
    © 2024 NTTDATA Group Corporation 6PostgreSQLとはオープンソースの定番RDBMSのひとつ豊富な機能/商⽤製品との親和性コミュニティによるオープンな開発・保守トランザクション保障⽇本語対応ストアドプロシージャSQL標準ビュー/トリガ BSDライクなライセンス優れたクエリプランナ
  • 7.
    © 2024 NTTDATA Group Corporation 7PostgreSQLのライセンスThe PostgreSQL Licencehttps://opensource.org/license/postgresqlBSDに似たライセンスで、使⽤、変更、配布を個⼈、商⽤、学術など、⽬的に限らず無償で可能。例えば、PostgreSQLを改変して商⽤製品を作ることも、そのソースを⾮公開にすることもできる。PostgreSQL開発コミュニティは、ライセンスを変更したり、別のライセンスでPostgreSQLをリリースする予定はない。https://www.postgresql.org/about/licence/
  • 8.
    © 2024 NTTDATA Group Corporation 8PostgreSQLの⼈気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 NTTDATA Group Corporation 9PostgreSQL開発コミュニティに参加しよう︕
  • 10.
    © 2024 NTTDATA Group Corporation 10PostgreSQLコミュニティ (グローバル)The PostgreSQL Global Development GroupPostgreSQL本体を開発しているコミュニティLocal User Groups世界各地 (33ヶ国62地域) にあるPostgreSQLユーザグループPUG = PostgreSQL User GroupEvents世界各地でPostgreSQLに関するカンファレンスなどのイベントが開催Slack, IRC, LinkedIn, etc様々なチャンネルでPostgreSQLユーザが集まってコミュニケーション
  • 11.
    © 2024 NTTDATA Group Corporation 11PostgreSQLコミュニティ (⽇本)⽇本PostgreSQLユーザ会⽇本のPostgreSQLユーザグループJPUG = Japan PostgreSQL User Group⽀部北海道、東北、新潟、名古屋、関⻄、四国、中国、九州、沖縄⽂書・書籍関連分科会PostgreSQL関連の⽂書の翻訳PostgreSQLエンタープライズ・コンソーシアムPostgreSQLの普及推進を⽬的とする企業コンソーシアムPGECons = PostgreSQL Enterprise Consortium
  • 12.
    © 2024 NTTDATA Group Corporation 12PostgreSQLコミュニティ (⽇本)Events⽇本の様々なコミュニティ・団体・企業・個⼈がカンファレンスなどのイベントを開催PostgreSQL Conference JapanPostgreSQLアンカンファレンス ...etcSlackPostgreSQLに関する⽇本語Slack
  • 13.
    © 2024 NTTDATA Group Corporation 13PostgreSQLコミュニティ (グローバル)The PostgreSQL Global Development GroupPostgreSQL本体を開発しているコミュニティLocal User Groups世界各地 (35ヶ国67地域) にあるPostgreSQLユーザグループPUG = PostgreSQL User GroupEvents世界各地でPostgreSQLに関するカンファレンスなどのイベントが開催Slack, IRC, LinkedIn, etc様々なチャンネルでPostgreSQLユーザが集まってコミュニケーションPostgreSQL開発コミュニティに参加しよう︕
  • 14.
    © 2024 NTTDATA Group Corporation 14The PostgreSQL Global Development Groupメーリングリスト WikiGitレポジトリコアチーム コミッタ開発、レビュー、テスト、バグ報告コントリビュータユーザ
  • 15.
    © 2024 NTTDATA Group Corporation 15The PostgreSQL Global Development Groupメーリングリスト WikiGitレポジトリコアチーム コミッタ開発、レビュー、テスト、バグ報告コントリビュータユーザ参加選出選出7名30名v16開発では361名
  • 16.
    © 2024 NTTDATA Group Corporation 16The PostgreSQL Global Development Groupに参加の企業例企業別の所属コミッタ数(2024年3⽉時点)count | company-------+-------------------------7 | EnterpriseDB6 | Amazon Web Services5 | Microsoft1 | Crunchy Data1 | Fujitsu1 | Google Cloud Platform1 | Individuals1 | Instaclustr1 | NTT1 | NTT DATA1 | Neon, Inc1 | Redpill Linpro1 | SRA OSS1 | Supabase Inc.1 | University of Cambridge
  • 17.
    © 2024 NTTDATA Group Corporation 17モチベーションPostgreSQL開発コミュニティになぜ参加したいか︖技術者にとってのモチベーションの例としては、① PostgreSQLの内部や設計思想、仕様、制約などを深く理解できる。PostgreSQLを効果的に利⽤できるようになる② 世界中の様々な技術者たちの考えに触れることで、技術者としての⾒識が⼤きく広がる。様々な技術者とのパイプができる③ パッチの作成やレビューを通じて、コーディングスキルが向上する④ 新機能開発やバグ修正の成果に対して世界中から感謝される。⾃⾝の成果として名前が残り、セルフブランディングになる
  • 18.
    © 2024 NTTDATA Group Corporation 18モチベーションPostgreSQL開発コミュニティになぜ参加したいか︖事業者にとってのモチベーションの例としては、① データベース技術の最新動向について早期に情報を⼊⼿でき、事業に活かすことで、その事業領域でのプレゼンスを獲得できる② 世界中の様々な企業・技術者とパイプができ、他社とのアライアンスなどの機会につながる可能性がある③ 事業で必要な機能やバグ修正をPostgreSQLに取り込める。事業者の技術⼒アピールやブランド⼒を向上できる
  • 19.
    © 2024 NTTDATA Group Corporation 19PostgreSQL開発のフロー新機能の提案やバグの報告を⾏う新機能の必要性やユーザI/F、アーキテクチャ、実現⽅法、バグ原因、修正⽅法などを議論する議論結果を踏まえて、新機能やバグ修正をコーディングして、パッチを作成・投稿するパッチをレビューして、不備を改修するコミッタがパッチをPostgreSQL本体に取り込む提案・バグ報告議論パッチ作成レビューコミット繰"返$
  • 20.
    © 2024 NTTDATA Group Corporation 20議論に参加しよう︕
  • 21.
    © 2024 NTTDATA Group Corporation 21メーリングリストの購読PostgreSQL開発コミュニティでのコミュニケーションはメーリングリストが基本PostgreSQL公式サイトでコミュニティアカウントを作成して、4つのMLを購読pgsql-hackers新機能の提案やバグ修正、開発課題などについて議論するpgsql-bugsユーザからのバグ報告先。報告されたバグやその修正などについて議論するpgsql-docsドキュメントやその問題、改修などについて議論するpgsql-committersコミットされた内容が通知される過去の議論内容は、各メーリングリストのアーカイブから確認可能https://www.postgresql.org/list/
  • 22.
    © 2024 NTTDATA Group Corporation 22議論を読む藤井がv13向けにバックアップ取得の進捗確認機能を提案したときのメール
  • 23.
    © 2024 NTTDATA Group Corporation 23議論を読むコツ興味あるテーマ・機能・バグの議論から読むOSS-DBの資格取得などを通じてPostgreSQLの体系的な事前知識を得ておく英語の⻑い議論を⼿軽に読みたいときは、翻訳サイトなども活⽤例えば、Shaperで英⽂を整形して、DeepLで⽇本語翻訳https://dream-exp.net/shaper/https://www.deepl.com/translator
  • 24.
    © 2024 NTTDATA Group Corporation 24議論で返信する宛先にMLを含める内容は公開されることに注意bottom-posting返信したい対象の⽂章を引⽤して、その下に返信を記載する⾏動規範に則った発⾔https://www.postgresql.org/about/policies/coc/ja/引⽤返信引⽤返信
  • 25.
    © 2024 NTTDATA Group Corporation 25議論で返信するコツ翻訳サイトなどを活⽤して、英⽂を作成例えば、⽇本語で⽂章を作成して、DeepLで英語翻訳、Grammarlyで添削https://www.deepl.com/translatorhttps://www.grammarly.com/⽂を無理に⻑くしない、箇条書きにする、例を出して説明する他の⼈のメールやPostgreSQLドキュメント、ソースコメントの英⽂を参考にする
  • 26.
    © 2024 NTTDATA Group Corporation 26レビューに参加しよう︕
  • 27.
    © 2024 NTTDATA Group Corporation 27PostgreSQL開発のサイクル2023年度 2024年度6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11CF CF CF CF CFv17開発v16開発v18開発CF CFBeta / RCBeta / RCFeatureFreeze リリースリリースコミュニティサポートCFCommitFestパッチレビューに集中する期間
  • 28.
    © 2024 NTTDATA Group Corporation 28CommitFestCommitFest Appでレビュー対象のパッチを⼀覧管理https://commitfest.postgresql.org/
  • 29.
    © 2024 NTTDATA Group Corporation 29CommitFestのワークフローNeeds reviewレビュー待ちWaiting on Author開発者の対応待ちReady forCommitterコミッタの判断待ちCommittedコミット成功︕Moved to next CF次回CFでレビュー継続Returned withFeedback今回CFで⼗分にレビュー済Rejected提案却下Withdrawn提案撤回パッチ修正 レビューパッチ提案レビュー完了差し戻しコミットパッチレビュー中 パッチクローズ提案撤回提案却下レビュー⼗分CF終了パッチ作者 レビュア コミッタ
  • 30.
    © 2024 NTTDATA Group Corporation 30レビューするパッチを決める興味ある機能や分野のパッチレビューしやすいパッチドキュメントやテストケースのパッチ独⽴した機能などで影響範囲の⼩さいパッチ(クライアントツール、contribモジュール、SQL関数など)サイズの⼩さいパッチ仕様やI/Fなどの内容がコミュニティで合意済のパッチメインのレビュアがいるパッチメインのレビュアによるレビュー内容を勉強しながら、サブのレビュアとして取り組む
  • 31.
    © 2024 NTTDATA Group Corporation 31レビュアとして登録するCommitFest App「Become reviewer」を押して、レビュアとして登録CF App 内の各パッチのページ
  • 32.
    © 2024 NTTDATA Group Corporation 32パッチを⼊⼿する〜パッチをダウンロードCF App 内の各パッチのページ ML上でパッチについて議論しているメール
  • 33.
    © 2024 NTTDATA Group Corporation 33パッチをレビューする提案レビューパッチは適⽤できるか︖ドキュメントやテストを含んでいるか︖仕様レビューパッチは本当に必要か︖仕様はコミュニティで合意されているか︖機能テスト仕様通りに動作するか︖クラッシュや想定外のエラーはないか︖性能試験パッチにより性能劣化しないか︖コーディング・レビューWindowsでも動作するか︖コーディング規約に従っているか︖アーキテクチャ・レビュー他機能と⼀貫性のあるアーキテクチャか︖https://wiki.postgresql.org/wiki/Reviewing_a_Patch/jaレビューコメントとしてMLで返信する
  • 34.
    © 2024 NTTDATA 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 NTTDATA Group Corporation 35パッチを適⽤、コンパイル、テストする④ PostgreSQLのgitレポジトリをクローンする$ git clone git://git.postgresql.org/git/postgresql.git⑤ パッチ適⽤先ブランチをチェックアウトする$ cd postgresql$ git checkout master⑥ パッチ⽤の新規ブランチを作成する$ git checkout -b xxx$ git branchmaster* xxx基本的に「開発中の最新メジャーバージョン」のmasterブランチがパッチ適⽤先⼿元環境だとクローンにかかった時間は約15分レビュー完了後などにパッチ適⽤を⼿軽にクリアできるように、パッチ⽤のブランチを作成するのがおススメ︕
  • 36.
    © 2024 NTTDATA 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-testsCFLAGS=-O0インストール先のディレクトリを指定する--prefix時間短縮のため複数多重でコンパイルするように-jオプションを指定するのがおススメ︕パッチ適⽤やコンパイルで発⽣したエラー・警告は、レビューコメントとしてMLで報告する
  • 37.
    © 2024 NTTDATA 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 NTTDATA 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 NTTDATA Group Corporation 39パッチをコーディング・レビューするコーディング規約やエラーメッセージのスタイルガイドに従っているか︖https://www.postgresql.jp/document/current/html/source.htmlコメントやドキュメントに内容誤り(古い内容のまま)やTypoはないか︖関数名、変数名、マクロ名、ファイル名などの命名が分かりやすく適切か︖初期化忘れ、クローズ・解放忘れ、戻り値のチェック忘れなどのバグはないか︖セグメンテーションフォルトやアサーションエラーを引き起こすコードパスはないか︖無駄、⾮効率、(必要以上に)複雑すぎる、理解しにくいコードはないか︖例えば、以下の観点でコード上気になる点をレビューコメントとしてMLで報告する
  • 40.
    © 2024 NTTDATA Group Corporation 40レビューコメントを返信するレビューコメントの返信メールの例 (抜粋)変数の初期値の誤りや初期化忘れを指摘カラム名の命名が適切でないことの指摘
  • 41.
    © 2024 NTTDATA Group Corporation 41パッチのステータスを変更する「Change Status」を押して、パッチのステータスを変更
  • 42.
    © 2024 NTTDATA Group Corporation 42CommitFestのワークフローNeeds reviewレビュー待ちWaiting on Author開発者の対応待ちReady forCommitterコミッタの判断待ちCommittedコミット成功︕Moved to next CF次回CFでレビュー継続Returned withFeedback今回CFで⼗分にレビュー済Rejected提案却下Withdrawn提案撤回パッチ修正 レビューパッチ提案レビュー完了差し戻しコミットパッチレビュー中 パッチクローズ提案撤回提案却下レビュー⼗分CF終了パッチ作者 レビュア コミッタ
  • 43.
    © 2024 NTTDATA Group Corporation 43パッチのコミットを確認するコミットログの例レビューしたパッチがコミットされると、レビュアとして名前がコミットログに記録される︕
  • 44.
    © 2024 NTTDATA Group Corporation 44パッチを作成・投稿しよう︕
  • 45.
    © 2024 NTTDATA Group Corporation 45パッチネタを⾒つける研究成果やその関連技術をPostgreSQLに組み込む成果が⼤きすぎる場合は、細かい技術要素に分けて、少しずつパッチ化できないか考えるコミュニティでの議論やパッチレビューでパッチネタを⾒つける議論中に新機能のアイデアが出ることや、レビュー中にPostgreSQLの不具合が⾒つかることが多いPostgreSQLの最新バージョンリリース前後に、そのバージョンの新機能を試すリリース前後は、新機能に不具合が含まれていることが多い
  • 46.
    © 2024 NTTDATA Group Corporation 46PostgreSQL開発のフロー新機能の提案やバグの報告を⾏う新機能の必要性やユーザI/F、アーキテクチャ、実現⽅法、バグ原因、修正⽅法などを議論する議論結果を踏まえて、新機能やバグ修正をコーディングして、パッチを作成・投稿するパッチをレビューして、不備を改修するコミッタがパッチをPostgreSQL本体に取り込む提案・バグ報告議論パッチ作成レビューコミット繰"返$パッチネタについてまずはコミュニティで議論して、その結果にもとづいてパッチを作成するのが基本パッチを作成してみないと提案・議論しにくい場合は、パッチを先に作成することも
  • 47.
    © 2024 NTTDATA 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 *.patch0001-Add-new-func.patch
  • 48.
    © 2024 NTTDATA Group Corporation 48パッチレビューの観点をクリアできているか提案レビューパッチは適⽤できるか︖ドキュメントやテストを含んでいるか︖仕様レビューパッチは本当に必要か︖仕様はコミュニティで合意されているか︖機能テスト仕様通りに動作するか︖クラッシュや想定外のエラーはないか︖性能試験パッチにより性能劣化しないか︖コーディング・レビューWindowsでも動作するか︖コーディング規約に従っているか︖アーキテクチャ・レビュー他機能と⼀貫性のあるアーキテクチャか︖https://wiki.postgresql.org/wiki/Reviewing_a_Patch/ja
  • 49.
    © 2024 NTTDATA Group Corporation 49パッチレビューの観点をクリアできているかコーディング規約やエラーメッセージのスタイルガイドに従っているか︖https://www.postgresql.jp/document/current/html/source.htmlコメントやドキュメントに内容誤り(古い内容のまま)やTypoはないか︖関数名、変数名、マクロ名、ファイル名などの命名が分かりやすく適切か︖初期化忘れ、クローズ・解放忘れ、戻り値のチェック忘れなどのバグはないか︖セグメンテーションフォルトやアサーションエラーを引き起こすコードパスはないか︖無駄、⾮効率、(必要以上に)複雑すぎる、理解しにくいコードはないか︖
  • 50.
    © 2024 NTTDATA Group Corporation 50PostgreSQL開発のサイクル2023年度 2024年度6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11CF CF CF CF CFv17開発v16開発v18開発CF CFBeta / RCBeta / RCFeatureFreeze リリースリリースコミュニティサポートCFCommitFestパッチレビューに集中する期間
  • 51.
    © 2024 NTTDATA Group Corporation 51CommitFestのワークフローNeeds reviewレビュー待ちWaiting on Author開発者の対応待ちReady forCommitterコミッタの判断待ちCommittedコミット成功︕Moved to next CF次回CFでレビュー継続Returned withFeedback今回CFで⼗分にレビュー済Rejected提案却下Withdrawn提案撤回パッチ修正 レビューパッチ提案レビュー完了差し戻しコミットパッチレビュー中 パッチクローズ提案撤回提案却下レビュー⼗分CF終了パッチ作者 レビュア コミッタ
  • 52.
    © 2024 NTTDATA Group Corporation 52パッチのコミットを確認するコミットログの例作成したパッチがコミットされると、作者として名前がコミットログに記録される︕リリースノートの例ユーザが知るべき機能・改変の場合は、リリースノートにも記録される︕
  • 53.
    © 2024 NTTDATA Group Corporation 53困ったときは⽇本のコミュニティで相談も例えば、ほぼ⽉1ペースで開催のアンカンファレンスでバグのLTをするなど
  • 54.
    © 2024 NTTDATA Group Corporation 54ライブコーディング
  • 55.
    © 2024 NTTDATA Group Corporation 55⾃⼰紹介• 名前• 加藤 慎也 @ShinyaKato_• 所属• 株式会社NTTデータグループ 技術開発本部• 業務• PostgreSQLコミュニティでの開発• PostgreSQLの研究開発やサポート業務
  • 56.
    © 2024 NTTDATA Group Corporation 56① SQL処理部分を書き換えて、TRUNCATEコマンドを実⾏できないように改造② ドキュメントの修正を⾏って、実際にメーリングリストにパッチを投稿
  • 57.
    © 2024 NTTDATA Group Corporation 57① SQL処理部分を書き換えて、TRUNCATEコマンドを実⾏できないように改造SQL処理部分の概要ParserAnalyzerPlannerExecutor構⽂を解析する(⽂法的に正しければよい)テーブルや列が存在するかを確認するインデックススキャンやシーケンシャルスキャンなどのアクセス⽅法を決めるPlannerが決めた⽅法でSQLを実⾏する↑ここを書き換えてTRUNCATEコマンドを実⾏できないようにする
  • 58.
    © 2024 NTTDATA Group Corporation 58PostgreSQLとデータベース研究との関わり
  • 59.
    © 2024 NTTDATA Group Corporation 59PostgreSQLとデータベース研究の関わりを知るメリットPostgreSQL開発者機能実装する際により効率的で優れた⼿法を知ることができる︕PostgreSQL利⽤者どんな理論に基づいて内部実装されているかを理解することで、より効果的にPostgreSQLを利⽤できる︕データベース研究者データベース研究がどのように実世界に適⽤されているかを知ることができる︕説得⼒のある研究背景が書けたり、研究のモチベーションアップにつながる︕PostgreSQL開発者/利⽤者、データベース研究者それぞれにPostgreSQLとデータベース研究の関わりを知るメリットがある︕
  • 60.
    © 2024 NTTDATA Group Corporation 60PostgreSQLの歴史(1/2)PostgreSQLはデータベース研究プロジェクトから誕⽣した︕1970年 E.F.Coddによりリレーショナルモデルが考案1976年 INGRESプロジェクト始動カリフォルニア⼤学バークレー校でM.Stonebrakerらが始めたリレーショナルデータベース開発プロジェクト1986年 POSTGRESプロジェクト始動POSTGRES = Post INGRESカリファルニア⼤学バークレー校でM.Stonebrakerらが始めたリレーショナルデータベース開発プロジェクト1993年 POSTGRESプロジェクト終了コミュニティの規模が⼤きくなり、本来データベースの研究に費やすべき時間がソースコードの保守とサポートに使われているという課題
  • 61.
    © 2024 NTTDATA Group Corporation 61PostgreSQLの歴史(2/2)PostgreSQLはデータベース研究プロジェクトから誕⽣した︕1995年 Postgres95POSTGRESプロジェクトに参加していたAndrew YuとJolly ChenがPOSTGRESに⼤規模な変更を加えPostgres95を開発問い合わせ⾔語がPostQUELからSQLに1996年 PostgreSQL誕⽣PostgreSQL = POSTGRES + SQLPOSTGRESプロジェクトでのバージョン番号に戻したため、初期バージョンは6.02024年3⽉現在 PostgreSQL 16.2https://www.postgresql.org/docs/release/16.2/
  • 62.
    © 2024 NTTDATA Group Corporation 62取り上げるトピックPostgreSQLのトランザクションとインデックスについてデータベース研究との関わりを説明します︕インデックストランザクション ストレージエンジンセキュリティ バックアップ/リストア レプリケーションモニタリングクライアント/サーバプログラム拡張機能PostgreSQL
  • 63.
    © 2024 NTTDATA Group Corporation 63PostgreSQLのトランザクション分離レベル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 NTTDATA Group Corporation 64Serializable Snapshot IsolationPostgreSQLの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 NTTDATA Group Corporation 65B⽊インデックス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 NTTDATA Group Corporation 66GiSTインデックス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 NTTDATA Group Corporation 67SP-GiSTインデックスSP-GiSTインデックスとは︖Walid G. Aref and Ihab F. Ilyas, SP-GiST: An Extensible Database Index for SupportingSpace Partitioning Trees, Journal of Intelligent Information Systems (JIIS2001)空間分割された探索⽊(四分⽊、kd⽊など)を開発可能とするGiSTSP-GiSTインデックスプロジェクトパデュー⼤学のSP-GiSTインデックス研究プロジェクトhttps://www.cs.purdue.edu/spgist/PostgreSQLのSP-GiST(Space-Partitioned GiST)インデックスはパデュー⼤学の研究プロジェクトから開発が始まった︕
  • 68.
    © 2024 NTTDATA Group Corporation 68NTTデータグループの研究開発• あ PostgreSQLのスケールアウトの実現に向けた取り組みにおいても、最新論⽂の知⾒を参考にしている部分が多々あります︕DEIM2023の技術報告資料より
  • 69.
    © 2024 NTTDATA Group Corporation 69NTTデータグループのインターンシップ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 fromqueryjumble.h• Improve HINT message that FDW reports whenthere are no valid options.• psql: Improve tab-completion for LOCK TABLE.• Make autovacuum launcher more responsive topg_log_backend_memory_contexts().https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=cba4e78f3599f7edc3fb53d1b094f037fbb8158ahttps://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=9a6915257d1d804ddba05331030b74d7426a4005https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=249b0409b181311bb1c375311e43eb767b5c3bddhttps://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=839c2520a7937b8895ff84fc8fc718dbfab5e72ehttps://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=5fedf7417b69295294b154a219edd8a26eaa6ab6https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=0b0d277c35533baecc8d1a9356f71de5f2ee0bd8https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=e3e29cec10d15bbcedc6b41887d8f4e138d719bd
  • 70.
    © 2024 NTTDATA Group Corporation 70まとめ• オープンソースのRDBMSであるPostgreSQLの概要を説明しました。• PostgreSQLコミュニティに参加し、パッチを開発する⽅法を説明しました。• ライブコーディングで以下を⾏いました。• TRUNCATEコマンドの実⾏を禁⽌する改造• ドキュメント修正パッチの作成からメール送信• PostgreSQLとデータベース研究の関わりについて説明しました。興味をもって頂けた⽅はぜひNTTデータの企業ブースまでお越しください︕
  • 71.

[8]ページ先頭

©2009-2025 Movatter.jp