DBA Bot Joe. Anatoly Stansler (Postgres.ai)

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Wéi versteet e Backend Entwéckler datt eng SQL Ufro gutt op engem "Prod" funktionnéiert? A groussen oder séier wuessende Firmen huet net jiddereen Zougang zum "Produkt". A mat Zougang kënnen net all Ufroe schmerzlos iwwerpréift ginn, an eng Kopie vun der Datebank erstellen dauert dacks Stonnen. Fir dës Problemer ze léisen, hu mir eng kënschtlech DBA erstallt - Joe. Et ass schonn erfollegräich a verschiddene Firmen ëmgesat ginn an hëlleft méi wéi eng Dosen Entwéckler.

Video:

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Moien alleguer! Mäin Numm ass Anatoly Stansler. Ech schaffen fir eng Firma postgres.ai. Mir verpflichte den Entwécklungsprozess ze beschleunegen andeems d'Verspéidunge mat der Aarbecht vu Postgres vun Entwéckler, DBAs a QAs verbonne sinn.

Mir hunn super Clienten an haut gëtt en Deel vum Bericht u Fäll gewidmet, déi mir begéint hunn wärend mir mat hinnen geschafft hunn. Ech wäert schwätzen iwwer wéi mir hinnen gehollef hunn zimlech sérieux Problemer ze léisen.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Wa mir komplex High-load Migratiounen entwéckelen a maachen, stelle mir eis d'Fro: "Wäert dës Migratioun ofhuelen?". Mir benotzen Iwwerpréiwung, mir benotzen d'Wëssen vun méi erfuerene Kollegen, DBA Experten. A si kënne soen ob et fléien oder net.

Awer vläicht wier et besser wa mir et selwer op voller Gréisst Exemplare kéinten testen. An haut wäerte mir just schwätzen iwwer wéi eng Approche fir Testen elo sinn a wéi et besser ka gemaach ginn a mat wéi engem Tools. Mir wäerten och iwwer d'Virdeeler an Nodeeler vun esou Approche schwätzen, a wat mir hei kënne fixéieren.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Wien huet jeemools Indexen direkt op Prod gemaach oder Ännerungen gemaach? Ganz e bësse vun. A fir wiem huet dat dozou gefouert, datt Daten verluer gaangen sinn oder Ausbréch goufen? Da kennt Dir dës Péng. Gott sei Dank ginn et Backups.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Déi éischt Approche ass Testen am Prod. Oder, wann en Entwéckler op enger lokaler Maschinn sëtzt, huet hien Testdaten, et gëtt eng Aart vu limitéierter Auswiel. A mir rullen eraus fir ze prodéieren, a mir kréien dës Situatioun.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Et deet wéi, et ass deier. Et ass wahrscheinlech am beschten net.

A wat ass de beschte Wee fir dat ze maachen?

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Loosst eis d'Inszenéierung huelen a wielt en Deel vum Prod do. Oder am beschten, loosst eis e richtege Prod huelen, all d'Donnéeën. A nodeems mir et lokal entwéckelt hunn, wäerte mir zousätzlech fir Inszenéierung kucken.

Dëst erlaabt eis e puer vun de Feeler ze läschen, dh verhënneren datt se op Prod sinn.

Wat sinn d'Problemer?

  • De Problem ass, datt mir dës Inszenéierung mat Kollegen deelen. A ganz dacks geschitt et datt Dir eng Aart vu Changement maacht, bam - an et gëtt keng Daten, d'Aarbecht ass erofgaang. Staging war Multi-Terabyte. An et muss ee laang waarden bis et erëm eropgeet. A mir décidéieren et muer ze finaliséieren. Dat ass et, mir hunn eng Entwécklung.
  • An natierlech hu mir vill Kollegen, déi do schaffen, vill Teams. An et muss manuell gemaach ginn. An dëst ass onbequem.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

An et ass derwäert ze soen datt mir nëmmen ee Versuch hunn, ee Schoss, wa mir e puer Ännerungen an der Datebank maache wëllen, d'Donnéeën beréieren, d'Struktur änneren. A wann eppes falsch gaang ass, wann et e Feeler an der Migratioun gouf, da wäerte mir net séier zréckrollen.

Dëst ass besser wéi déi viregt Approche, awer et ass nach ëmmer eng héich Wahrscheinlechkeet datt eng Aart vu Feeler an d'Produktioun geet.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Wat verhënnert datt mir all Entwéckler eng Testbänk ginn, eng Kopie vu voller Gréisst? Ech mengen, et ass kloer, wat an de Wee steet.

Wien huet eng Datebank méi grouss wéi en Terabyte? Méi wéi d'Halschent vum Raum.

An et ass kloer datt d'Maschinnen fir all Entwéckler ze halen, wann et esou eng grouss Produktioun ass, ganz deier ass, an zousätzlech dauert et laang.

Mir hunn Clienten, déi gemierkt hunn, datt et ganz wichteg ass all Ännerungen op voll-Gréisst Exemplare ze Test, mä hir Datebank ass manner wéi engem Terabyte, an et gi keng Ressourcen engem Test Bank fir all Entwéckler ze halen. Dofir musse se d'Dumps lokal op hir Maschinn eroflueden an op dës Manéier testen. Et brauch vill Zäit.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Och wann Dir et an der Infrastruktur maacht, dann ass den Download vun engem Terabyte vun Daten pro Stonn scho ganz gutt. Awer si benotzen logesch Dumps, si lueden lokal aus der Wollek erof. Fir si ass d'Geschwindegkeet ongeféier 200 Gigabyte pro Stonn. An et brauch nach ëmmer Zäit fir sech vum logesche Dump ëmzedréien, d'Indexen opzerollen, asw.

Awer si benotzen dës Approche well et hinnen erlaabt de Prod zouverlässeg ze halen.

Wat kënne mir hei maachen? Loosst eis Testbänke bëlleg maachen an all Entwéckler seng eege Testbänk ginn.

An dëst ass méiglech.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

An an dëser Approche, wa mir dënn Klonen fir all Entwéckler maachen, kënne mir et op enger Maschinn deelen. Zum Beispill, wann Dir eng 10TB Datebank hutt an et un 10 Entwéckler wëllt ginn, musst Dir keng XNUMX x XNUMXTB Datenbanken hunn. Dir braucht nëmmen eng Maschinn fir dënn isoléiert Kopien fir all Entwéckler mat enger Maschinn ze maachen. Ech soen Iech e bësse méi spéit wéi et funktionnéiert.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Real Beispill:

  • DB - 4,5 Terabytes.

  • Mir kënnen onofhängeg Kopien an 30 Sekonnen kréien.

Dir musst net op en Teststand waarden an hänkt dovun of wéi grouss et ass. Dir kënnt et a Sekonnen kréien. Et wäert komplett isoléiert Ëmfeld sinn, awer déi Daten ënner sech deelen.

Dëst ass super. Hei schwätze mir iwwer Magie an engem parallelen Universum.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

An eisem Fall funktionnéiert dëst mam OpenZFS System.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

OpenZFS ass e Copy-on-Write Dateiesystem deen Snapshots a Klonen aus der Këscht ënnerstëtzt. Et ass zouverlässeg a skalierbar. Si ass ganz einfach ze managen. Et kann wuertwiertlech an zwou Équipen ofgesat ginn.

Et ginn aner Optiounen:

  • lvm,

  • Stockage (zum Beispill Pure Storage).

Den Datebank Labo iwwer ech schwätzen ass modulär. Kann duerch dës Optiounen ëmgesat ginn. Awer fir de Moment hu mir op OpenZFS konzentréiert, well et Problemer mat LVM speziell waren.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Wéi funktionéiert et? Amplaz d'Donnéeën all Kéier ze iwwerschreiwe wann mir se änneren, späichere mir se andeems Dir einfach markéiert datt dës nei Donnéeën vun engem neie Punkt an der Zäit sinn, en neie Schnappschëss.

An an Zukunft, wa mir wëllen zréckrollen oder mir wëllen en neie Klon aus enger aler Versioun maachen, soen mir just: "OK, gitt eis dës Datenblocken déi esou markéiert sinn."

An dëse Benotzer wäert mat esou engem Datesaz schaffen. Hie wäert se graduell änneren, seng eege Snapshots maachen.

A mir wäerte Branchen. All Entwéckler an eisem Fall wäert d'Méiglechkeet hunn säin eegene Klon ze hunn deen hien ännert, an d'Donnéeën déi gedeelt ginn tëscht jidderengem gedeelt ginn.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Fir esou e System doheem z'installéieren, musst Dir zwee Probleemer léisen:

  • Déi éischt ass d'Quell vun den Donnéeën, wou Dir se huele wäert. Dir kënnt Replikatioun mat Produktioun astellen. Dir kënnt schonn d'Backups benotzen déi Dir konfiguréiert hutt, ech hoffen. WAL-E, WAL-G oder Barman. An och wann Dir eng Aart vu Cloud Léisung wéi RDS oder Cloud SQL benotzt, da kënnt Dir logesch Dumps benotzen. Awer mir roden Iech nach ëmmer Backups ze benotzen, well mat dëser Approche wäert Dir och déi kierperlech Struktur vun de Dateien behalen, wat Iech erlaabt Iech nach méi no un de Metriken ze sinn, déi Dir an der Produktioun géift gesinn, fir dës Probleemer ze fangen déi existéieren.

  • Déi zweet ass wou Dir den Datebank Lab wëllt hosten. Et kéint Cloud sinn, et kéint On-Premise sinn. Et ass wichteg hei ze soen datt ZFS Datekompressioun ënnerstëtzt. An et mécht et ganz gutt.

Stellt Iech vir, datt fir all esou Klon, ofhängeg vun den Operatiounen, déi mir mat der Basis maachen, eng Aart Dev wäert wuessen. Fir dëst brauch Dev och Plaz. Awer wéinst der Tatsaach datt mir eng Basis vu 4,5 Terabytes geholl hunn, wäert ZFS et op 3,5 Terabytes kompriméieren. Dëst kann ofhängeg vun den Astellungen variéieren. A mir hunn nach Plaz fir Dev.

Esou e System kann fir verschidde Fäll benotzt ginn.

  • Dëst sinn Entwéckler, DBAs fir Ufrovalidatioun, fir Optimisatioun.

  • Dëst kann am QA Testen benotzt ginn fir eng bestëmmte Migratioun ze testen ier mir et ausrollen fir ze prodéieren. A mir kënnen och speziell Ëmfeld fir QA mat realen Daten erhéijen, wou se nei Funktionalitéit testen. An et wäert Sekonnen huelen amplaz Stonnen waarden, a vläicht Deeg an e puer anere Fäll wou dënn Kopie net benotzt ginn.

  • An en anere Fall. Wann d'Firma keen Analysesystem opgeriicht huet, da kënne mir en dënnen Klon vun der Produktbasis isoléieren an et op laang Ufroen oder speziellen Indexen ginn, déi an der Analyse benotzt kënne ginn.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Mat dëser Approche:

  1. Niddereg Wahrscheinlechkeet vu Feeler op der "Prod", well mir all Ännerungen op voller Gréisst Daten getest.

  2. Mir hunn eng Testkultur, well elo musst Dir net méi Stonnen op Ären eegene Stand waarden.

  3. An et gëtt keng Barrière, keng Waarde tëscht Tester. Dir kënnt tatsächlech goen a kontrolléieren. An et wäert esou besser sinn wéi mir d'Entwécklung beschleunegen.

  • Et wäert manner Refactoring ginn. Manner Bugs wäerten an der Prod ophalen. Mir wäerte se spéider manner refaktoréieren.

  • Mir kënnen irreversibel Ännerungen ëmsetzen. Dëst ass net déi Standard Approche.

  1. Dëst ass profitabel well mir d'Ressourcen vun den Testbänken deelen.

Scho gutt, awer wat kéint nach beschleunegt ginn?

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Dank esou engem System kënne mir d'Schwell fir esou Tester anzeginn staark reduzéieren.

Elo gëtt et e béise Krees, wann en Entwéckler, fir Zougang zu realen vollgréissten Donnéeën ze kréien, en Expert muss ginn. Hie muss mat sou Zougang vertraut ginn.

Awer wéi ze wuessen wann et net do ass. Awer wat wann Dir nëmmen e ganz klenge Set vun Testdaten zur Verfügung hutt? Da kritt Dir keng richteg Erfahrung.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Wéi kënnt Dir aus dësem Krees erauskommen? Als éischten Interface, praktesch fir Entwéckler vun all Niveau, hu mir de Slack Bot gewielt. Awer et kann all aner Interface sinn.

Wat erlaabt et Iech ze maachen? Dir kënnt eng spezifesch Ufro huelen an et op e spezielle Kanal fir d'Datebank schécken. Mir wäerten automatesch en dënnen Klon a Sekonnen ofsetzen. Loosst eis dës Ufro lafen. Mir sammelen Metriken a Empfehlungen. Loosst eis eng Visualiséierung weisen. An da bleift dëse Klon sou datt dës Ufro iergendwéi optimiséiert ka ginn, Indexen addéieren, asw.

An och Slack gëtt eis Méiglechkeete fir Zesummenaarbecht aus der Këscht. Well dëst just e Kanal ass, kënnt Dir ufänken iwwer dës Ufro direkt am Fuedem fir sou eng Ufro ze diskutéieren, ping Är Kollegen, DBAen déi an der Firma sinn.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Mä et ginn natierlech Problemer. Well dëst déi richteg Welt ass, a mir benotzen e Server, deen vill Klonen gläichzäiteg hostt, musse mir d'Quantitéit un Erënnerung an CPU-Kraaft kompriméieren, déi fir d'Klone verfügbar ass.

Awer fir datt dës Tester plausibel sinn, musst Dir dëse Problem iergendwéi léisen.

Et ass kloer datt de wichtege Punkt déiselwecht Donnéeën ass. Mä mir hunn et schonn. A mir wëllen déi selwecht Konfiguratioun erreechen. A mir kënnen esou eng bal identesch Konfiguratioun ginn.

Et wier cool déi selwecht Hardware ze hunn wéi an der Produktioun, awer et kann ënnerschiddlech sinn.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Loosst eis drun erënneren wéi Postgres mat Erënnerung funktionnéiert. Mir hunn zwee Cache. Een aus dem Dateiesystem an een gebierteg Postgres, dh Shared Buffer Cache.

Et ass wichteg ze notéieren datt de Shared Buffer Cache zougewisen gëtt wann Postgres ufänkt, jee no wéi enger Gréisst Dir an der Konfiguratioun spezifizéiert.

An den zweeten Cache benotzt all verfügbare Raum.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

A wa mir e puer Klonen op enger Maschinn maachen, stellt sech eraus datt mir d'Erënnerung lues a lues ausfëllen. An op eng gutt Manéier ass Shared Buffer Cache 25% vun der Gesamtbetrag vun der Erënnerung déi op der Maschinn verfügbar ass.

An et stellt sech eraus datt wa mir dëse Parameter net änneren, da kënne mir nëmmen 4 Instanzen op enger Maschinn lafen, dat heescht 4 vun dësen dënnen Klonen am Ganzen. An dat ass natierlech schlecht, well mir wëllen vill méi vun hinnen hunn.

Awer op der anerer Säit gëtt Buffer Cache benotzt fir Ufroe fir Indexen auszeféieren, dat heescht, de Plang hänkt dovun of wéi grouss eis Cache sinn. A wa mir just dëse Parameter huelen a reduzéieren, da kënnen eis Pläng vill änneren.

Zum Beispill, wa mir e grousse Cache op Prod hunn, da wäert Postgres léiwer en Index benotzen. A wann net, da gëtt et SeqScan. A wat wier de Punkt wann eis Pläng net zesummekommen?

Awer hei komme mir zur Conclusioun datt tatsächlech de Plang an Postgres net vun der spezifescher Gréisst hänkt, déi am Shared Buffer am Plang spezifizéiert ass, et hänkt vun der effective_cache_size of.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Effective_cache_size ass de geschätzte Betrag vum Cache deen eis verfügbar ass, dh d'Zomm vum Buffer Cache an Dateiesystem Cache. Dëst gëtt vun der Configuratioun gesat. An dës Erënnerung ass net zougewisen.

A wéinst dësem Parameter kënne mir Postgres eng Aart Trick soen, datt mir tatsächlech vill Daten verfügbar hunn, och wa mir dës Donnéeën net hunn. An esou wäerten d'Pläng komplett mat der Produktioun zesummefalen.

Awer dëst kann den Timing beaflossen. A mir optimiséieren Ufroen duerch Timing, awer et ass wichteg datt den Timing vu ville Faktoren hänkt:

  • Et hänkt vun der Laascht of, déi am Moment op Prod ass.

  • Et hänkt vun de Charakteristiken vun der Maschinn selwer of.

An dëst ass en indirekten Parameter, awer tatsächlech kënne mir genau optimiséieren duerch d'Quantitéit vun Daten déi dës Ufro liest fir d'Resultat ze kréien.

A wann Dir wëllt datt den Timing no bei deem ass wat mir am Prod gesinn, da musse mir déi ähnlech Hardware huelen an eventuell nach méi sou datt all Klonen passen. Awer dëst ass e Kompromiss, dh Dir kritt déiselwecht Pläng, Dir gesitt wéi vill Daten eng bestëmmte Ufro liest an Dir kënnt ofschléissen ob dës Ufro gutt (oder Migratioun) oder schlecht ass, et muss nach ëmmer optimiséiert ginn .

Loosst eis kucken wéi de Joe speziell optimiséiert ass.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Loosst eis eng Ufro vun engem richtege System huelen. An dësem Fall ass d'Datebank 1 Terabyte. A mir wëllen d'Zuel vun de frësche Posts zielen déi méi wéi 10 Likes haten.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Mir schreiwen e Message un de Kanal, e Klon ass fir eis agesat ginn. A mir wäerte gesinn datt esou eng Demande an 2,5 Minutten fäerdeg ass. Dëst ass dat éischt wat mir bemierken.

B Joe weist Iech automatesch Empfehlungen op Basis vum Plang a Metriken.

Mir wäerte gesinn datt d'Ufro ze vill Daten veraarbecht fir eng relativ kleng Zuel vu Reihen ze kréien. An eng Aart vu spezialiséierten Index ass gebraucht, well mir gemierkt hunn datt et ze vill gefilterte Reihen an der Ufro sinn.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Loosst eis e bësse méi no kucken wat geschitt ass. Tatsächlech gesi mir datt mir bal annerhallef Gigabyte vun Daten aus dem Dateicache oder souguer vun der Disk gelies hunn. An dat ass net gutt, well mir hunn nëmmen 142 Linnen.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

An, et géif schéngen, mir hunn hei en Index-Scan a sollten séier geklappt hunn, mee well mer ze vill Zeilen erausgefiltert hunn (mir hu missen zielen), huet d'Ufro lues a lues geklappt.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

An dat geschitt am Plang wéinst der Tatsaach, datt d'Konditiounen an der Ufro an d'Konditiounen am Index deelweis net matenee passen.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Loosst eis probéieren den Index méi präzis ze maachen a kucken wéi d'Ufro-Ausféierung duerno ännert.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

D'Schafe vum Index huet zimlech laang gedauert, awer elo iwwerpréift mir d'Ufro a gesinn datt d'Zäit amplaz vun 2,5 Minutten nëmmen 156 Millisekonnen ass, wat gutt genuch ass. A mir liesen nëmmen 6 Megabytes vun Daten.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

An elo benotze mir nëmmen Index Scan.

Eng aner wichteg Geschicht ass, datt mir de Plang op eng méi verständlech Manéier wëlle presentéieren. Mir hunn Visualiséierung mat Flame Graphs implementéiert.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Dëst ass eng aner Ufro, méi intensiv. A mir bauen Flame Graphs no zwee Parameteren: dëst ass d'Quantitéit un Daten, déi e bestëmmten Node am Plang an dem Timing gezielt huet, dh d'Ausféierungszäit vum Node.

Hei kënne mir spezifesch Wirbelen matenee vergläichen. An et wäert kloer sinn, wéi eng vun hinnen méi oder manner hëlt, wat normalerweis schwéier ass an anere Renderingmethoden ze maachen.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Natierlech weess jiddereen explain.depesz.com. Eng gutt Feature vun dëser Visualiséierung ass datt mir den Textplang späicheren an och e puer grondleeënd Parameteren an eng Tabell setzen fir datt mir sortéiere kënnen.

An Entwéckler, déi nach net an dësem Thema verdéift hunn, benotzen och explain.depesz.com, well et méi einfach ass fir si erauszefannen, wéi eng Metriken wichteg sinn a wéi eng net.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Et gëtt eng nei Approche zur Visualiséierung - dëst ass explain.dalibo.com. Si maachen eng Bamvisualiséierung, awer et ass ganz schwéier Node mateneen ze vergläichen. Hei kënnt Dir d'Struktur gutt verstoen, awer wann et eng grouss Ufro ass, da musst Dir zréck a vir scrollen, awer och eng Optioun.

Zesummenaarbecht

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

An, wéi gesot, Slack gëtt eis d'Méiglechkeet ze kollaboréieren. Zum Beispill, wa mir op eng komplex Ufro kommen, déi net kloer ass wéi se optimiséieren, kënne mir dëst Thema mat eise Kollegen an engem thread am Slack klären.

DBA Bot Joe. Anatoly Stansler (Postgres.ai)

Et schéngt eis datt et wichteg ass op voller Gréisst Daten ze testen. Fir dëst ze maachen, hu mir den Update Database Lab Tool gemaach, deen an der Open Source verfügbar ass. Dir kënnt och de Joe Bot benotzen. Dir kënnt et direkt huelen an et bei Iech ëmsetzen. All Guiden sinn do sinn.

Et ass och wichteg ze bemierken datt d'Léisung selwer net revolutionär ass, well et Delphix ass, awer et ass eng Enterprise Léisung. Et ass komplett zou, et ass ganz deier. Mir spezialiséiert speziell op Postgres. Dëst sinn all Open Source Produkter. Komm mat eis!

Dëst ass wou ech ophalen. Merci!

Är Froen

Hallo! Merci fir de Bericht! Ganz interessant, besonnesch fir mech, well ech virun enger Zäit iwwer dee selwechte Problem geléist hunn. An dofir hunn ech eng Rei Froen. Hoffentlech kréien ech op d'mannst en Deel dovunner.

Ech froe mech wéi Dir d'Plaz fir dëst Ëmfeld berechent? D'Technologie bedeit datt ënner bestëmmten Ëmstänn Är Klonen op déi maximal Gréisst wuessen kënnen. Grof geschwat, wann Dir eng zéng Terabyte Datebank an 10 Klonen hutt, dann ass et einfach eng Situatioun ze simuléieren wou all Klon 10 eenzegaarteg Daten weegt. Wéi berechent Dir dës Plaz, dat heescht, deen Delta, vun deem Dir geschwat hutt, an deem dës Klonen liewen?

Gutt Fro. Et ass wichteg fir spezifesch Klonen hei ze verfollegen. A wann e Klon eng ze grouss Ännerung huet, fänkt en un ze wuessen, da kënne mir fir d'éischt dem Benotzer eng Warnung doriwwer erausginn, oder dëse Klon direkt ophalen, fir datt mir keng Ausfallsituatioun hunn.

Jo, ech hunn eng genetesch Fro. Dat ass, wéi garantéiert Dir de Liewenszyklus vun dëse Moduler? Mir hunn dëse Problem an eng ganz separat Geschicht. Wéi geschitt dat?

Et gëtt e puer ttl fir all Klon. Prinzipiell hu mir e fixen ttl.

Wat, wann net e Geheimnis?

1 Stonn, dh Idle - 1 Stonn. Wann et net benotzt gëtt, da schloen mir et. Awer et gëtt keng Iwwerraschung hei, well mir kënnen de Klon a Sekonnen erhéijen. A wann Dir et erëm braucht, dann w.e.g.

Ech sinn och interesséiert fir d'Wiel vun Technologien, well mir zum Beispill verschidde Methoden parallel aus engem oder anere Grond benotzen. Firwat ZFS? Firwat hutt Dir net LVM benotzt? Dir hutt gesot datt et Probleemer mat LVM ginn. Wat waren d'Problemer? Menger Meenung no ass déi optimal Optioun mat Späicheren, wat d'Leeschtung ugeet.

Wat ass den Haaptproblem mat ZFS? D'Tatsaach datt Dir um selwechte Host muss lafen, dh all Instanzen liewen am selwechte OS. An am Fall vun Stockage kënnt Dir verschidden Ausrüstung verbannen. An de Flaschenhals ass nëmmen déi Blocken déi um Späichersystem sinn. An d'Fro vun der Auswiel vun Technologien ass interessant. Firwat net LVM?

Speziell kënne mir LVM bei Meetup diskutéieren. Iwwer Stockage - et ass just deier. Mir kënnen den ZFS System iwwerall implementéieren. Dir kënnt et op Ärer Maschinn ofsetzen. Dir kënnt de Repository einfach eroflueden an ofsetzen. ZFS ass bal iwwerall installéiert wa mir iwwer Linux schwätzen. Dat heescht, mir kréien eng ganz flexibel Léisung. An ZFS selwer gëtt vill aus der Këscht. Dir kënnt esou vill Daten eropluede wéi Dir wëllt, eng grouss Unzuel vun Disken verbannen, et gi Schnappschëss. A wéi gesot, et ass einfach ze administréieren. Dat ass, et schéngt ganz agreabel ze benotzen. Hien ass getest, hien ass vill Joer al. Hien huet eng ganz grouss Gemeinschaft déi wiisst. ZFS ass eng ganz zouverlässeg Léisung.

Nikolai Samokhvalov: Kann ech weider kommentéieren? Mäin Numm ass Nikolay, mir schaffen zesumme mam Anatoly. Ech averstanen dass Stockage super ass. An e puer vun eise Clienten hunn Pure Storage etc.

Den Anatoly huet richteg bemierkt datt mir op Modularitéit fokusséiert sinn. An an Zukunft kënnt Dir een Interface implementéieren - e Snapshot huelen, e Klon maachen, de Klon zerstéieren. Et ass alles einfach. A Lagerung ass cool, wann et ass.

Awer ZFS ass fir jiddereen verfügbar. DelPhix ass scho genuch, si hunn 300 Clienten. Vun dësen huet Fortune 100 50 Clienten, also si riichten op NASA, etc. Et ass Zäit fir jiddereen dës Technologie ze kréien. An dofir hu mir en Open Source Core. Mir hunn en Interface Deel deen net Open Source ass. Dëst ass d'Plattform déi mir weisen. Mä mir wëllen datt et fir jiddereen zougänglech ass. Mir wëllen eng Revolutioun maachen fir datt all Tester ophalen op Laptops ze roden. Mir mussen SELECT schreiwen an direkt gesinn datt et lues ass. Stop op d'DBA ze waarden fir Iech doriwwer ze soen. Hei ass d'Haaptziel. An ech mengen, datt mer all dozou kommen. A mir maachen dës Saach fir jiddereen ze hunn. Dofir ZFS, well et wäert iwwerall verfügbar sinn. Merci un d'Gemeinschaft fir d'Problemer ze léisen a fir eng Open Source Lizenz ze hunn, etc.*

Gréiss! Merci fir de Bericht! Mäin Numm ass Maxim. Mir hunn déiselwecht Themen beschäftegt. Si decidéiert op hir eege. Wéi deelt Dir Ressourcen tëscht dëse Klonen? All Klon kann zu all Moment seng eege Saache maachen: deen een testt eng Saach, eng aner eng aner, een baut en Index, een huet eng schwéier Aarbecht. A wann Dir nach ëmmer duerch CPU deele kënnt, dann duerch IO, wéi deelt Dir? Dëst ass déi éischt Fro.

An déi zweet Fro geet ëm d'Ongläichheet vun de Stänn. Loosst eis soen datt ech ZFS hei hunn an alles ass cool, awer de Client op Prod huet net ZFS, awer ext4, zum Beispill. Wéi an dësem Fall?

D'Froen si ganz gutt. Ech ernimmt dëse Problem e bësse mat der Tatsaach, datt mir Ressourcen deelen. An d'Léisung ass dëst. Stellt Iech vir datt Dir op der Inszenéierung testt. Dir kënnt och esou eng Situatioun an der selwechter Zäit hunn, datt een eng Laascht gëtt, een aneren. An als Resultat gesitt Dir Metriken déi onverständlech sinn. Och dee selwechte Problem ka mat Prod sinn. Wann Dir e puer Ufro wëllt iwwerpréiwen an Dir gesitt datt et e Problem domat ass - et funktionnéiert lues, da war tatsächlech de Problem net an der Ufro, mee an der Tatsaach datt et eng Aart vu parallele Laascht ass.

An dofir ass et wichteg hei ze fokusséieren op wat de Plang wäert sinn, wéi eng Schrëtt mir am Plang huelen a wéi vill Daten mir dofir sammelen. D'Tatsaach, datt eis Disken, zum Beispill, mat eppes geluede ginn, beaflosst speziell den Timing. Awer mir kënnen schätzen wéi gelueden dës Ufro duerch d'Quantitéit vun Daten ass. Et ass net sou wichteg datt gläichzäiteg eng Aart vun Ausféierung gëtt.

Ech hunn zwou Froen. Dëst ass ganz cool Saachen. Ginn et Fäll wou d'Produktiounsdaten kritesch sinn, sou wéi Kreditkaartnummeren? Gëtt et schonn eppes prett oder ass et eng separat Aufgab? An déi zweet Fro - gëtt et sou eppes fir MySQL?

Iwwer d'Donnéeën. Mir wäerte Verdueblung maachen bis mir et maachen. Awer wann Dir genau Joe ofsetzt, wann Dir keen Zougang zu Entwéckler gitt, da gëtt et keen Zougang zu den Donnéeën. Firwat? Well de Joe weist keng Daten. Et weist nëmmen Metriken, Pläng an dat ass et. Dëst gouf virsiichteg gemaach, well dëst eng vun den Ufuerderunge vun eisem Client ass. Si wollte kënnen optimiséieren ouni jidderengem Zougang ze ginn.

Iwwer MySQL. Dëse System kann fir alles benotzt ginn, wat de Staat op der Disk späichert. A well mir Postgres maachen, maache mir elo virun allem d'Automatisatioun fir Postgres. Mir wëllen automatiséieren Daten aus engem Backup ze kréien. Mir konfiguréieren Postgres richteg. Mir wëssen wéi Pläng Match ze maachen, etc.

Awer well de System erweiterbar ass, kann et och fir MySQL benotzt ginn. An et ginn esou Beispiller. Yandex huet eng ähnlech Saach, awer se verëffentlechen et néierens. Si benotzen et bannent Yandex.Metrica. An et gëtt just eng Geschicht iwwer MySQL. Awer d'Technologien sinn déiselwecht, ZFS.

Merci fir de Bericht! Ech hunn och e puer Froen. Dir hutt gesot datt Klonen ka fir Analyse benotzt ginn, zum Beispill fir do zousätzlech Indexen ze bauen. Kënnt Dir e bësse méi iwwer soen wéi et funktionnéiert?

An ech stellen direkt déi zweet Fro iwwer d'Ähnlechkeet vun de Stänn, d'Ähnlechkeet vun de Pläng. De Plang hänkt och vun de Statistiken of, déi vum Postgres gesammelt ginn. Wéi léist Dir dëse Problem?

Laut der Analyse ginn et keng spezifesch Fäll, well mir et nach net benotzt hunn, awer et gëtt esou eng Chance. Wa mir iwwer Indizes schwätzen, stellt Iech vir datt eng Ufro en Dësch mat Honnerte vu Millioune records an eng Kolonn verfollegt, déi normalerweis net a Prod indexéiert ass. A mir wëllen do e puer Donnéeë berechnen. Wann dës Ufro un d'Prod geschéckt gëtt, da gëtt et eng Méiglechkeet datt et einfach op Prod ass, well d'Ufro gëtt do fir eng Minutt veraarbecht.

Ok, loosst eis en dënnen Klon maachen deen net schrecklech ass fir e puer Minutten ze stoppen. A fir et méi bequem ze maachen d'Analytik ze liesen, addéiere mir Indizes fir déi Kolonnen an deenen mir un Daten interesséiert sinn.

Den Index gëtt all Kéier erstallt?

Dir kënnt et esou maachen datt mir d'Donnéeën beréieren, Snapshots maachen, da recuperéiere mir eis vun dësem Snapshot an fueren nei Ufroen. Dat ass, Dir kënnt et esou maachen datt Dir nei Klonen mat scho befestegten Indizes erhéijen kënnt.

Wat d'Fro iwwer Statistiken ugeet, wa mir aus engem Backup restauréieren, wa mir Replikatioun maachen, da wäerte eis Statistike genau d'selwecht sinn. Well mir déi ganz kierperlech Datestruktur hunn, dat heescht, mir bréngen d'Donnéeën wéi se mat all de Statistike Metriken och sinn.

Hei ass en anere Problem. Wann Dir eng Cloud-Léisung benotzt, da sinn nëmmen logesch Dumps do verfügbar, well Google, Amazon erlaben Iech net eng kierperlech Kopie ze huelen. Et gëtt e Problem.

Merci fir de Rapport. Et waren zwou gutt Froen hei iwwer MySQL a Ressource Sharing. Awer tatsächlech kënnt et alles op d'Tatsaach datt dëst net en Thema vu spezifesche DBMS ass, mee vum Dateiesystem als Ganzt. An deementspriechend sollen och d'Problemer vum Ressourcedeele vun do aus geléist ginn, net um Enn datt et Postgres ass, mee am Dateiesystem, zum Beispill um Server.

Meng Fro ass e bëssen anescht. Et ass méi no un der Multi-Layer Datebank, wou et e puer Schichten sinn. Zum Beispill hu mir en zéng-Terabyte Bildupdate opgeriicht, mir replizéieren. A mir benotzen dës Léisung speziell fir Datenbanken. Replikatioun ass amgaang, Daten ginn aktualiséiert. Et schaffe parallel 100 Mataarbechter, déi stänneg dës verschidde Schëss lancéieren. Wat kann een maachen? Wéi sécherzestellen, datt et kee Konflikt ass, datt se een lancéiert hunn, an dann de Dateisystem geännert, an dës Biller sinn all gaangen?

Si ginn net well dat ass wéi ZFS funktionnéiert. Mir kënnen separat an engem Fuedem d'Dateisystem Ännerungen halen, déi duerch Replikatioun kommen. A behalen d'Klonen déi d'Entwéckler op eeler Versioune vun den Daten benotzen. An et funktionnéiert fir eis, alles ass an der Rei mat dësem.

Et stellt sech eraus datt d'Aktualiséierung als zousätzlech Schicht stattfënnt, an all nei Biller ginn scho, baséiert op dëser Schicht, richteg?

Vu fréiere Schichten déi vu fréiere Replikatiounen waren.

Déi fréier Schichten falen of, awer si bezéien sech op déi al Schicht, a wäerte se nei Biller vun der leschter Schicht huelen, déi am Update kritt gouf?

Am Allgemengen, jo.

Dann als Konsequenz wäerte mir bis zu enger Fig vu Schichten hunn. A mat der Zäit musse se kompriméiert ginn?

Jo alles ass richteg. Et gëtt eng Fënster. Mir halen wëchentlech Schnappschëss. Et hänkt dovun of wéi eng Ressource Dir hutt. Wann Dir d'Fäegkeet hutt vill Daten ze späicheren, kënnt Dir Snapshots fir eng laang Zäit späicheren. Si ginn net eleng fort. Et gëtt keng Datekorruptioun. Wann d'Snapshots veroudert sinn, wéi et eis schéngt, dh et hänkt vun der Politik an der Firma of, da kënne mir se einfach läschen a Plaz befreien.

Moien, merci fir de Bericht! Fro iwwer Joe. Dir sot, de Client wollt net jidderengem Zougang zu den Donnéeë ginn. Streng geschwat, wann eng Persoun d'Resultat vun Explain Analyse huet, da kann hien d'Daten peep.

Et ass esou. Zum Beispill kënne mir schreiwen: "SELECT FROM WHERE email = to that". Dat ass, mir wäerten d'Donnéeën selwer net gesinn, awer mir kënnen e puer indirekte Schëlder gesinn. Dëst muss verstane ginn. Awer op der anerer Säit ass et alles do. Mir hunn e Log Audit, mir hunn Kontroll vun anere Kollegen déi och gesinn wat d'Entwéckler maachen. A wann ee probéiert dat ze maachen, da kënnt de Sécherheetsservice bei hinnen a schafft un dësem Thema.

Gudde Mëtteg Merci fir de Bericht! Ech hunn eng kuerz Fro. Wann d'Firma Slack net benotzt, ass et elo eng Bindung dofir, oder ass et méiglech fir Entwéckler Instanzen z'installéieren fir eng Testapplikatioun mat den Datenbanken ze verbannen?

Elo gëtt et e Link op Slack, dat heescht et gëtt keen anere Messenger, awer ech wëll wierklech och Ënnerstëtzung fir aner Messenger maachen. Wat kënnt Dir maachen? Dir kënnt DB Lab ouni Joe ofsetzen, gitt mat der Hëllef vun der REST API oder mat der Hëllef vun eiser Plattform a kreéiert Klonen a verbënnt mat PSQL. Awer dëst kann gemaach ginn wann Dir bereet sidd Är Entwéckler Zougang zu den Donnéeën ze ginn, well et kee Bildschierm méi gëtt.

Ech brauch dës Layer net, mee ech brauch esou eng Chance.

Dann jo, et kann gemaach ginn.

Source: will.com

Setzt e Commentaire