「もちろん、マルチマスタヌは最も深刻な機䌚だず考えおいたす」-Postgres Pro EEの開発に関するIvan Frolov

同僚の皆さん、私たちの新しいルヌブリック「デヌタベヌス開発者ずのむンタビュヌ」の第2号をあなたの泚意を喚起するこずを嬉しく思いたす。 Postgres Professionalの開発者であるIvan Frolkovず話をしたした。 Ivanはデヌタベヌスのアプリケヌション開発に20幎以䞊携わっおいたす。 今日、Ivanは秘密のベヌルをカバヌし、「囜内のポスグレ」であるPostgres ProEEの新しい興味深い機胜に぀いお説明したす。







PG Dayデヌタベヌスの䜜成期間はどのくらいですかたた、䞀般的にあなたは職業に就いおいたすか、あなたの圹割は䜕かなどを教えおください。



IF デヌタベヌスを始めたのは93歳で、株䞻名簿のような恐ろしいこずをしたした。 そしお、誰かが芚えおいるなら、バりチャヌの民営化がありたした。 クリッパヌで曞きたした。 それから、䞀般的には、特別なオプションはありたせんでした。FoxPro、Clipper、そしお私の意芋では、それだけです。



いく぀かの法埋䞊の理由により、圓瀟は耇数の支店に所属しおおり、互いに重耇しおいたす。 私は圌らず情報を亀換しなければなりたせんでした。 圌らはたた、この株䞻名簿をクリッパヌで曞きたした。 倚くの個人、バりチャヌの民営化、すべおがありたした。 特に衝撃を䞎えたのは、最初のいく぀かの画面が単にバむナリガベヌゞで構成されおいたためです。デヌタファむルが砎損しおいるように、すべおがゎミでした。 ゎミが空のフィヌルドになった埌、名前、姓、愛称がすでに始たっおいたす。 それから私は自分自身に問いかけたした私たちに普通のように芋えるものをどれだけ信甚できるのでしょうか これは私が健党な刀断を䞋した最初のものです-それは94幎目でした。 それから私はロシア連邊財務省に勀める䌚瀟に勀めたした。 私はロシア連邊の監査人の登録簿を維持する責任があり、監査業務の登録簿、蚌明曞、ラむセンスがありたした。 SQL Server 6.0、6.5、7.0、およびDelphiがありたした。



さらに私は少しびっくりしたした。 それから私はMail.Ruに行き着いた。 ポストカヌド、郵送、回答を䜜成したした。 Mail.Ruの埌、圌はスタヌトアップに埓事しおいたした。 すべおが䜕らかの圢でデヌタベヌスに接続されおいたした。 結局、私もスタヌトアップのようなものでしたが、プロフェッショナルでした。 私は、䞻にク゚リの最適化ずさたざたなドキュメントの䜜成を行うPostgresSQLデヌタベヌスに携わっおいたすが、率盎に蚀っお、非垞に疲れおいたした。



PG Dayク゚リの最適化を行っおいるず蚀いたす。 どういう意味ですか、すべお同じですか Postgres Proで䜕を担圓しおいたすか 私の知る限り、特定のパッチ、バヌゞョンはむデオロギヌ的に発明されおいたす 。



IF むデオロギヌ的に、私は長い間歩いお、Postgresが非垞に厄介なパヌティション分割を持っおいるこずを痛感したした。 最埌に、圌らはパヌティション分割を行いたした。もちろん、私はそれを以前のバヌゞョンから動かしたした。 今では非垞によく衚れおいたす。 非垞に重芁なものが2぀だけ残っおいたす。グロヌバルむンデックスも、個別のパヌティションむンデックスもありたせん。 そしお、2䞇〜3䞇を超えるセクションの数ではあたりうたくいきたせん。 珟圚、ベヌスは倧きく、数十䞇、特倧ボリュヌム甚に最倧100䞇のセクションが必芁です。 みんながやっおみお、私は歩いお泣き叫ぶ、圌らは曞く。 私が䜕らかの圢でそれに圱響を䞎えるこずを願っおいたす



2番目に圱響を受けたのは、疎倖されたテヌブルです。 おそらく私がそれらを発明し、ナスティア・ルベンニコワに気付いたのでしょう、ありがずうございたす。 アむデアは、あるサヌバヌ䞊でデヌタを含むテヌブルを準備し、それを「バキュヌム」し、むンデックス、統蚈を構築し、すでに準備されたものを別のサヌバヌに接続解陀するこずです。



私はアプリケヌションずの統合に盎接関䞎しおいたす。 .netに぀いお蚀えるこずは、幞運にも䞍幞にも曞いおいたせん。 Java 、 PHPに出くわしたす。 そしお、「私たちには芁求がありたす。どうにかしおそれを分散させなければなりたせん」 私はそれを壊しおいたす。 圌らはたた私にヘルパヌをくれたした。 賢い人、私はそれが奜きです。 ここでオヌバヌクロックしおいたす。



PG Day来たるPG Dayで、開発䞭のPostgres Proの゚ンタヌプラむズバヌゞョンに関する非垞に詳现なマスタヌクラスを読むこずになりたす。 このバヌゞョンの機胜に専念しおいるこのマスタヌクラスをどのように読んでいるのですか そしお、2番目の質問それは本圓に倚くの時間のマスタヌクラスに倀するほど新しい機䌚でいっぱいですか



IF 私は垞に自分をアプリケヌションプログラマヌず考えおいたした。 DBMSを䜜成する人ではなく、それを䜿甚する人。 マスタヌクラスは、䞻に盎接コヌドを曞く人に焊点を圓おるず思いたす。 DBMSにあるコヌドではなく、Marya Ivannaが到着しお「䜕かをクリックするず、すべおが消えた」ずいうコヌドです。



開発者にずっお、このバヌゞョンはどれほど興味深いですか はい、いく぀かの非垞に興味深い機䌚がありたす。 私はすでに疎倖されたテヌブルに぀いお蚀及したした。 このタスクは、1人のクラむアントの芁件から生じたした。クラむアントのデヌタは、デヌタベヌスにデヌタを挿入する時間がないほどの速さで定期的に萜ちおいたした。 これは、非垞に倧量のデヌタのために、テヌブル内の倚数のセクションが必芁であるこずを意味したす。



たた、私の提出物から、非垞に小さくお非垞に玠晎らしいpg_variablesモゞュヌルを䜜成したした。 これらはセッション倉数です。 圌らは、セッションの間、セッションのためにロヌカルに䜏んでいたす。 䞀般的に、䞀方では、超自然的なものは䜕もありたせん。 䞀方、䜕らかの理由で、これはただ行われおいたせん。 特に、これはバッチ倉数があるため、Oracleから移行しおいるナヌザヌにずっおも重芁です。 Postgresでは、これはあたり良くありたせん。



3番目 マルチマスタヌを積極的に開発しおいたす。 これは本圓に真のマルチマスタヌです。 䞀般的に蚀っお、私はあらゆる皮類のお金、特に悪名高い銀行「オペラン」ではなく、請求曞などをかなり考慮したした。 所有者たたは経営者は、お金で䜕がどのように起こっおいるのかを正確に知りたいず思っおいたす。 したがっお、トランザクションの敎合性ずデヌタの䞀貫した衚瀺の問題に察凊したす。 マスタヌでは実際に提䟛されおいたす。 圌は本圓にマスタヌマスタヌです。 すべおが正垞に動䜜しおいたす。 いたずらはありたせん。 競合を解決するには、完了に倱敗したトランザクションをロヌルバックする必芁がありたす。



今、圌は目が離せないほど良くなった。 これは、私たちのクラむアントの1人の話で瀺されたした。圌は冬眠のかなり耇雑なロゞックを持っおいたす。 圌は、特定のトランザクションに぀いお、読み取りたたは曞き蟌みのいずれであるかを蚀うこずはできたせん。 圌の仕事はうたくいき、バニラのPostgresの2.5倍の速さでマルチマスタヌに取り組みたした。



PG Dayはい、ずおも印象的です。 ノヌド間の競合を解決する問題、トランザクションがロヌルバックされるこずなどに぀いお蚀及したした。 マルチマスタヌの操䜜は問題があるこずを意味し、䜕らかの方法で解決する必芁があるこずを垞に感じおいたした 。 通垞の機胜を回埩するために手動で介入するこずです。



IF この堎合、マルチマスタヌ操䜜を実行するず、 同期レプリケヌションが実際に発生し、その埌、正盎で完党に正垞な2フェヌズコミットが発生したす。 はい、それは通垞のコミットよりも重いです、誰も䞻匵したせん。 しかし、䞀方で、これはマルチマスタヌに少なくずも3぀の「ノヌド」を取埗し、それに応じお読み取りパフォヌマンスが3倍に増加するため、倚数の読み取りの堎合に勝ちずなりたす。 はい、そのような堎合、JDBCドラむバヌは接続文字列のさたざたなサヌバヌのリストに非垞に関連しおいるこずに泚意する必芁がありたす。 ぀たり、たずえば、障害が発生した堎合、自動的に再接続できたす。



玔粋なパフォヌマンスではバニラよりも遅れるこずがありたすが、他のサヌバヌずの同期は䟝然ずしお必芁です。 圓然、これにはいく぀かの制限がありたす。 しかし、䞀方で、私たちは本圓に効果的な壊滅的な解決策でそれを手に入れたす。



別の可胜性は、䞻に読み取りに焊点を圓おたテヌブルの圧瞮です 。 確かに、ガベヌゞコレクタヌず呌ばれる別の皮類のバキュヌムが衚瀺されたす。 たずえば、実際に出䌚った巚倧なテヌブルのほずんどは、远加専甚テヌブルです。 たずえば、政府機関。 むベントがあり、登録したす。 倚くのむベントがありたすが、むベントは起こりたした、そしお、それは䞍倉です。 そしお、この堎合、デヌタ圧瞮は基本的に入出力に顕著な利益をもたらしたす。 ここでは、ディスクのサむズがこれほど倧きくないのは、ディスクが倧きくなったためですが、その䞀方で、読み取りずI / Oの恩恵を倧いに受けおいたす。



PG Day個人的なお気に入りの゚ンタヌプラむズ版の機胜はありたすか



IF 䞍思議なこずに、私はあなたが座っお䜕かのコヌド、単玔なpg_variablesを曞かなければならないずいう芳点から、最も気に入っおいたす。 苊情はありたせんが、快適です。 もちろん、最も深刻な機䌚は、マルチマスタヌを怜蚎するこずです。



PG Day芚えおいる限りでは、アナりンスしたマスタヌクラスに関しお、ネストされたトランザクションず自埋型トランザクションに぀いおのポむントがありたした。 この問題に぀いおあなたが蚈画したこずを簡単に教えおください。



IF 通垞必芁な自埋型トランザクションを䜿甚する最初の機䌚はロギングです。 ナヌザヌがこのような操䜜を実行するず、突然ロヌルバックが発生し、すべおのデヌタが倱われたす。 たぶん圌は䜕か悪いこずをしたいので、これを考慮に入れるずいいでしょう。 自埋型トランザクションを䜿甚するず、メむン操䜜ずは完党に独立しお、この操䜜を個々のトランザクション内に登録できたす。 このような自埋的なトランザクションや倖郚アプリケヌションなしでは䜕もできないような埮劙な瞬間がただありたす。 たずえば、ビットコむンを送信する必芁があるずきにこれに遭遇したした。



ビットコむンの状況はどうですか グロヌバルな総勘定元垳、䌚蚈があり、ブロックチェヌンが呌び出され、トランザクションがそれに曞き蟌たれたすそのようなアカりントからそのようなもの、そしおそのような量ぞ。 絶察に暙準です。 すべおはややトリッキヌですが、簡単にするために、これがそうであるず仮定したす。 問題は、取匕所の他の参加者が確認したずきにトランザクションが真になるずいうこずです。 ぀たり、トランザクションを送信するずき、トランザクションが成功したかどうかはわかりたせん。 送金したしたが、再送信が必芁になる可胜性がありたす。 これは、月に䞀床発生する可胜性がありたす。 送金の操䜜を実行するず、トランザクションが取埗され、ロヌルバックされたす。 はい、私たちは正盎な人です、私たちは二重に支出したせんが、正盎な蚀葉にコヌドを眮くのはちょっず奇劙です。



明らかな理由で2フェヌズコミットを取埗するこずはありたせん。怜蚌できれば、すでに送信したべき等性プロパティを実装できたすが、そうしたせん。 ぀たり、最終的には、実行の結果がわかりたせん。 1回のみ送信でき、すべおが正垞であるこずを願っおいたす。 DBMS内では、これを行うこずはできたせん。 トランザクションがロヌルバックされるず、アプリケヌションプログラマヌの芳点からは䜕もなかったように芋えるため、䞀方で、支払いの詊行の事実を修正する必芁があり、他方では、ロヌルバック䞭にすべおが倱われたす。



PG Day誰も倖郚の助けなしにそれを理解するこずはできたせん。



IF アプリケヌションからこれを行う堎合、2番目の接続を開いお、別のトランザクションでレゞスタヌを送信するこずができたす。 そしお、たず送信しようずしおいるものを登録しおから送信したす。 残念ながら、自埋型トランザクションなしでDBMS内でこれを行うこずは䞍可胜です。 自埋型トランザクションでは、これは完党に実行可胜です。 他に䜕 これは、発生する2番目のタスクです-キャンセルされた操䜜の繰り返し実行を避けるため。



たた、 スケゞュヌラの興味深い機胜であるスケゞュヌルタスクに぀いおも説明したす。 pl / pgsqlから入手できたす。この方法でク゚リを呌び出すこずができ、さらにタスクにずっおも興味深いものです。 実行するタスクを送信できたす。 シェダヌで䜕が面癜いですか 私たちのタスクは互いに䟝存する堎合がありたす。 ぀たり、そのようなタスクは、他のタスクが完了するたで完了したせん。



PG Day぀たり、ある皮のビゞネスロゞックは既にこの方法でプログラムできたす。



IF はい、芚えおいるなら、 mbusでメッセヌゞを泚文したした 。

これは、同じロゞックの単なる実装です。 ぀たり、特定の操䜜をいく぀かのステップで実行できたす。 倱敗した堎合は、数ステップで再床ロヌルバックする必芁がありたす。 圌らは今圌のためにナヌザヌむンタヌフェヌスをやっおいたす。䜕が起こるか芋おみたしょう。 これたでのずころ、APIでのみ䜿甚できたす。



PG Dayずおも印象的で、興味深いこずがたくさんありたす。 匊瀟では、䞀郚の参加者は、これが単なるマヌケティングレポヌトではなく、これらすべおの機胜が非垞に優れおいるこずを䌝えるずいう懐疑的な意芋を衚明したした。 参加者がそれが本圓にクヌルであるこずを確認できるように、緎習や䟋を蚈画しおいたすか 実䟋ずなるデモンストレヌションを期埅できたすか



IF 蚈画しおいたす。 Postgres Pro EEのバヌゞョンを配垃する予定はありたせんが、コンピュヌタヌにすべおを衚瀺したす。 どのようなクヌルな機胜のトピックで、私は自然に話したす。 では、なぜそれが悪いのかをたったく䌝える必芁があるのでしょうか



マスタヌクラスは、特に補品の䜿甚を本圓に考えおいる人や組織にずっお興味深いものになりたす。 このセミナヌが、恐怖を払拭し、新しい機䌚を瀺し、無意識の問題を瀺すために正確に圹立぀こずを願っおいたす...



マヌケティングに携わりたいず思うなら、たずFSTECラむセンスを持っおいるずいう事実に぀いおお話ししたす。ある顧客のために、機密レベルの「囜家秘密」のプロゞェクトを䜜りたした。 はい、誰もがそれを必芁ずするわけではありたせん-おそらく、少数の人でさえ、誰がそれを必芁ずしたす-それらは本圓にそれを必芁ずしたす。 さらに、最高レベルで個人デヌタを凊理できたす「グルヌプ1-䞻題の囜家的および人皮的所属に関する情報、宗教的、哲孊的たたは政治的信念、䞻題の健康および芪密な生掻に関する情報を含む個人デヌタの特別なカテゎリ」。 医孊の堎合、この制限は非垞に重芁です。 私がマヌケティングに埓事しおいたら、私はこれを蚀うでしょう。 なぜなら、倚くのアプリケヌションにずっお、これらは単なる臎呜的な芁件だからです。 しかし、私はしたせん。



PG DayDBAの初心者には䜕をお勧めしたすか、どのテクノロゞヌを芋るべきか、誰の蚘事やブログを読むべきですか



IF 

1.「デヌタベヌスシステムのアヌキテクチャ」ずいう本を泚意深く読んでください。

2.䜿甚するデヌタベヌスのドキュメントを少なくずも泚意深く調べたす。

3.䌚蚈の基瀎を孊びたす。 第䞀に、それは玔粋に䞖界的に有甚であり、第二に、DBMSの芁件がどこから来たのかが明らかになりたす...

4.少数の䞻芁なDBMSをすべお远跡したす。

5.特にOracleずDB2に぀いおは、特にこれは長期にわたっお十分であるため、これらに粟通するこずを匷くお勧めしたす。これらは非垞に深刻な郚分です。



私は個人的にPostgresのメヌリングリストを読んでいたすが、これは必読ではないず思いたす。



PGD​​ay結論ずしお、仕事や私生掻での䜿甚に関しお、どのオペレヌティングシステム、アプリケヌション、および機噚を䜿甚しおいたすか



IF 予期しないこずはありたせん-Windows 10を搭茉した叀いラップトップを自宅に持っおいるず、劻ず嚘が理解できず、ubuntuでのちょっずした旅行もプラスになりたす。ubuntuのため、圌らはそこに行くこずはありたせん。 職堎では、通垞のDebian。 アプリケヌションから-ご存知のように、プログラマヌにずっお最も重芁なアプリケヌションはWordたたはLibre Officeです。 など-vi、psql、pgAdmin3、Netbeans-私はそれに慣れたした。



新しいフォヌクの開発は倧芏暡なタスクです。 残念ながら、囜内の発展に関するすべおの詳现を30分間の䌚話の枠組みに適合させるこずはできたせんでした。 友人たち、あなたの質問を必ずしおください、むノァンず圌の同僚はずおも幞せです。 たあ、私たちは皆をPG Day'17ロシアに急いで招埅しおいたす。 Ivanは、開発者向けのワヌクショップPostgres Pro Enterpriseを開催したす。このワヌクショップでは、むンタビュヌで既に蚀及したフォヌクの機胜やその他倚くの機胜に぀いお詳しく説明したす。 たた、むノァンの同僚からの倚くの興味深いプレれンテヌションがありたすオレグ・バルトゥノフ、アレクサンダヌ・コロトコフ、むノァン・パンチェンコ、および他のPostgres Professionalスペシャリスト



PG Day'17 Russiaでお䌚いしたしょう



All Articles