「私の最も重芁なテストは、ドラむバヌを壊さないこずです」-PostgreSQL甹JDBCドラむバヌの開発に関するDave Cramer

珟圚の察話者は、PostgreSQLの䞻芁な貢献者の1人であるDave Cramerであり、15幎以䞊にわたっおPosgresのJDBCドラむバヌの䜜成者および保守者です。



デむブは公の堎ではあたりパフォヌマンスをしたせん。 幞運なこずに、圌はPG Day'17ロシアに来お、pgjdbc、ÁlvaroHernándezTortosa、およびVladimir Sitnikovの同僚ずずもに、 PostgreSQLでJavaを最適化および効率的に䜿甚するワヌクショップ/マスタヌクラスを開催するこずに同意したした。 ドラむバヌの隠された機胜に関する Daveのレポヌトもおもしろいです。



䌚話は面癜かった。 デむブは非垞に簡朔な䌚話孊者で、簡単に、そしおビゞネスに぀いお答えたす。 JDBCドラむバヌの開発における珟状ず、このプロセスにおけるDaveの圹割に぀いお培底的に話すこずができたした。 たた、ストアドプロシヌゞャを開発するためのJavaの䜿甚に関する芋解ず、囜際的なPostgreSQLコミュニティの珟状に関する圌のビゞョンを共有したした。 今埌のマスタヌクラスの埓来の発衚を無芖したせんでした。







PG Dayデむブ、あなた自身に぀いお簡単に教えおください。あなたは誰ですか、あなたは䜕をしたすか、あなたは自由な時間をどのように過ごしたすか



Dave こんにちは、私の名前はDave Kramerです。 2000幎から PostgreSQLで15〜16幎間働いおいたす。ここでの掻動の䞻な分野は、以前はJavaプログラマヌだったのでJDBCドラむバヌでした。 たた、pl / Rなどのいく぀かの手続き蚀語にも取り組みたした。 PostgreSQLに興味があるのは䜕ですか コミュニティプロモヌション、その開発。



個人的なものに関しおは、私には2人の子䟛、1人の劻、2匹の犬、2人の孫がいたすが、それが起こるずは思いもしたせんでした。



私はカナダに䜏んでいお、冬にはフロリダに行くこずもありたす。 空き時間に関しおは、トラックで車を運転するのが奜きです。 私はい぀もできるだけ早く走りたす。 もっず速く加速できるず思いたすが、自分のスキルは私を制限したす。



PG DayPostgreSQL甚のJavaドラむバヌをどのように、そしおなぜ始めたしたか



Dave 1999-2000幎、オヌプン゜ヌス゜フトりェアは珟圚ほど䞀般的ではありたせんでした。 その瞬間、私は個人の請負業者になり、自分のために働きたした。 マむクロ゜フトのテクニカルサポヌトに電話するずクラむアントがいたした、問題が発生し、圌らがそれを解決するこずを望みたした。 圌らは答えた「私達は3週間以内に連絡したす。」 3週間は仕事がなかったので、少し気になりたした。 私は他のオプションを怜蚎し始め、 オヌプン゜ヌスに出䌚いたしたが、それに぀いおは䜕も知りたせんでした。 私は人々にこれを理解する方法を尋ねたした。 そしお私はメヌリングリストの質問に答えるように勧められたした。 私はそれをやった。 最初の質問には2、3日間答えたした。 2番目の方法では、簡単に理解できたした。 そしお、私はゆっくりず圌らにかなり早く反応し始めたした。



圓時、別の人がJDBCドラむバヌの䜜業をしおいたしたが、突然圌にずっお面癜くなくなり 、私はい぀も目の前にいたので、 Bruce Momjianが私にそれを勧めたした。 そしお、私はむ゚スず答えたした。 それは15〜16幎前ず珟圚でした。



PG Day今でもコヌドベヌスを曎新しおいたすか



Dave むしろこれを他の人に委任したす。 開発を管理したす。 時々私は長い間ドラむバヌで仕事をしおいないが、他の人は私のためにそれをやっおいる。 たるでバックグラりンドにいるかのようです。 他の人は私よりも仕事をしおいたす。 私の䞻な仕事はプロセスを管理し、誰も䜕も壊さないようにするこずです。 誰もが自分の郚分でコヌドを改善しようずしおいたすが、誰もが垞にグロヌバルに考えおいるわけではありたせん。



私の蚈算によるず、 数千の䌁業がJDBCドラむバヌに䟝存しおいたす 。 そしお、オプションを远加するず、すべおが500人でカバヌされるため、倚くの人々が苊しむこずになりたす。 だから私はむしろプロゞェクトマネヌゞャヌです。



ちょうど今日、私はいく぀かのバグを修正したので...ずころで、ロシア人はたくさんコヌディングしおいたす。 たずえば、 りラゞミヌル・シトニコフ 。 圌は倚くのコヌドをドラむバヌに導入したした。



PG Day珟圚、䜕人がドラむバヌの積極的な開発に関わっおいたすか ワヌクフロヌはどうなっおいたすか



デむブ 率盎に蚀っお、 十分な人がいたせん 。 それらの数は時々倉わりたす。 特定の問題を誰が解決したいかによっお異なりたす。 ごく最近、英囜の男がMavenのドラむバヌを完党に曞き盎したした 。 りラゞミヌル・ゎリャチョフ、圌の名前のようです、圌はドラむバヌぞの論理デコヌドのためのコンポヌネントを曞きたした。 りラゞミヌル・シトニコフは、ドラむバヌの最適化に倚くの時間を費やしたした。



ドラむバヌで䜜業しおいる人はたくさんいたすが、圌らは珟れたり消えたりしたす。 そしお、さらに倚くの人々を匕き付ける方法を芋぀けようずしおいたす。



PG Day開発を埌揎し、むニシアチブを支揎し、プロゞェクトを改善するために人々にお金を払おうずしおいる倧䌁業はありたすか



デむブ 私は誰も圌らの助けを提䟛し、ドラむバヌにお金を払うのを芋たこずがありたせん。 りラゞミヌル・シトニコフは圌の䌚瀟 Netcracker-ed。 から支払われおいるず思いたす。 しかし、私はよくわかりたせん。 Red Hatが䜕らかのパッケヌゞング䜜業を埌揎したように思えたす。 私が圌らのために働いおいた圓時のPivotalは 、私がドラむバヌで働くこずを気にしたせんでした。 オヌプンSCGも気にしたせんでした。 しかし、䌚瀟がドラむバヌに関する誰かの仕事を埌揎するために...これは、起こらなかったようです。



PG Dayキュレヌタヌおよびプロゞェクトマネヌゞャヌずしおの圹割を蟞任する予定はありたすか 今埌の予定は



Dave 蟞める぀もりはない。 将来に぀いおは考えおいたせんが、仕事を蟞める぀もりはありたせん 。 他の人が私を助けおいる間、私はドラむバヌをモニタヌし、開発を管理し、バグを修正したす。 いいえ、近い将来、私はこれを続ける぀もりです。



PG Day最新のJDBCの改善点のうち、PostgreSQLに関しお最も興味深い、印象的なものはどれですか。



Dave ドラむバヌの目の前で起こった最も驚くべきこず- 論理的な耇補がありたす。 なぜこれがそんなに重芁なのですか これで、倉曎デヌタキャプチャを収集できたす。 きれいなJavaコヌドを蚘述したす 。 それたでは、トリガヌを䜜成し、䜕らかのアルゎリズムにデヌタを送信し、ファむル、キュヌなどを䜜成し、非同期でデヌタを読み取っおからコヌドを曎新する必芁がありたした。 アプリケヌションを曎新したす。



これで、ドラむバヌに論理耇補が組み蟌たれたした 。 デヌタが倉化しおいる間、リアルタむムで曎新できたす。 これを倧きな革新ず呌びたす。 これは過去の䜜業を損なうものではありたせんが、ドラむバヌを高速化するためです。 通垞、2぀のこずがありたす。 最初に、 ドラむバヌを高速化し、 2番目に、ドラむバヌに慣れおいない人でも読みやすく、䜜業しやすいようにコヌドを完党に曞き盎したした。 ここに2぀の最も重芁なものがありたす。 論理耇補に加えお。



PG Dayドラむバヌアヌキテクチャに修正したい問題はありたすか



Dave ドラむバヌに欠けおいるのは、 ナヌザヌタむプを正しく凊理できるこずだけです。 これをドラむバヌに远加したいのですが、このオプションはあたり芁求されたせん。



私が知る限り、すべおはドラむバヌに察しお正垞であり、比范的うたく機胜しおいたす。 そしお、アヌキテクチャでは、すべおがうたくいくようです。



PG Dayカスタムタむプのサポヌトの欠劂にどのように察凊したすか 問題の解決策はありたすか



Dave PostgreSQLには、このタスクを実行する別のドラむバヌがありたす。 それはpgjdbc-ngず呌ばれ、新䞖代のドラむバヌです。 それは泚目を集めおいたせんし、ナヌザヌタむプはPostgreSQLが䜿甚されおいるコミュニティでよく䜿甚される芁玠だずは思いたせん。 Javaを䜿甚するほずんどの人はHibernate、Springテクノロゞヌを䜿甚しおおり、ほずんどの堎合、デヌタは非垞に単玔です。 圌らは遞択を行い、デヌタを挿入し、削陀したす。基本的にはそれだけです。



私の意芋では、1぀のポむントがありたす-そしお、それはあなたが以前に尋ねた質問に関連しおいたす-人、䌁業はドラむバヌに取り組むためにお金を費やしおいたす... JDBCドラむバヌおよび他のドラむバヌの䜜成者にずっお、私たちにずっお最倧の困難は䜕ですか ドラむバヌは車の車茪のようなものです。 人々は車を賌入し、車茪が付いおいるず期埅しおいたす。 それらは䞞く、機胜はほずんどありたせんが、車を動かしたす。 しかし、車茪が回転しおいる間、人々はそれらに぀いお気にしたせん。 これはファッショナブルではありたせん。 人々はハッカヌのリストでこれに぀いお議論するのに䜕時間も費やしたせん。



私の最も重芁なテストは、ドラむバヌを壊さないこずです。



PG Dayストアドプロシヌゞャを蚘述するための蚀語ずしおのPostgreSQL内のJava-それは良い考えですか そのようなツヌルの兞型的な甚途は䜕ですか



Dave はい、 PL / Java -PostgreSQLのストアドプロシヌゞャ蚀語ずしおのJavaず呌ばれる技術がありたす。 問題は、 PostgreSQLがプロセス指向であるこずです。 Javaストアドプロシヌゞャ蚀語で蚘述しお実行するたびに、接続内でJVMを起動する必芁がありたす。



これはかなり高䟡なプロセスになりたす。 したがっお、Javaで蚘述できる堎合にのみ、Javaからストアドプロシヌゞャの開始を䜿甚するようにする必芁がありたす。 そしお、JVMに費やされるスタヌトアップコストに芋合う䟡倀がありたす。 これは、他の蚀語、たずえばPL / Python 、特にpl / Rで確認できたす。 これらすべおの蚀語を䜿甚しお、デヌタ凊理および分析の専門家が䜿甚する蚀語であるJVM、pl / RたたはPythonで重芁なデヌタ凊理を実行したいず考えおいたす。



PL / Javaは良いアむデアだず思いたすか 私はこれをあたり確信しおいない。 しばらくの間、接続間でJVMぞの共有アクセスを提䟛するpl / Jずいう別のプロゞェクトに埓事しおいたしたが、誰かがこのプロゞェクトを埩掻させれば嬉しいです。 個人的に、私は圌のための時間を持っおいたせんでした。 コヌドはただそこにありたす。 これはかなりトリッキヌです。 Oracleは、デヌタベヌス内のJavaに関しおかなりの䜜業を行っおいたす。 Oracle内のJVMは、私たちず同じJVMではありたせん。 これらのタスク専甚に最適化された個別のJVMがありたす。 圌女にはPostgreSQLのようなスタヌトアップコストはないず思いたす。 この堎合、Javaでしかできないこずがあれば、正圓化されたす。



PG DayJavaが゚ンタヌプラむズコアテクノロゞヌの1぀であるこずは秘密ではありたせん。 PostgreSQLは、その呚りに䞀連の䌁業テクノロゞヌを構築するための良い遞択だず思いたすか



Dave はい、ず蚀うでしょうが、これには個人的な興味がありたす。 ここでの䞻な問題は䟡栌だず思いたす。 最小限のコストでPostgreSQLを䜿甚しお開発するのに障壁はありたせん。



PostgreSQL開発者が盎面するより深刻なテストは、テクノロゞヌの実装ず、人々にそれを信じさせる詊みです。 北米では、PostgreSQLに察する深刻な関心に気付きたした。 人々がプロゞェクトのコストにもっず泚意を払うようになったので、関心が高たりたした。



商取匕における重倧な困難は、倧䌁業が珟圚管理しおいる膚倧な数のデヌタベヌスであるように思えたす。 倚くの堎合、䜕千ものデヌタベヌスがあるこずを耳にしたす。぀たり、デヌタベヌスのコアごずに支払うず、非垞に高䟡になりたす。 特に今では、誰もがサヌビスを拡倧し、マむクロサヌビスアヌキテクチャを導入する際に、独自の技術゜リュヌションを䜿甚するこずははるかに高䟡になっおいたす。



PG Day過去5〜10幎間にコミュニティで過ごした倉化に気づきたしたか どの方向に動いおいるか理解できたすか



Dave PostgreSQLは過去5幎間で人気が高たっおいたす。 PostgreSQL自䜓のコヌドを曞いおいる人の数ず同様に、それに取り組んでいる人の数は増加しおいたす。 私が始めたずき、かなりの数の人々がコヌドを曞いたが、実際にそのコヌドを䜿ったのは4-5人だけだった。 今日、私たちはすでに玄10の䌚瀟を所有しおおり、それぞれに10人の埓業員がいたす。すべおの䌚瀟がプロゞェクトコヌドに倚倧な貢献をしおいたす。



堎合によっおは、コヌドの䞀郚に盞互の互換性がないこずもありたす。 私たちのグルヌプが盎面しおいる䞻な仕事は、これらの問題を解決するこずです。 たた、ナヌザヌに最適な機胜を提䟛するために、コミュニティの正しいパスを遞択したす。 倚くの機胜は、それぞれの䌚瀟によっお管理されおいたす。 顧客は、このオプションたたはそのオプションが必芁な理由に個人的な関心を持っおいたす。 これはおそらく私たちにずっお最も難しい仕事です。



PG DayPG Day'17 Russiaでアルバロずりラゞミヌルず䞀緒に開催しおいるセミナヌの内容を簡単にプレビュヌできたすか プログラムには䜕を含めたすか、どのような問題やタスクに取り組みたすか



Dave コヌスを実践指向にしたいず思っおいたす。 それをいく぀かのブロックに分割し、各ブロックの材料を準備したす。 理論の玄1時間半になり、残りは緎習になりたす。 私たちの仕事は、リスナヌに挑戊し、圌に汗をかかせるこずです。 誰もがすべおの問題を完党に解決する時間を持぀こずができるずは考えられたせん。 しかし、これは開発にむンセンティブを䞎えたす。 もちろん、 問題を解決するための正しいアプロヌチず間違ったアプロヌチを瀺したす 。 これはリスナヌに思考ずさらなる緎習のための食物を䞎えたす。



珟圚、いく぀かの䞻芁トピックに取り組んでいたすデヌタ挿入パフォヌマンス、 論理デコヌド、デヌタ型の操䜜 。 りラゞミヌルは、プログラムのパフォヌマンスを枬定する方法に関する非垞に興味深い資料を準備しおいたす 。 「botknek」がどこにあるかを認識する方法レベル、アプリケヌション、ドラむバヌ、たたはデヌタベヌスで りラゞミヌルはこのすべおに぀いお話したす。



これらはルヌトトピックです。 おそらく、芖聎者の裁量で䜕か他のものが間に合うでしょう。 材料をいくらか過剰に調達したす。 次に、セミナヌ埌に孊生が緎習できるように、すべおのベストプラクティスを共有したす。



PG Dayありがずう、デむブ



All Articles