DZ Online TechPostgres Professional

こんにちは



昚幎、私はデゞタルビゞネスの倉革のトピックに関する䞀連のプログラム/むンタビュヌの撮圱を開始したした 興味のある人のためにここにいたす-サむンアップ  これらのプログラムは、ITずビゞネスの亀差点にありたしたが、それでもビゞネスに関するものでした。



その過皋で、プログラマヌの芳点からかなりの深さを持぀倚くのものがあるこずが明らかになりたした。 そしお今幎、私たちは共通のラベル「DZ Online Tech」の䞋で䞀連のむンタビュヌの撮圱を開始したした-今では内郚にあるものに重点を眮いおいたす。 もちろん、誰もがビデオを芋るのが面倒なので、これらのむンタビュヌは解読され、今日私は最初のむンタビュヌを公開したす-Postgres ProfessionalのIvan Panchenkoず。



誰がオリゞナルを気にしおいる-ここにある





ずころで、すべおの問題が埩号化されるこずを誓うこずはできたせんので、気に入った堎合はYouTubeにサむンアップしおください。



読むのが奜きな人のために-埩号化



こんにちは、むノァン。 Postgresは、むンポヌト眮換ツヌルずしお広く受け入れられおいたす。 そしお、そのアプリケヌションの最も有名なドラむバヌは、「西郚のDBMSをPostgresに眮き換えたしょう」ずいうアむデアです。 さらに、圌には倚くの圌自身の䟡倀があるこずが知られおいたす。 それらに぀いお簡単に説明したいず思いたす。 「むンポヌト-むンポヌトではなく」ではなく、れロから遞択した堎合、なぜですか



こんにちは 第䞀に、ほずんどのPostgresはむンポヌト眮換のため遞択したせん。 倖囜の゜フトりェアの茞入には、実際に政府の措眮ず制限があるこずは明らかです。 Postgres Proはレゞストリにあるため、むンポヌト眮換に適しおいたす。 実際、これはPostgresをたすたす遞択する䞖界的な傟向です。 その反射のみが衚瀺されたす。 茞入代替で衚珟されたものは、実際には、より深い、より基本的なプロセスの結果である可胜性がありたす。



Postgresは熟しおいたす。 これは、叀い商甚デヌタベヌスの優れた代替手段です。 䞖界䞭で、圌らはPostgresがクゞラず同じクラスの補品であるこずを理解しおいたすOracle、Microsoft SQL Server、DB2、最埌のものはほずんど忘れられおいたすが、それにもかかわらず、これは良い補品です。



しかし、いずれにせよ、DB2はどこかから埐々に垂堎から離れおいき、Oracle、Microsoft SQLが垂堎に出おいたす。 そしお、Postgresは今や䞖界芏暡で垂堎に流れ蟌んでいる3番目の存圚です。 かなり前に浮かんだず蚀わなければならない-10幎前、PostgresにWindowsの良いサポヌトが登堎したずき。 耇補が圌に珟れたずき、圌らは圌を知芚し始めたした。 圌らは圌をビゞネス、産業、そしお深刻な䜕かのデヌタベヌスずしお話し始めたした。



あなたはただ写真の䞭に「2぀の良いものがあり、もう1぀良いものがありたす」ず蚀いたす。 しかし、圌を前に出し、他の人を奜むようにするものは確かにありたす。



はい、そのようなこずがいく぀かありたす。 1぀目は、Postgresが特定のラむセンスを持぀オヌプン゜ヌス補品であるこずです。 圌は商甚クロヌンも持っおいたす。 それらの1぀は私たちのものです。 しかし、それがオヌプン゜ヌス補品に由来するずいう事実自䜓が倧きな利点です。



2番目のトピックは、Postgresが高床に拡匵可胜なデヌタベヌスであるこずです。 これも開発の掚進力でした。



Postgresの拡匵性の皋床は、ロシアの貢献が最も顕著である堎所であるず蚀わなければなりたせん。 過去15〜17幎間、私たちのチヌムは䞻に拡匵メカニズムに取り組んでいたす。



たずえば、2000幎に珟圚の䌚瀟の同僚ず初めお仕事をしたRamblerでは、Postgresの拡匵性を䜿甚しお、Ramblerニュヌスサヌビスのパフォヌマンスを30倍向䞊させたした。 どうやっお 私たちはドキュメントを読むこずができるCプログラマです。 これらの2぀のこずにより、配列をすばやく怜玢するための新しいタむプのむンデックスを䜜成できたした。これは、埓来のリレヌショナルモデルの範囲を超えおいたすが、有甚です。



特に、ランブラヌでは、䜙分な結合をトリッキヌなむンデックスで怜玢できる配列に眮き換えるず、生産性が30倍向䞊したした。 それから、すべおのランブラヌコンテンツプロゞェクトは、最新のスマヌトフォンのパワヌを超えないタむプラむタヌPentium 2、400 MHz、500 MBのメモリでスピンしたこずを理解する必芁がありたす。 運がよければ、Pentium 3圓時登堎した最倧800 MHz。 サヌバヌには、このようなPentium 3が2぀ある可胜性がありたす。 そしお、これらすべおが䜕癟䞇ものリク゚ストに応えたした。



圓時はコヌドを非垞に真剣に最適化する必芁があったこずは明らかで、そうでなければ機胜したせん。 Postgresの拡匵性が圹立ちたした。 私たちは座っお考え、蚱容可胜な時間枠内で、1か月間蚀うこずができたす。そしお、党文怜玢を䜿甚しお、JSONに関連する珟圚のPostgresにあるすべおの基瀎を圢成したした。



このため、Postgresは構造化されおいないデヌタのサポヌトを迅速に開発したした。 これは䜕ですか これらは、おおたかなキヌバリュヌです。 2004幎に、同じデヌタベヌスフィヌルドにキヌず倀の情報を保存するために、PostgresでHstoreを拡匵したした。 それはただJSONではなく、埌に流行になりたした。 そしお、Hstoreがありたした。 なぜhstoreなのか ハッシュを持぀Perlを芋お、Postgresでほが同じ構文でハッシュを䜜成したした。



最初は、このこずは別個の拡匵拡匵ずしお存圚しおいたしたが、Postgresに含たれるもののメむンセットでコミットコミットされたした。 そしお圌女は同じように人気がありたした。 ぀たり、JSONは最近、その人気を䞀巡したした。



ある意味で、同時に䞡方のプロパティを持぀DBMSを䜜成するこずにより、SQLずnoSQLのこの愚かな議論に終止笊を打぀こずがわかりたす。



ある意味、はい。 noSQLからは、トランザクションの損倱、デヌタの敎合性、および通垞のDBMSで通垞発生するすべおの損倱なしに、優れた比范柔軟性が埗られたした。



だから、Hstore。 しかし、Hstoreは兄匟でした。 ぀たり、ハッシュは単䞀レベルです。 これはJSONではなく、単なるハッシュです。 そしお、Postgresのプラス配列は私たちの前にありたした。 むンデックスをサポヌトしたした。぀たり、配列に含たれるものず、Hstore内にあるもの、キヌず倀の䞡方ですばやく怜玢できたす。 これは䟿利なこずです。 人々は䞖界䞭でそれを䜿い始めたした。 次にJSONが登堎したした。 圌は最近、Postgresで2011幎から2012幎に登堎したした。 それを実装するための3぀の異なる詊みがありたした。 その埌、これらすべおの詊みがスロヌされ、異なる方法で行われたした。 最初は、JSONは特別なフィヌルドにある単なるテキストでした。



あなたのチヌムはJSONを実行しおいたしたか



いいえ、私たちのチヌムはJSONに察しお重芁なこずをしたした。 JSONがPostgresに登堎したずき、それは単なるテキストフィヌルドであり、そこから䜕かを抜出するために、怜玢倀は毎回JSONを解析する必芁がありたした。 もちろん、これはゆっくりず働きたしたが、マルチレベルのデヌタを保存できたした。



しかし、そのようなテキストボックスにはあたり意味がありたせん。 たずえば、私のプロゞェクトでは、特殊なタむプのフィヌルドず呌ばれるこずなく、匱い構造のデヌタをテキストフィヌルドに既に栌玍しおいたす。 しかし、問題は、このJSONでは効果的に機胜するこずも必芁だったこずです。 そしお、2014幎にチヌムで既に行ったこずはJSON-Bです。



すでにレむアりトおよび解析されおいるため、高速です。 あなたがすぐに重芁な䟡倀を埗るこずができるように蒞したした。 JSON-Bを䜜成したずきに、むンデックスで怜玢する機胜を固定し、それが非垞に人気を博したした。



わかった 特定のプロパティに戻るPostgresず他のDBMSを区別する他に䜕があり、それを䜿甚する理由は䜕ですか



これたで長い間JSONに぀いお話しおきたのは、すべおPostgresの柔軟性です。 展開できる堎所がたくさんありたす。 柔軟性のもう1぀の偎面は、ゞオデヌタのサポヌトです。 JSON、配列、テキストによる怜玢など、特別なむンデックスが䜜成されたのずたったく同じ方法で、地理情報、空間デヌタによる迅速な怜玢のためにほが同じ堎所でむンデックスが䜜成されたした。 たた、この問題にかなり倧きなロシアの手を入れたした。



その結果、PostGISは、地理情報デヌタを操䜜する䞖界で非垞に䞀般的な方法です。



ナヌザヌはプロゞェクト甚にPostgres拡匵機胜を開発しおいたすか これはアプリケヌションのかなりの量ですか



いいえ、もちろん、これらは䞊郚にある「クリヌム」のようなものです。 圌らの仕事がこれに成長するので、それを必芁ずする人々がいたす。 たず第䞀に、これはすべおの暙準を非垞によくサポヌトし、ほがすべおのタスクに確実に適したナニバヌサルデヌタベヌスです。



たずえば、スタヌトアップを開始する堎合-Postgresを䜿甚するず、間違えられたせん。 第䞀に、機胜的に拡匵可胜であるためです。 次に、オヌプン゜ヌスバヌゞョンを䜿甚する堎合は、賌入する必芁があるラむセンスの人質にならないでください。



あなたは、商業掘りの埓業員ずしお、おそらく、それほど幞せではないず蚀っおいたすか



これらは自然の法則であり、それに察する議論はありたせん。 オヌプン゜ヌスがあり、オヌプン゜ヌスビゞネスがありたす。 そしお、これは通垞のビゞネスずは異なり、かなり珍しいこずです。 しかし、将来的には、明らかに、オヌプン゜ヌスの圹割は倧きくなるでしょう。 少なくずも、これはPostgresの成功ず、誰にずっおも退屈なGartnerのスケゞュヌルで芋るこずができたす。オヌプン゜ヌスデヌタベヌスはたすたす䜿甚されおおり、回避するこずはできたせん。







あなたは䌚瀟ずしお、なぜあなたは必芁なのですか ここで圌はオヌプン゜ヌスです行っお、ダりンロヌドしお、すべお順調ですか



実際、ダりンロヌドしおダりンロヌドしたしたが、問題に遭遇したした。 遅かれ早かれ、人々は問題に遭遇したす。 ほずんどのナヌザヌにずっお、オヌプン゜ヌスバヌゞョンが機胜するこずは明らかです。 圌らには問題がなく、小さな基盀があり、成長したせん。 しかし、堎合によっおは、専門家の助けが必芁です。



以前は、モデルは単玔でした。 この堎合、さたざたな補品がこの進化の過皋のさたざたな段階にあるため、Postgresに぀いお説明しおいたす。 Postgresはもずもず単なる倧孊のプロゞェクトでした。 人々はお金に぀いお考えたせんでした。 圌らは問題の解決に興味を持っおいたした。 それから圌はボランティアプロゞェクトでした人々は自分でそれをしたした。 さらに、圌らは私たちのようないく぀かの䌁業で働いおいたした。



さお、ランブラヌでどのように決断を䞋したのですか



ランブラヌは良い䟋です。 必芁だったのでやった。 私たちはビゞネスナヌザヌにたったく気になりたせんでした。 他の誰かがそれを必芁ずしおいるかどうか。



Postgresの䌁業は圓初、ロシアではなく他の囜で生たれ始めたした。 しかし、富士通の資金により、このような䌚瀟が日本で初めお誕生したした。 かなりの投資が行われおいたす。 そしお、圌女はPostgresずほがPostgresのものの開発を始めたした。 その埌、かなり短い時間で、2番目の象限2番目の象限がむギリスずアメリカの゚ンタヌプラむズDBに登堎したした。 これらはすべお、Postgresで収益を䞊げる䌁業です。 これらの䌚瀟はすべお、泚文を執行するずいう事実から始たりたす。 圌らは埓事しおいたす...



カスタム開発。



DBMSレベルでのカスタム開発。 私たちもこれを行いたす。Postgresが拡倧しおいるため、ただ䌚瀟ではないずきにこれらのこずを行いたした。 「このように怜玢するだけでなく、フランス語のアクセントやドむツ語のりムラりトを正しく無芖するためにも、党文怜玢が必芁です。 完了-支払いたす。」 たたは「JSONは非垞に良いこずです。 むンデックスを添付できたらず思いたす。 そしお、無料広告のポヌタルは他の誰よりも少し速く飛びたす。」



これらの人たちは、個々の開発者にお金を払ったり、堎合によっおは若い新興䌁業に圌らが手に入れたい機胜を泚文したりしお、開発に資金を提䟛したした。 そしお埐々に、Postgresの商甚バヌゞョンの必芁性が生じ始めたした。



なぜ、そしお䞀般的に、これらの商甚フォヌクはどこから来たのですか たず第䞀に、Postgresには商甚補品を合法的に補造するこずを法的に蚱可するようなトリッキヌなラむセンスがありたす。 BSDラむクラむセンス。 これはGPLではありたせん。 倉曎を加えなくおも、少なくずも同じコヌドを取埗し、そこにラむセンス契玄の2行を残しお、そこに䜕かを远加し、これを私の「Vasya Pupkin DB」ず曞いお販売しおいたす。 垂堎に行き、少なくずも䜕十億ドルも売るこずは重芁です。 少なくずもVasya Pupkinから「Vasya Pupkin DB」を賌入するかどうかは別の問題です。 ほずんどありたせん。 そしお、圌が圌自身のものをそこに持っおきたら そしお、圌らはそれを始めたした。



緑ず赀の旗がPostgresの商甚および非商甚の分岐点を瀺しおいる写真がありたす。 たくさんありたす。 40〜50個を数えたした。 それらのほずんどは、圓然、成功しおいたせん。曲がっおおり、忘れられおいたす。 たずえば、AmazonやSalesforceなどの䞀郚の倧芏暡な組織は、自分で分岐できたす。 最も有名な商甚フォヌクは、もちろん、EnterpriseDBのGreenplumです。 Postgres Proを含む、日本の富士通゚ンタヌプラむズPostgres。







むギリス人も最近、Postgresの゚ンタヌプラむズバヌゞョンを䜜成したした。 䜕のために たずえば、Greenplumは、高床な䞊列性を備えた倧芏暡な分析蚈算甚のデヌタベヌスです。 箄10幎前にPostgresを䜿甚し、スケゞュヌラを倧幅に倉曎し、そこに分散リク゚ストを远加したしたが、トランザクションの敎合性は倱われたした。 ただし、分析デヌタベヌスの堎合、これは重芁ではありたせん。すべおがすでに存圚しおいるため、芁求を収集しおサヌバヌ間で正しく分散する必芁がありたす。 圌らはGreenplumを䜜りたした。



このこずは、ロシアでも䜿甚されおいたす。 特に、ティンコフ銀行はそれを持っおいるず自慢したした。 商業的にはある皋床成功しおいるが、高いレベルの非互換性があるため、オヌプン゜ヌスに遅れをずっおいたす。 圌らはスケゞュヌラを倧きく倉曎し、倚くの良いこずをしたした。もちろん、圌らはこれを称賛するこずができたすが、オヌプン゜ヌスの開発は他の方法で進んでいたす。 そしお、ここでの䞻なこずは遠くたで行かないこずです。 遠くに行くほど、埌でマヌゞするのが難しくなりたす。



最初の䟋は、特定の機胜を備えたPostgresバヌゞョンが䜜成された堎合です。 これは、商業䌁業が生たれる理由の䞀䟋です。 そしお、他に䜕がありたすか



Greenplumは、Postgresを非垞に暪方向に動かす非垞に倧きな機胜を実行したした。 さらに、これはもはや普遍的な補品ではありたせんが、重芁な芁求タスクを十分に解決したす。



別のグルヌプのフォヌクは、Postgres ProおよびEnterprise DBです。 奇劙なこずに、埌者は、アメリカの性栌にもかかわらず、Oracleからの移行に埓事しおいたす。



アメリカでは、「くしゃみ」ごずに支払うのに費甚がかかるため、Oracleから切り替えたす。 誰もがそれを望んでいるわけではなく、誰もが支払うべきものを持っおいるわけでもない。 そのため、Enterprise DBはOracleからの䞖界的な移行サヌビスを提䟛しおいたす。 たた、クロヌルを簡単にするために、Oracleで利甚可胜ないく぀かの機胜をEnterprise DBに実装する道を歩みたした。



そしお、Postgres Proずは䜕ですか Oracleの機胜非同期自埋型トランザクションなどをいく぀か実行したしたが、この道をたどらないこずにしたした。 しかし、長期的には、次のOracleのパスは衚瀺されたせん。 「フォロヌ」ずは、垞に遅れをずるこずを意味し、ずにかく100の互換性は決しおなく、少なくずも郚分的な互換性を垞に蚌明する必芁があるからです。 これは難しい問題です。



OracleのPSQLのパヌサヌを䜜成できるずいう事実にもかかわらず。 神に感謝したす、構文的に文曞化されおいたすが、そのセマンティクスに関する非垞に厳密な文曞は芋぀かりたせん。 さらに、完党な互換性のために、「バグからバグ」を再珟する必芁がありたす。 それを詊しおみお、それが本圓にそうであるこずを蚌明しおください。 これは、移行の問題を実際には解決しないこずがわかった。 前進する方が良いず刀断したした。 最高の補品を䜜る方が良い。



その䞀方で、「バグからバグ」は蚀うたでもなく、そのような画像の完党なカバレッゞのレベルで互換性を持たせる必芁がありたすか タスクは、移行コストの条件付き80を終了するこずです。



本圓にそう思われたすが、実際には、システムを移行するず、次のようになりたす。完成したシステムを提䟛したす。 これは黒い玙で包たれた黒い箱で、黒いロヌプで瞛られおいたす。 䜕が入っおいるのか分かりたせん。 これらの80はありたすか、それずも少しsheい出しおいたすか 3階建おの「タむピングブランダ」方匏で開発されたこずがよくあり、1階の建築業者はどこかで長い間沈んでいたした。



ですから、このこずに移行するためには、リバヌス゚ンゞニアリングを行う必芁がありたす。曞き盎すためでなくおも、それが機胜するかどうかを理解するためです。 それは、あなたが完璧なテストカバレッゞを持っおいるなら-はい、あなたは話すこずができたす...



決しお起こらないこずはもちろん..



...蚀うこずができたす。「゚ンゞンを亀換し、テストを実行したす。 100合栌、すべおが怜蚌されたした。 行こう。」 実際には、これは起こりたせん。 これは理想的なケヌスです。 そのため、あなたは80で販売しおおり、残りは䟝然ずしお苊しんでおり、前もっお䜕がわからないこずがわかりたす。 移行には、さらに重倧な問題がありたす。



各補品、各DBMSには利点がありたす。 たずえば、Postgresの堎合、これはJSONおよび先ほど説明した配列で機胜したす。 このようにOracleで最適に蚘述された倚くのこずは、異なる方法でPostgresに蚘述した方が適切です。 したがっお、「愚かに」移行する堎合、䞡方ず互換性のある最小限の機胜のサブセットが埗られたす。 叀いデヌタベヌスも新しいデヌタベヌスも利甚したせん。



未来に぀いお少し話しおみたしょう。 これはどこに行くのですか すべおの競合他瀟を殺したすか



すべおの競合他瀟を殺すずは思いたせん。 原則ずしお、私たちにはそのような「愛情深い」目暙がありたす。 私たちは殺すために来たのではなく、建おるために来たした。 私たちのタスクは、非垞に優れたデヌタベヌスを䜜成するこずです。 最高のために。



なに この良さの基準は䜕ですか Microsoftが非垞に悪いデヌタベヌスを䜜成するタスクを持っおいるこずを疑いたす。



はい、もちろん、誰もがこれに行きたす。 そのため、デヌタベヌスの䞖界には珟圚いく぀かの傟向がありたす。 たた、デヌタ量は他のすべおよりも急速に増加しおいるため、珟圚のデヌタベヌスの䞻な傟向は分散です。 分散デヌタベヌスの問題をよりよく解決できる人-それらはうたくやれるでしょう。



むワン・パンチェンコが䞀緒にいたした。 ありがずう、むノァン。



ありがずう



All Articles