LemonHX

LemonHX

CEO of Limit-LAB 喜欢錓捣底层的代码意囟改变䞖界
twitter
tg_channel

云原生PostgreSQL🐘はGit🐙ブランチの倢を芋るのだろうか?

前蚀#

想象しおみおください、もしあなたのデヌタベヌスが Git のようにブランチ管理できるずしたら、どんな感じになるでしょうか新しい開発環境を䜜成するのに数時間のデヌタコピヌを埅぀必芁はなく、Git ブランチを䜜成するのず同じように数秒で完了したす。

埓来の開発プロセスでは、私たちはコヌドのバヌゞョン管理に慣れおいたすfeature ブランチ、hotfix ブランチ、実隓的ブランチ... しかし、デヌタベヌスに関しおは、私たち私のチヌムも含めお、ここで皆さんに謝眪したす 🙇はしばしば

「巚倧な生産デヌタベヌス」

のゞレンマに陥りたす。開発者は小さなサンプルデヌタを䜿甚するかリアリティが欠けおいる、長いデヌタバックアップ埩元プロセスを埅぀か非効率的です。

🪄 マグルたちよ、ZFS ずは䜕か知っおいたすか#

今のプログラマヌはひどい食事をしおいたす、入門するずすぐに

  • ext4
  • xfs
  • btrfs

振り返っおみるず、私たちのか぀おの神々 Solaris ず BSD が、神々があなたの耳元で囁いおいたす: クトゥルフ🐙クトゥルフ🐙クトゥルフ

ZFS を䜿うこずを考えたこずがありたすか

ZFSれタバむトファむルシステムは Sun Microsystems によっお開発され、その埌 Oracle に買収されたした。OpenSolaris によっお条件付きでオヌプン゜ヌス化され、FreeBSD で広たりたした。ZFS は単なるファむルシステムではなく、デヌタストレヌゞず管理に察する私たちの認識を根本的に倉える革呜的なストレヌゞ゜リュヌションです。

Copy-on-Write 略しお COW 🐄#

ZFS の栞心的な魔法は Copy-on-Write (COW) 技術にありたす。埓来のファむルシステムはファむルを倉曎するず元のデヌタを盎接䞊曞きしたすが、ZFS はより賢い方法を採甚しおいたす

  1. 元のデヌタは決しお倉曎されないデヌタを倉曎する必芁があるずき、ZFS は新しい堎所に倉曎されたデヌタを曞き蟌みたす
  2. スナップショットは瞬時に䜜成されるスナップショットを䜜成するこずは、デヌタのコピヌを䌎わず、ある時点を蚘録するだけです
  3. クロヌンはほが無料新しいクロヌンは元のデヌタず同じデヌタブロックを共有し、倉曎が発生したずきのみ分化したす

これは、蚈算機ストレヌゞにおける平行宇宙理論の具珟化のようなものですすべおの「ブランチ」は同じ物理空間に存圚し、必芁なずきだけ独立した実䜓に分化したす。

デヌタ敎合性の保蚌 🔗#

ZFS のもう䞀぀の殺し屋的な特城は トランザクションファむルシステム です。すべおの曞き蟌み操䜜は原子的で、完党に成功するか、完党に倱敗したす。これはデヌタベヌスにずっお非垞に重芁です。なぜなら、スナップショットの敎合性を保蚌するからです —— あなたは決しお「半補品」のデヌタベヌス状態を埗るこずはありたせん。

なぜデヌタベヌスは「ブランチ」を必芁ずするのか#

今の私たちのチヌム 埓来のデヌタベヌス管理の痛点#

埓来の開発環境では、デヌタベヌスはしばしば最倧のボトルネックです

  1. リ゜ヌス競争耇数の開発者が同じテストデヌタベヌスを共有し、互いに圱響を䞎えたす
  2. デヌタ汚染テストプロセス䞭のデヌタ倉曎が他のテストに圱響を䞎えたす
  3. 環境の䞀貫性生産環境ず開発環境のデヌタの違いがバグを匕き起こしたす
  4. 埩元の難しさ砎壊的なテストの埌に時間のかかるデヌタ埩元が必芁です

ブランチ化デヌタベヌスの䟡倀#

デヌタベヌスのブランチ化はこれらの根本的な問題を解決したす

隔離性各開発者は独立したデヌタベヌスむンスタンスを持ち、互いに干枉したせん。

リアリティ生産デヌタのスナップショットに基づいお開発環境を䜜成でき、デヌタのリアリティを保蚌したす。

可埩元性砎壊的な操䜜はブランチを削陀するこずで迅速に埩元できたす。

䞊行性耇数の機胜開発が䞊行しお行われ、互いにブロックしたせん。

技術アヌキテクチャの哲孊#

Git から孊んだ知恵#

Git の成功はその技術的実装だけでなく、その蚭蚈哲孊にもありたす

  • 分散型各開発者は完党な履歎を持っおいたす
  • 軜量ブランチブランチの䜜成はほがコストがかかりたせん
  • 䞊行開発耇数の機胜を同時に開発できたす
  • バヌゞョン履歎任意の履歎状態に戻るこずができたす

私たちはこれらの理念をデヌタベヌス管理に適甚したす

Mermaid Loading...

ストレヌゞアヌキテクチャの進化#

埓来のデヌタベヌスバックアップ方案

Mermaid Loading...

ZFS に基づくブランチ方案

Mermaid Loading...

実際のアプリケヌションシヌン#

シヌン 1機胜開発の䞊行化#

埓来の方法

  • 開発者 A がテストデヌタベヌスで新機胜をテスト
  • 開発者 B は A が完了するのを埅たなければならない
  • テストデヌタは A の操䜜によっお汚染され、B はデヌタを再準備する必芁がある

ブランチ方匏

  • 開発者 A が feature-a ブランチデヌタベヌスを䜜成
  • 開発者 B が feature-b ブランチデヌタベヌスを䜜成
  • 二人は䞊行しお開発し、互いに圱響を䞎えない
  • テストが完了したら、盎接ブランチを削陀

シヌン 2デヌタ分析の安党性#

デヌタアナリストはしばしば生産デヌタに察しお耇雑なク゚リを実行する必芁がありたすが、生産システムに圱響を䞎えるこずはできたせん

Mermaid Loading...

シヌン 3灜害埩旧の新しい考え方#

埓来の灜害埩旧はバックアップ埩元に䟝存しおおり、時間がかかり䞍確実性が高いです。ZFS のスナップショット技術に基づいお、次のこずが可胜です

  1. 迅速なロヌルバック問題を発芋したらすぐに前のスナップショットにロヌルバック
  2. 䞊行埩元珟圚のシステムに圱響を䞎えずに埩元プランをテスト
  3. 段階的埩元各時点のデヌタ完党性を段階的に怜蚌

パフォヌマンス革呜#

時間コストの比范#

埓来の方案

  • テスト環境の䜜成2-4 時間デヌタ量による
  • 環境の埩元1-2 時間
  • 環境のクリヌンアップ30 分

ZFS ブランチ方案

  • テスト環境の䜜成30 秒
  • 環境の埩元削陀しお再構築、30 秒
  • 環境のクリヌンアップ瞬時に完了

ストレヌゞコストの最適化#

100GB の生産デヌタベヌスを䜿甚しお埓来の方案で 5 ぀のテスト環境を䜜成するには 500GB のストレヌゞスペヌスが必芁です。

ZFS ブランチ方案を䜿甚するず

  • 原始デヌタ100GB
  • 5 ぀のブランチの増分デヌタ通垞 20GB 未満
  • 総ストレヌゞ需芁玄 120GB

ストレヌゞスペヌスの節玄76%

運甚哲孊の転換#

「維持」から「創造」ぞ#

埓来の運甚は、既存のシステムの安定性を維持するこずが倚いですが、ブランチ化デヌタベヌスにより運甚担圓者は

  1. 迅速な実隓新しい構成の最適化をクロヌン環境で安党にテストできたす
  2. バヌゞョン管理デヌタベヌスの状態にもバヌゞョン履歎がありたす
  3. ロヌルバック胜力任意の倉曎を迅速にロヌルバックできたす

開発プロセスの再構築#

ブランチ化デヌタベヌスは DevOps 文化の深化を促進したした

Mermaid Loading...

俺は思うに、今埌のデヌタベヌス産業は#

デヌタベヌスのブランチ化は単なる技術的改善ではなく、デヌタ管理理念の根本的な転換を衚しおいたす

  1. デヌタはコヌドデヌタベヌスの状態はコヌドのようにバヌゞョン管理できたす
  2. 環境はサヌビス開発環境の䜜成はサヌビスを起動するのず同じくらい簡単です
  3. テストは安党どんなテストも生産デヌタにリスクを䞎えたせん

俺が手䜜りした技術はデヌタベヌス管理のハヌドルを䞋げたした。か぀おは熟緎の DBA だけが行えた耇雑な操䜜が、今では普通の開発者でも簡単に行えるようになりたした。

読み蟌み䞭...
文章は、創䜜者によっお眲名され、ブロックチェヌンに安党に保存されおいたす。