DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

バック゚ンド開発者は、SQL ク゚リが「本番」で適切に機胜するこずをどのように理解しおいるのでしょうか? 倧䌁業や急速に成長しおいる䌁業では、誰もが「補品」にアクセスできるわけではありたせん。 たた、アクセスする堎合、すべおのリク゚ストを簡単にチェックできるわけではなく、デヌタベヌスのコピヌの䜜成には数時間かかるこずがよくありたす。 これらの問題を解決するために、私たちは人造 DBA、ゞョヌを䜜成したした。 すでにいく぀かの䌁業で導入が成功しおおり、十数瀟の開発者を助けおいたす。

ビデオ

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

こんにちは、みんな 私の名前はアナトリヌ・スタンスラヌです。 私は䌚瀟に勀めおいたす postgres.ai。 私たちは、開発者、DBA、QA から Postgres の䜜業に䌎う遅延を取り陀くこずで、開発プロセスをスピヌドアップするこずに取り組んでいたす。

私たちには玠晎らしいクラむアントがいたす。今日のレポヌトの䞀郚は、圌らずの仕事䞭に出䌚ったケヌスに圓おられたす。 非垞に深刻な問題の解決を私たちがどのように支揎したかに぀いおお話したす。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

耇雑で高負荷な移行を開発および実行するずき、私たちは「この移行はうたくいくだろうか?」ずいう質問を自問したす。 私たちはレビュヌを利甚し、より経隓豊富な同僚や DBA 専門家の知識を利甚したす。 そしお、それが飛ぶかどうかを知るこずができたす。

しかし、フルサむズのコピヌで自分たちでテストできればもっず良いかもしれたせん。 そしお今日は、テストに察する珟圚のアプロヌチがどのようなものであるか、たたテストをより良く行うにはどうすればよいか、たたどのようなツヌルを䜿甚すればよいかに぀いおお話したす。 たた、このようなアプロヌチの長所ず短所、およびここで修正できる点に぀いおも説明したす。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

これたでに本番環境で盎接むンデックスを䜜成したり、倉曎を加えたりした人は誰ですか? かなりの量です。 そしお、これがデヌタの損倱やダりンタむムの発生を誰にもたらしたのでしょうか? そうすれば、この痛みがわかりたす。 ありがたいこずにバックアップがありたす。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

最初のアプロヌチは、本番環境でのテストです。 あるいは、開発者がロヌカル マシン䞊でテスト デヌタを䜿甚しおいる堎合、ある皮の限られた遞択肢が存圚したす。 そしお本番環境にロヌルアりトするず、この状況が埗られたす。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

痛いし、高いし。 おそらくそうしないほうがいいでしょう。

そしお、それを行うための最良の方法は䜕ですか?

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

ステヌゞングを行っお、そこで本番の䞀郚を遞択したしょう。 せいぜい、実際の補品、すべおのデヌタを取埗したしょう。 そしお、ロヌカルで開発した埌、さらにステヌゞングを確認したす。

これにより、゚ラヌの䞀郚を削陀できるようになりたす。぀たり、本番環境で゚ラヌが発生するのを防ぐこずができたす。

問題点は䜕ですか?

  • 問題は、この挔出を同僚ず共有しおいるこずです。 そしお、ある皮の倉曎を加えるず、デヌタがなく、䜜業が無駄になるこずが非垞によくありたす。 ステヌゞングは​​数テラバむトに達したした。 そしお再び䞊昇するたで長い時間埅たなければなりたせん。 そしお明日最終決定するこずにしたした。 以䞊、開発が完了したした。
  • そしおもちろん、そこでは倚くの同僚、倚くのチヌムが働いおいたす。 そしおそれは手動で行う必芁がありたす。 そしお、これは䞍䟿です。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

デヌタベヌスに倉曎を加えたり、デヌタに觊れたり、構造を倉曎したりする堎合、詊行は XNUMX 回だけであるずいうこずも重芁です。 たた、䜕か問題が発生した堎合、移行䞭に゚ラヌが発生した堎合、すぐにロヌルバックするこずはありたせん。

これは前のアプロヌチよりも優れおいたすが、䟝然ずしお本番環境で䜕らかの゚ラヌが発生する可胜性が高くなりたす。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

各開発者にテストベンチ、぀たりフルサむズのコピヌを提䟛するこずを劚げるものは䜕でしょうか? 䜕が劚げになっおいるかは明らかだず思いたす。

テラバむトを超えるデヌタベヌスを持っおいるのは誰ですか? 郚屋の半分以䞊。

そしお、これほど倧芏暡な生産がある堎合、各開発者にマシンを維持するのは非垞に高䟡であり、さらに長い時間がかかるこずは明らかです。

すべおの倉曎をフルサむズのコピヌでテストするこずが非垞に重芁であるこずを認識しおいるクラむアントもいたすが、デヌタベヌスは XNUMX テラバむト未満であり、各開発者甚のテストベンチを維持するリ゜ヌスがありたせん。 したがっお、ダンプをロヌカルのマシンにダりンロヌドし、この方法でテストする必芁がありたす。 ずおも時間がかかりたす。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

むンフラストラクチャ内で実行したずしおも、200 時間あたり XNUMX テラバむトのデヌタをダりンロヌドできるのは、すでに非垞に優れおいたす。 ただし、論理ダンプを䜿甚し、クラりドからロヌカルにダりンロヌドしたす。 圌らにずっお、その速床は XNUMX 時間あたり玄 XNUMX ギガバむトです。 そしお、論理ダンプからの方向転換、むンデックスのロヌルアップなどには䟝然ずしお時間がかかりたす。

しかし、補品の信頌性を維持できるため、このアプロヌチを䜿甚しおいたす。

ここで䜕ができるでしょうか テストベンチを安䟡にしお、すべおの開発者に独自のテストベンチを提䟛したしょう。

そしおこれは可胜です。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

そしお、このアプロヌチでは、開発者ごずにシン クロヌンを䜜成するず、それを 10 台のマシンで共有できたす。 たずえば、10 TB のデヌタベヌスがあり、それを XNUMX 人の開発者に提䟛したい堎合、XNUMX TB のデヌタベヌスを XNUMX 個甚意する必芁はありたせん。 XNUMX 台のマシンを䜿甚しお開発者ごずに薄い分離コピヌを䜜成するには、XNUMX 台のマシンのみが必芁です。 仕組みに぀いおは少し埌ほど説明したす。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

実際の䟋:

  • DB - 4,5 テラバむト。

  • 独立したコピヌを 30 秒で取埗できたす。

テストスタンドを埅぀必芁も、その倧きさに䟝存する必芁もありたせん。 数秒で取埗できたす。 完党に分離された環境になりたすが、それらの間でデヌタを共有したす。

これは玠晎らしい。 ここでは魔法ず䞊行䞖界に぀いお話したす。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

私たちの堎合、これは OpenZFS システムを䜿甚しお機胜したす。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

OpenZFS は、すぐに䜿えるスナップショットずクロヌンをサポヌトするコピヌオンラむト ファむル システムです。 信頌性ず拡匵性に優れおいたす。 圌女はずおも扱いやすいです。 文字通り XNUMX ぀のチヌムに展開できたす。

他にも次のオプションがありたす。

  • LVM、

  • ストレヌゞ (Pure Storage など)。

私が話しおいるデヌタベヌス ラボはモゞュヌル匏です。 これらのオプションを䜿甚しお実装できたす。 しかし、特に LVM に問題があったため、珟時点では OpenZFS に焊点を圓おおいたす。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

䜿い方 デヌタを倉曎するたびに䞊曞きするのではなく、この新しいデヌタが新しい時点、぀たり新しいスナップショットからのものであるこずを単にマヌクするこずによっおデヌタを保存したす。

そしお将来、ロヌルバックしたいずき、たたは叀いバヌゞョンから新しいクロヌンを䜜成したいずきは、「わかりたした。このようにマヌクされたデヌタのブロックをください」ず蚀うだけです。

そしお、このナヌザヌはそのようなデヌタセットを操䜜したす。 圌は埐々にそれらを倉曎し、独自のスナップショットを䜜成したす。

そしお分岐しおいきたす。 この堎合、各開発者は線集する独自のクロヌンを持぀機䌚があり、共有されるデヌタは党員で共有されたす。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

このようなシステムを自宅に導入するには、次の XNUMX ぀の問題を解決する必芁がありたす。

  • XNUMX ぀目はデヌタの゜ヌスです。デヌタの取埗元です。 本番環境でレプリケヌションを蚭定できたす。 蚭定したバックアップはすでに䜿甚できるず思いたす。 WAL-E、WAL-G、たたはバヌマン。 たた、RDS や Cloud SQL などのクラりド ゜リュヌションを䜿甚しおいる堎合でも、論理ダンプを䜿甚できたす。 ただし、それでもバックアップを䜿甚するこずをお勧めしたす。このアプロヌチを䜿甚するず、ファむルの物理構造も保持され、存圚する問題を怜出するために運甚環境で確認されるメトリクスにさらに近づけるこずができるからです。

  • XNUMX ぀目は、デヌタベヌス ラボをホストする堎所です。 それはクラりドの堎合もあれば、オンプレミスの堎合もありたす。 ここで、ZFS がデヌタ圧瞮をサポヌトしおいるず蚀うこずが重芁です。 そしおそれは非垞にうたくいきたす。

そのようなクロヌンごずに、ベヌスで行う操䜜に応じお、ある皮の開発が成長するこずを想像しおください。 このためには、開発者にもスペヌスが必芁です。 ただし、ベヌスを 4,5 テラバむトずしたため、ZFS はそれを 3,5 テラバむトに圧瞮したす。 これは蚭定によっお異なる堎合がありたす。 そしお私たちにはただ開発の䜙地がありたす。

このようなシステムはさたざたな堎合に䜿甚できたす。

  • これらは開発者であり、ク゚リ怜蚌や最適化を担圓する DBA です。

  • これは、本番環境に展開する前に特定の移行をテストするための QA テストで䜿甚できたす。 たた、実際のデヌタを䜿甚しお QA 甚の特別な環境を構築し、新しい機胜をテストできるようにするこずもできたす。 たた、数時間埅぀のではなく数秒で完了し、シン コピヌが䜿甚されない堎合には数日かかる堎合もありたす。

  • そしお別のケヌス。 䌚瀟に分析システムがセットアップされおいない堎合は、補品ベヌスのシン クロヌンを分離し、それを分析に䜿甚できる長いク゚リたたは特別なむンデックスに割り圓おるこずができたす。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

このアプロヌチでは次のようになりたす。

  1. すべおの倉曎をフルサむズのデヌタ​​でテストしたため、「本番環境」で゚ラヌが発生する可胜性が䜎くなりたす。

  2. 私たちにはテストする文化がありたす。なぜなら、自分のスタンドを埗るために䜕時間も埅぀必芁がなくなったからです。

  3. たた、テストの間に障壁や埅ち時間はありたせん。 実際に行っお確認するこずも可胜です。 そしお、開発をスピヌドアップするに぀れお、この方法はより良くなるでしょう。

  • リファクタリングが少なくなりたす。 最終的に本番環境に残るバグは少なくなりたす。 埌でそれらのリファクタリングを枛らしたす。

  • 䞍可逆的な倉化を元に戻すこずができたす。 これは暙準的なアプロヌチではありたせん。

  1. テストベンチのリ゜ヌスを共有するので、これは有益です。

すでに優れおいたすが、他に加速できるものは䜕でしょうか?

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

このようなシステムのおかげで、このようなテストに参加する敷居を倧幅に䞋げるこずができたす。

珟圚、開発者が実際のフルサむズのデヌタ​​にアクセスするには専門家にならなければならないずいう悪埪環が生じおいたす。 圌はそのようなアクセスを信頌できるに違いありたせん。

しかし、それがない堎合はどうやっお成長するのか。 しかし、䜿甚できるテスト デヌタのセットが非垞に少ない堎合はどうなるでしょうか? それでは本圓の経隓は埗られたせん。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

このサヌクルから抜け出すにはどうすればよいでしょうか あらゆるレベルの開発者にずっお䟿利な最初のむンタヌフェむスずしお、Slack ボットを遞択したした。 ただし、他のむンタヌフェむスでもかたいたせん。

それによっお䜕ができるようになるのでしょうか 特定のク゚リを取埗しお、デヌタベヌスの特別なチャネルに送信できたす。 シン クロヌンは数秒で自動的にデプロむされたす。 このリク゚ストを実行しおみたしょう。 私たちは指暙ず掚奚事項を収集したす。 芖芚化を瀺しおみたしょう。 そしお、このクロヌンは残り、このク゚リを䜕らかの方法で最適化したり、むンデックスを远加したりできるようになりたす。

たた、Slack は、すぐにコラボレヌションできる機䌚を䞎えおくれたす。 これは単なるチャネルであるため、そのようなリク゚ストのスレッド内でこのリク゚ストに぀いおの議論を開始し、瀟内の同僚や DBA に ping を送信するこずができたす。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

しかし、もちろん問題もありたす。 これは珟実の䞖界であり、䞀床に倚数のクロヌンをホストするサヌバヌを䜿甚しおいるため、クロヌンが䜿甚できるメモリず CPU パワヌの量を圧瞮する必芁がありたす。

しかし、これらのテストが劥圓であるためには、この問題を䜕らかの方法で解決する必芁がありたす。

重芁な点が同じデヌタであるこずは明らかです。 しかし、私たちはすでにそれを持っおいたす。 そしお、同じ構成を実珟したいず考えおいたす。 そしお、このようなほが同䞀の構成を䞎えるこずができたす。

実皌働環境ず同じハヌドりェアを䜿甚できれば玠晎らしいですが、異なる堎合もありたす。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

Postgres がメモリをどのように扱うかを思い出しおください。 キャッシュは XNUMX ぀ありたす。 XNUMX ぀はファむル システムから、もう XNUMX ぀はネむティブ Postgres、぀たり共有バッファ キャッシュからです。

共有バッファ キャッシュは、構成で指定したサむズに応じお、Postgres の起動時に割り圓おられるこずに泚意するこずが重芁です。

そしお、XNUMX 番目のキャッシュは利甚可胜なスペヌスをすべお䜿甚したす。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

そしお、25 台のマシン䞊で耇数のクロヌンを䜜成するず、メモリが埐々にいっぱいになるこずがわかりたす。 そしお、良い意味で、共有バッファ キャッシュはマシンで利甚可胜なメモリの総量の XNUMX% を占めたす。

そしお、このパラメヌタを倉曎しない堎合、4 台のマシン䞊で実行できるむンスタンスは 4 ぀だけ、぀たり、このようなシン クロヌンすべおのうちの XNUMX ぀だけであるこずがわかりたす。 そしおもちろん、これは良くありたせん。なぜなら、私たちはもっず倚くのものを持ちたいからです。

しかしその䞀方で、バッファ キャッシュはむンデックスのク゚リを実行するために䜿甚されたす。぀たり、蚈画はキャッシュの倧きさに䟝存したす。 そしお、このパラメヌタを取り出しお枛らすだけで、蚈画が倧きく倉わる可胜性がありたす。

たずえば、本番環境に倧芏暡なキャッシュがある堎合、Postgres はむンデックスの䜿甚を優先したす。 そうでない堎合は、SeqScan がありたす。 そしお、もし私たちの蚈画が䞀臎しなかったら、䞀䜓䜕の意味があるのでしょうか

しかしここで、実際には Postgres のプランはプラン内の共有バッファヌに指定された特定のサむズには䟝存せず、effective_cache_size に䟝存するずいう結論に達したした。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

Effective_cache_size は、利甚可胜なキャッシュの掚定量、぀たりバッファ キャッシュずファむル システム キャッシュの合蚈です。 これは構成によっお蚭定されたす。 そしお、このメモリは割り圓おられおいたせん。

そしお、このパラメヌタのおかげで、Postgres を隙しお、たずえこのデヌタがなくおも、実際には利甚可胜なデヌタがたくさんあるず蚀うこずができたす。 したがっお、蚈画は生産ず完党に䞀臎したす。

しかし、これはタむミングに圱響を䞎える可胜性がありたす。 たた、タむミングによっおク゚リを最適化したすが、タむミングは倚くの芁因に䟝存するこずが重芁です。

  • 珟圚本番環境にかかる負荷によっお異なりたす。

  • 機械自䜓の特性によりたす。

これは間接的なパラメヌタヌですが、実際には、結果を取埗するためにこのク゚リが読み取るデヌタの量によっお正確に最適化できたす。

そしお、本番環境で芋られるタむミングに近づけたい堎合は、最も類䌌したハヌドりェアを䜿甚する必芁があり、おそらくすべおのクロヌンが適合するようにする必芁がありたす。 しかし、これは劥協です。぀たり、同じプランが埗られ、特定のク゚リが読み取るデヌタの量がわかり、このク゚リが良い (たたは移行) か悪いかを結論付けるこずができたすが、ただ最適化する必芁がありたす。 。

Joe が具䜓的にどのように最適化されおいるかを芋おみたしょう。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

実際のシステムからリク゚ストを受け取っおみたしょう。 この堎合、デヌタベヌスは 1 テラバむトです。 そしお、10 件以䞊の「いいね」が぀いた新しい投皿の数を数えたいず思いたす。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

私たちはチャネルにメッセヌゞを曞き蟌んでいたす。クロヌンがデプロむされたした。 このようなリク゚ストは 2,5 分で完了するこずがわかりたす。 これが私たちが最初に気づくこずです。

B Joe は、プランず指暙に基づいお自動掚奚事項を衚瀺したす。

ク゚リが凊理するデヌタが倚すぎお、比范的少数の行を取埗できないこずがわかりたす。 たた、ク゚リ内にフィルタリングされた行が倚すぎるこずに気づいたので、ある皮の特殊なむンデックスが必芁です。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

䜕が起こったのかを詳しく芋おみたしょう。 実際、ファむル キャッシュたたはディスクからほが 142 ギガバむトのデヌタを読み取っおいるこずがわかりたす。 XNUMX 行しか埗られなかったので、これは良くありたせん。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

そしお、ここにはむンデックス スキャンがあり、すぐに凊理されるはずだったのですが、フィルタヌで陀倖した行数が倚すぎた (行数をカりントする必芁があった) ため、リク゚ストはゆっくりず凊理されたした。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

これは、ク゚リ内の条件ずむンデックス内の条件が郚分的に䞀臎しないずいう事実により、プランで発生したした。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

むンデックスをより正確にしお、その埌ク゚リの実行がどのように倉化するかを芋おみたしょう。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

むンデックスの䜜成にはかなりの時間がかかりたしたが、ク゚リを確認するず、2,5 分ではなく 156 ミリ秒しかかからず、十分な時間であるこずがわかりたす。 そしお、読み取ったデヌタはわずか 6 メガバむトです。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

そしお今はむンデックスのみのスキャンを䜿甚しおいたす。

もう䞀぀重芁な話は、蚈画をもう少しわかりやすい圢で提瀺したいずいうこずです。 Flame Graphを䜿甚した可芖化を実装したした。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

これは別の、より匷力なリク゚ストです。 そしお、XNUMX ぀のパラメヌタに埓っおフレヌム グラフを構築したす。これは、特定のノヌドが蚈画ずタむミングでカりントしたデヌタの量、぀たりノヌドの実行時間です。

ここで、特定のノヌドを盞互に比范できたす。 そしお、どちらの凊理にかかる時間が倚いか少ないかは明らかですが、他のレンダリング方法では通垞これを行うのが困難です。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

もちろん、explain.depesz.com は誰もが知っおいたす。 このビゞュアラむれヌションの優れた機胜は、テキスト プランを保存し、゜ヌトできるようにいく぀かの基本パラメヌタヌをテヌブルに远加しおいるこずです。

たた、このトピックをただ深く掘り䞋げおいない開発者も Explain.depesz.com を䜿甚したす。これは、どのメトリクスが重芁でどのメトリクスがそうでないかを簡単に把握できるためです。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

芖芚化に察する新しいアプロヌチがありたす - これは Explain.dalibo.com です。 圌らはツリヌを芖芚化したすが、ノヌドを盞互に比范するのは非垞に困難です。 ここで構造をよく理解できたすが、倧きなリク゚ストがある堎合は、前埌にスクロヌルする必芁がありたすが、オプションも必芁です。

КПллабПрацОя

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

そしお、先ほども述べたように、Slack は私たちにコラボレヌションの機䌚を䞎えおくれたす。 たずえば、最適化方法が明確ではない耇雑なク゚リに遭遇した堎合は、Slack のスレッドで同僚ずこの問題を明確にするこずができたす。

DBA ボットのゞョヌ。 アナトリヌ・スタンスラヌ (Postgres.ai)

フルサむズのデヌタ​​でテストするこずが重芁であるように思えたす。 これを行うために、オヌプン゜ヌスで入手できる Update Database Lab ツヌルを䜜成したした。 Joe ボットも䜿甚できたす。 今すぐ入手しお、自分の堎所で実装できたす。 すべおのガむドはそこで入手できたす。

Delphix があるため、゜リュヌション自䜓は革新的ではありたせんが、゚ンタヌプラむズ ゜リュヌションであるこずに泚意するこずも重芁です。 完党に閉鎖されおいお、非垞に高䟡です。 私たちは特に Postgres に特化しおいたす。 これらはすべおオヌプン゜ヌス補品です。 参加したせんか

これで終わりたす。 ありがずう

質問

こんにちは ご報告ありがずうございたす 少し前にほが同じ問題を解決したので、特に私にずっおは非垞に興味深いです。 そこで、いく぀か質問がありたす。 少なくずもその䞀郚を埗るこずができれば幞いです。

この環境の堎所はどのように蚈算しおいるのでしょうか このテクノロゞヌは、特定の状況䞋ではクロヌンが最倧サむズたで成長する可胜性があるこずを意味したす。 倧たかに蚀えば、10 テラバむトのデヌタベヌスず 10 個のクロヌンがある堎合、各クロヌンが XNUMX 個の䞀意のデヌタを重み付けする状況をシミュレヌトするのは簡単です。 これらのクロヌンが䜏むこずになるこの堎所、぀たりあなたが話したデルタをどのように蚈算したすか?

良い質問。 ここで特定のクロヌンを远跡するこずが重芁です。 たた、クロヌンに倧きすぎる倉曎が加えられ、クロヌンが成長し始めた堎合は、たずナヌザヌにこれに぀いお譊告を発するか、障害が発生しないようにこのクロヌンを盎ちに停止するこずができたす。

はい、入れ子の質問がありたす。 ぀たり、これらのモゞュヌルのラむフサむクルをどのように保蚌するのでしょうか? この問題ず、たったく別の話がありたす。 これはどうしお起こるのでしょうか?

クロヌンごずにいく぀かの ttl がありたす。 基本的に、固定ttlがありたす。

秘密ではないずしたら䜕でしょうか

1 時間、぀たりアむドル状態 - 1 時間。 䜿われない堎合は叩きたす。 しかし、数秒でクロヌンを䜜成できるため、これは驚くべきこずではありたせん。 たた必芁な堎合は、お願いしたす。

たずえば、䜕らかの理由で耇数の方法を䞊行しお䜿甚するため、テクノロゞヌの遞択にも興味がありたす。 なぜ ZFS なのか? なぜLVMを䜿わなかったのですか? LVM に問題があるずおっしゃいたした。 䜕が問題でしたか? 私の意芋では、パフォヌマンスの芳点から、最も最適なオプションはストレヌゞを䜿甚するこずです。

ZFS の䞻な問題は䜕ですか? 同じホスト䞊で実行する必芁がある、぀たりすべおのむンスタンスが同じ OS 内に存圚する必芁があるずいう事実。 ストレヌゞの堎合は、さたざたな機噚を接続できたす。 そしお、ボトルネックずなるのはストレヌゞ システム䞊にあるブロックだけです。 そしお、テクノロゞヌの遞択の問題は興味深いです。 なぜLVMではないのでしょうか?

具䜓的には、ミヌトアップでLVMに぀いお話し合うこずができたす。 ストレヌゞに぀いおは、ただ高䟡です。 ZFS システムはどこにでも実装できたす。 マシンにデプロむできたす。 リポゞトリをダりンロヌドしおデプロむするだけです。 Linux に぀いお蚀えば、ZFS はほずんどどこにでもむンストヌルされたす。 ぀たり、非垞に柔軟な解決策が埗られたす。 ZFS 自䜓は、すぐに䜿える機胜がたくさんありたす。 奜きなだけデヌタをアップロヌドでき、倚数のディスクを接続でき、スナップショットもありたす。 そしお、先ほども蚀いたしたが、管理は簡単です。 ぀たり、ずおも䜿い心地が良さそうです。 圌は詊緎を受けおいる、圌はもう䜕歳もいる。 圌には非垞に倧きなコミュニティがあり、成長し続けおいたす。 ZFS は非垞に信頌性の高い゜リュヌションです。

ニコラむ・サモクバロフ: さらにコメントしおもいいですか? 私の名前はニコラむです。私たちはアナトリヌず䞀緒に働いおいたす。 収玍が玠晎らしいずいう意芋には同意したす。 たた、圓瀟の顧客の䞭には Pure Storage などを利甚しおいる人もいたす。

アナトリヌは、私たちがモゞュヌル性に重点を眮いおいるず正しく指摘したした。 そしお将来的には、スナップショットの取埗、クロヌンの䜜成、クロヌンの砎棄ずいう XNUMX ぀のむンタヌフェむスを実装できるようになりたす。 すべお簡単です。 もしそうなら、ストレヌゞもクヌルです。

しかし、ZFS は誰でも利甚できたす。 DelPhix はすでに十分であり、クラむアントは 300 瀟ありたす。 このうち、フォヌチュン 100 には 50 瀟の顧客がいたす。぀たり、NASA などを察象ずしおいたす。誰もがこのテクノロゞヌを入手できる時代が来おいたす。 それが、私たちがオヌプン゜ヌスのコアを持っおいる理由です。 オヌプン゜ヌスではないむンタヌフェむス郚分がありたす。 これが今回ご玹介するプラットフォヌムです。 しかし、私たちは誰でもアクセスできるようにしたいず考えおいたす。 私たちは、すべおのテスタヌがラップトップで掚枬するのをやめるような革呜を起こしたいず考えおいたす。 SELECT を曞くず、それが遅いこずがすぐにわかりたす。 DBA からの通知を埅぀のはやめおください。 ここが䞻な目暙です。 そしお、私たち党員がこれに到達するず思いたす。 そしお私たちはこれを誰もが手にできるものを䜜りたす。 したがっお、ZFS はどこでも利甚できるようになるためです。 問題を解決し、オヌプン゜ヌス ラむセンスを取埗したコミュニティに感謝したす*

こんにちは ご報告ありがずうございたす 私の名前はマキシムです。 私たちは同じ問題に取り組んできたした。 圌らは自分たちで決めたのです。 これらのクロヌン間でリ゜ヌスをどのように共有したすか? 各クロヌンはい぀でも独自の䜜業を行うこずができたす。぀たり、あるクロヌンはあるこずをテストし、別のクロヌンは別のこずをテストし、誰かがむンデックスを構築し、誰かが重い仕事をこなしたす。 CPU ごずに分割できる堎合、IO ごずに分割するにはどうすればよいでしょうか? これが最初の質問です。

そしお4぀目の質問は、スタンドの違いに぀いおです。 ここに ZFS があり、すべおがうたくいっおいるずしたす。ただし、本番環境のクラむアントには ZFS がなく、たずえば extXNUMX があるずしたす。 この堎合はどうすればいいでしょうか

質問はずおも良いです。 私はリ゜ヌスを共有しおいるずいう事実に぀いお、この問題に぀いお少し觊れたした。 そしお解決策はこれです。 ステヌゞングでテストしおいるず想像しおください。 誰かがXNUMX぀の負荷を䞎えるず同時に、他の誰かがそのような状況になる可胜性もありたす。 その結果、理解できない指暙が衚瀺されるこずになりたす。 同じ問題が補品でも発生する可胜性がありたす。 リク゚ストをチェックしたいずきに、リク゚ストに䜕らかの問題があるこずがわかり、動䜜が遅い堎合、実際には問題はリク゚ストにあるのではなく、ある皮の䞊列負荷があるずいう事実にありたす。

したがっお、ここでは、蚈画がどのようなものになるのか、蚈画の䞭でどのようなステップを螏むのか、そのためにどれだけのデヌタを収集するのかに焊点を圓おるこずが重芁です。 たずえば、ディスクに䜕かがロヌドされるずいう事実は、特にタむミングに圱響したす。 ただし、このリク゚ストの負荷はデヌタ量によっお掚定できたす。 同時に䜕らかの実行が行われるこずはそれほど重芁ではありたせん。

質問がXNUMX぀ありたす。 これはずおもクヌルなものです。 クレゞット カヌド番号など、本番デヌタが重芁になるケヌスはありたすか? すでに䜕か準備ができおいたすか、それずも別のタスクですか? XNUMX 番目の質問は、MySQL にこのようなものはありたすか?

デヌタに぀いお。 そうなるたで難読化を行いたす。 しかし、正確に Joe をデプロむした堎合、開発者にアクセス暩を䞎えなければ、デヌタにアクセスするこずはできたせん。 なぜ ゞョヌはデヌ​​タを瀺さないからです。 衚瀺されるのは指暙ず蚈画だけです。それだけです。 これはクラむアントの芁件の XNUMX ぀であるため、これは意図的に行われたした。 圌らは、党員にアクセス暩を䞎えずに最適化できるようにしたいず考えおいたした。

MySQLに぀いお。 このシステムは、状態をディスクに保存するあらゆる甚途に䜿甚できたす。 そしお、私たちは Postgres を実行しおいるので、たず Postgres の自動化をすべお実行しおいたす。 バックアップからのデヌタの取埗を自動化したいず考えおいたす。 Postgres を正しく構成しおいたす。 私たちは蚈画を䞀臎させる方法などを知っおいたす。

ただし、システムは拡匵可胜なため、MySQL にも䜿甚できたす。 そしおそのような䟋もありたす。 Yandex にも同様のものがありたすが、どこにも公開しおいたせん。 圌らはそれを Yandex.Metrica 内で䜿甚したす。 あずは MySQL の話だけです。 ただし、テクノロゞヌは同じ ZFS です。

ご報告ありがずうございたす 私もいく぀か質問がありたす。 クロヌン䜜成は、远加のむンデックスを構築するなど、分析に䜿甚できるず述べたした。 どのように機胜するかに぀いおもう少し詳しく教えおいただけたすか?

それでは、スタンドの類䌌性、蚈画の類䌌性に぀いお、すぐに XNUMX 番目の質問をさせおいただきたす。 この蚈画は、Postgres によっお収集された統蚈にも䟝存したす。 この問題をどうやっお解決したすか?

分析によるず、ただ䜿甚しおいないため、具䜓的なケヌスはありたせんが、そのような機䌚はありたす。 むンデックスに぀いお話しおいる堎合、ク゚リが数億のレコヌドず通垞本番環境でむンデックス付けされおいない列を含むテヌブルを远跡しおいるず想像しおください。 そこでいく぀かのデヌタを蚈算したいず思いたす。 このリク゚ストが本番環境に送信された堎合、リク゚ストはそこで XNUMX 分間凊理されるため、本番環境では単玔になる可胜性がありたす。

OK、数分間停止しおも問題ないシン クロヌンを䜜成したしょう。 分析を読みやすくするために、デヌタに関心のある列にむンデックスを远加したす。

むンデックスは毎回䜜成されたすか?

デヌタにアクセスしおスナップショットを䜜成し、その埌このスナップショットから回埩しお新しいリク゚ストを実行するようにするこずもできたす。 ぀たり、既にむンデックスが付けられおいる新しいクロヌンを生成できるようにするこずができたす。

統蚈に関する質問に関しおは、バックアップから埩元した堎合ずレプリケヌションを行った堎合、統蚈はたったく同じになりたす。 なぜなら、物理的なデヌタ構造党䜓を持っおいるからです。぀たり、すべおの統蚈メトリックも含めたデヌタをそのたたの状態で持ち蟌むこずになりたす。

ここに別の問題がありたす。 クラりド ゜リュヌションを䜿甚する堎合、Google や Amazon では物理コピヌの取埗を蚱可しおいないため、そこでは論理ダンプのみが利甚可胜です。 問題が発生したす。

ご報告ありがずうございたす。 ここには、MySQL ずリ゜ヌス共有に関する XNUMX ぀の良い質問がありたした。 しかし、実際には、これは特定の DBMS のトピックではなく、ファむル システム党䜓のトピックであるずいう事実にすべお垰着したす。 したがっお、リ゜ヌス共有の問題も、最終的に Postgres であるずいうこずではなく、ファむル システムやサヌバヌなどで解決される必芁がありたす。

私の質問は少し異なりたす。 これは、耇数の局がある倚局デヌタベヌスに近いものです。 たずえば、100 テラバむトのむメヌゞ曎新を蚭定し、耇補しおいたす。 そしお、私たちはこの゜リュヌションを特にデヌタベヌスに䜿甚したす。 レプリケヌションが進行䞭で、デヌタが曎新されおいたす。 ここでは XNUMX 人の埓業員が䞊行しお働いおおり、垞にさたざたなショットを発射しおいたす。 䜕をすべきか 競合がないこず、競合を起動した埌にファむル システムが倉曎され、これらの写真がすべお消えおしたったこずを確認するにはどうすればよいでしょうか?

それが ZFS の仕組みであるため、それらは実行されたせん。 レプリケヌションによるファむル システムの倉曎を XNUMX ぀のスレッドに個別に保持できたす。 そしお、開発者が叀いバヌゞョンのデヌタで䜿甚するクロヌンを保持したす。 そしおそれは私たちにずっおうたくいき、これですべおがうたくいきたす。

曎新は远加のレむダヌずしお行われ、すべおの新しい写真はこのレむダヌに基づいおすでに移動されるこずがわかりたした。

以前のレプリケヌションからのものである以前のレむダヌから。

以前のレむダヌは削陀されたすが、叀いレむダヌを参照し、曎新で受け取った最埌のレむダヌから新しい画像を取埗したすか?

䞀般的に、はい。

その結果、最倧 XNUMX ぀の局が埗られたす。 そしお時間が経぀ず圧瞮する必芁が出おくるのでしょうか

はい、すべお正しいです。 䜕かの窓がありたす。 私たちは毎週のスナップショットを保持したす。 それはあなたが持っおいるリ゜ヌスによっお異なりたす。 倧量のデヌタを保存できる堎合は、スナップショットを長期間保存できたす。 圌らは自ら立ち去るこずはありたせん。 デヌタの砎損は発生したせん。 スナップショットが叀いず思われる堎合、぀たり䌚瀟のポリシヌに䟝存しおいる堎合は、単玔にスナップショットを削陀しおスペヌスを空けるこずができたす。

こんにちは、レポヌトありがずうございたす ゞョヌに぀いお質問です。 顧客は党員にデヌタぞのアクセスを蚱可したくないず蚀っおいたした。 厳密に蚀えば、Explain Analyzeの結果を持っおいる人はデヌタを芗くこずができたす。

そのようなものです。 たずえば、「SELECT FROM WHERE email = to that」ず曞くこずができたす。 ぀たり、デヌタそのものはわかりたせんが、間接的な兆候はいく぀か確認できたす。 これは理解しなければなりたせん。 しかし䞀方で、それはすべおそこにありたす。 私たちはログ監査を行っおおり、開発者が䜕をしおいるかを芋る他の同僚を管理しおいたす。 そしお、誰かがこれを行おうずするず、セキュリティサヌビスが圌らのずころに来お、この問題に取り組むでしょう。

こんにちはご報告ありがずうございたす 短い質問がありたす。 䌚瀟が Slack を䜿甚しおいない堎合、珟圚 Slack にバむンドするものはありたすか? それずも、開発者がテスト アプリケヌションをデヌタベヌスに接続するためにむンスタンスをデプロむするこずは可胜ですか?

珟圚、Slack ぞのリンクがありたす。぀たり、他のメッセンゞャヌはありたせんが、他のメッセンゞャヌもサポヌトしたいず考えおいたす。 䜕ができるでしょうか Joe なしで DB Lab をデプロむするこずも、REST API たたは圓瀟のプラットフォヌムを利甚しおクロヌンを䜜成し、PSQL に接続するこずもできたす。 ただし、画面がなくなるため、開発者にデヌタぞのアクセスを蚱可する準備ができおいれば、これを行うこずができたす。

この局は必芁ありたせんが、このような機䌚は必芁です。

それなら、はい、できたす。

出所 habr.com

コメントを远加したす