象と戯れ

 | 

2009-02-08

どこからソースを読むべきか

15:04 | どこからソースを読むべきか - 象と戯れ を含むブックマーク はてなブックマーク - どこからソースを読むべきか - 象と戯れ

PostgreSQLのソースは、コアだけでも10万行以上あり、どこから手をつけていいか初め戸惑いました。ただ、それって目的によると思うので、大まかにどんな目的(ニーズ)があるか、ピックアップしてみます。

・全体の動作を知る

SQLを投げて結果が返るまでの一連の処理がどうなっているのかに興味がある人。この場合、パーサ→アナライザ→オプティマイザ(プランナ)→エグゼキュータという流れを表面的になめていくといいと思います。表面的に、といってもかなりのファイル数がこのスコープに入ってくるので、大変といえば大変です。

SQLの特定の機能について調べる

たとえば自分のWindow Functionsの場合、外部的な仕様からGROUP BYに近いかな、ということもあり、nodeAgg.cを穴が空くほど読みました。あと、構造体としてはSortGroupClauseとかでしょうか。

・インデックスアクセスメソッドについて調べる

backend/access以下のインデックスアクセスメソッドを読むことになるでしょう。また、プランナにおけるインデックスの選好度なんかもこのスコープに入ると思います。

I/Oについて

このあたりから自分はよくわからなくなってくるのですが、I/Oについてはbackend/storage以下でしょうね。とはいえI/ODBの歴史上かなり古くから最適化されてきているので、近年はあまり改善の余地がないかもしれません。

・メモリ管理

メモリ管理はbackend/utils/mmgrに綺麗に収まっています。綺麗すぎて、ここ数年あまり変更がないと記憶していますが、ここの抽象化度合いもスゴイので何か新しいものを追加したりできないでしょうか。

ACIDとか

(自分のような似非ではなく)本物のDB屋さんにとっては、IsolationとかMVCCとかがテーマとして挙がるのかもしれません。VacuumとかFSMとかHOTとか、PostgreSQLでは8.1~現在最もアツいテーマの一つといえます。

・レプリケーション

8.4では正式なレプリケーションがコアに取り込まれることはなさそうな雲行きですが、今後最も注目を集めるところだと思います。WALについは自分はさっぱり解っていないので、どこを読めばいいのかよくわかっていません。

以上のように、それぞれのドメインにプロフェッショナルがばしばし入ってくるので、実はお互い何やってるのかよくわからなかったりします。少なくとも自分はWALまわりとかどこを読めばよいか解っていませんし、Gist/GINで有名なTeodorあたりはインデックスアクセスメソッド(及び一部のプランナ)しか知らないのではという疑いもw。全て知り尽くしている人って数えるぐらいしかいないのでしょうね、この規模になると。

というわけで要らない部分はばっさり捨てて、読んで楽しいところだけを読みましょう。Enjoy!

ひげぽんさんがPostgreSQLのソースを読み始めたそうな

14:35 | ひげぽんさんがPostgreSQLのソースを読み始めたそうな - 象と戯れ を含むブックマーク はてなブックマーク - ひげぽんさんがPostgreSQLのソースを読み始めたそうな - 象と戯れ

1970-01-10 - Higepon’s blog

PostgreSQL のソースコード - Higepon’s blog

PostgreSQL のソースコードを読む事になりました。pgsql-hackers の ML を購読。

これは楽しみ。

ReeganReegan2011/04/13 03:40Walking in the presence of gitans here. Cool thinking all around!

gltvmodgltvmod2011/04/23 07:34WAjpm5 <a href="http://laztolemdqzm.com/">laztolemdqzm</a>

kqylovpkqylovp2011/04/24 17:56dkza6e , [url=http://mgywpdnicvfw.com/]mgywpdnicvfw[/url], [link=http://qlsqosgruddv.com/]qlsqosgruddv[/link], http://jlmeuvofztsy.com/

 |