DBA bot Joe. Anatoly Stansler (Postgres.ai)

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Ki jan yon pwomotè backend konprann ke yon rechèch SQL ap travay byen sou yon "prod"? Nan konpayi gwo oswa k ap grandi rapidman, se pa tout moun ki gen aksè a "pwodwi". Ak aksè, se pa tout demann yo ka tcheke san doulè, epi kreye yon kopi baz done a souvan pran èdtan. Pou rezoud pwoblèm sa yo, nou te kreye yon DBA atifisyèl - Joe. Li te deja aplike avèk siksè nan plizyè konpayi epi li ede plis pase yon douzèn devlopè.

Videyo:

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Bonjou tout moun! Non mwen se Anatoly Stansler. Mwen travay pou yon konpayi postgres.ai. Nou pran angajman pou akselere pwosesis devlopman an lè nou retire reta ki asosye ak travay Postgres nan men devlopè, DBA ak QA.

Nou gen gwo kliyan ak jodi a yon pati nan rapò a pral konsakre nan ka ke nou te rankontre pandan y ap travay avèk yo. Mwen pral pale sou fason nou te ede yo rezoud pwoblèm byen grav.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Lè n ap devlope epi fè migrasyon konplèks ki gen gwo chaj, nou poze tèt nou kesyon an: "Èske migrasyon sa a pral dekole?". Nou itilize revizyon, nou itilize konesans nan kòlèg ki gen plis eksperyans, ekspè DBA. Apre sa, yo ka di si li pral vole oswa ou pa.

Men, petèt li ta pi bon si nou ta ka teste li tèt nou sou kopi gwosè konplè. Ak jodi a nou pral jis pale sou ki apwòch tès yo kounye a ak ki jan li ka fè pi byen ak ak ki zouti. Nou pral pale tou sou avantaj ak dezavantaj nan apwòch sa yo, ak sa nou ka ranje isit la.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Ki moun ki janm fè endèks dirèkteman sou prod oswa ki fè nenpòt chanjman? Byen yon ti kras nan. Ak pou ki moun sa a te mennen nan lefèt ke done yo te pèdi oswa te gen tan D '? Lè sa a, ou konnen doulè sa a. Mèsi Bondye gen sovgad.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Premye apwòch la se tès nan prod. Oswa, lè yon pwomotè chita sou yon machin lokal, li gen done tès, gen kèk kalite seleksyon limite. Apre sa, nou woule soti nan prod, epi nou jwenn sitiyasyon sa a.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Li fè mal, li chè. Li pwobableman pi bon pa fè sa.

Ak sa ki pi bon fason pou fè li?

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Ann pran sèn epi chwazi kèk pati nan prod la. Oswa nan pi bon, an n pran yon prod reyèl, tout done yo. Apre sa, apre nou te devlope li lokalman, nou pral anplis tcheke pou staging.

Sa a pral pèmèt nou retire kèk nan erè yo, sa vle di anpeche yo te sou prod.

Ki pwoblèm yo ye?

  • Pwoblèm nan se ke nou pataje etap sa a ak kòlèg li yo. Ak trè souvan li rive ke ou fè kèk kalite chanjman, bam - epi pa gen okenn done, travay la se desann drenaj la. Staging te milti-terabyte. Epi ou dwe tann yon bon bout tan pou li leve ankò. E nou deside finalize li demen. Se sa, nou gen yon devlopman.
  • Epi, nan kou, nou gen anpil kòlèg k ap travay la, anpil ekip. Epi li dwe fè manyèlman. Lè sa a se konvenyan.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Epi li vo di ke nou gen yon sèl tantativ, yon sèl piki, si nou vle fè kèk chanjman nan baz done a, manyen done yo, chanje estrikti a. Men, si yon bagay ale mal, si te gen yon erè nan migrasyon an, Lè sa a, nou pa pral byen vit woule tounen.

Sa a se pi bon pase apwòch anvan an, men gen toujou yon gwo pwobabilite ke kèk kalite erè pral ale nan pwodiksyon an.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Ki sa ki anpeche nou bay chak pwomotè yon ban tès, yon kopi tout gwosè? Mwen panse ke li klè sa ki vin nan chemen an.

Ki moun ki gen yon baz done ki pi gwo pase yon teraoctet? Plis pase mwatye chanm nan.

Epi li klè ke kenbe machin pou chak pwomotè, lè gen tankou yon gwo pwodiksyon, se trè chè, ak san konte, li pran yon bon bout tan.

Nou gen kliyan ki te reyalize ke li enpòtan anpil pou teste tout chanjman sou kopi tout gwosè, men baz done yo se mwens pase yon teraocte, epi pa gen okenn resous pou kenbe yon banc tès pou chak pwomotè. Se poutèt sa, yo oblije telechaje pil fatra yo lokalman nan machin yo epi teste nan fason sa a. Li pran anpil tan.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Menm si ou fè li andedan enfrastrikti a, Lè sa a, telechaje yon terabyte nan done pou chak èdtan se deja trè bon. Men, yo sèvi ak pil fatra ki lojik, yo telechaje lokalman nan nwaj la. Pou yo, vitès la se apeprè 200 jigokte pou chak èdtan. Epi li toujou pran tan yo vire soti nan pil fatra ki lojik la, woule endis yo, elatriye.

Men, yo sèvi ak apwòch sa a paske li pèmèt yo kenbe prod la serye.

Kisa nou ka fè la a? Ann fè ban tès yo bon mache epi bay chak pwomotè pwòp ban tès yo.

E sa posib.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Ak nan apwòch sa a, lè nou fè klon mens pou chak pwomotè, nou ka pataje li sou yon sèl machin. Pou egzanp, si ou gen yon baz done 10TB epi ou vle bay li bay 10 devlopè, ou pa bezwen gen baz done XNUMX x XNUMXTB. Ou bezwen sèlman yon machin pou fè kopi izole mens pou chak pwomotè lè l sèvi avèk yon machin. Mwen pral di w kouman li fonksyone yon ti kras pita.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Egzanp reyèl:

  • DB - 4,5 terabytes.

  • Nou ka jwenn kopi endepandan nan 30 segonn.

Ou pa bezwen tann yon stand tès epi depann sou ki jan gwo li ye. Ou ka jwenn li an segonn. Li pral konplètman izole anviwònman, men ki pataje done nan mitan tèt yo.

Sa a se gwo. Isit la nou ap pale sou majik ak yon linivè paralèl.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Nan ka nou an, sa ap travay lè l sèvi avèk sistèm OpenZFS la.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

OpenZFS se yon sistèm dosye kopi-sou-ekri ki sipòte snapshots ak klon soti nan bwat la. Li se serye ak évolutive. Li trè fasil pou jere. Li ka literalman deplwaye nan de ekip.

Gen lòt opsyon:

  • lvm,

  • Depo (pa egzanp, Pi Depo).

Laboratwa baz done m ap pale a se modilè. Èske yo ka aplike lè l sèvi avèk opsyon sa yo. Men, pou kounye a, nou te konsantre sou OpenZFS, paske te gen pwoblèm ak LVM espesyalman.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Ki jan li fonksyone? Olye pou nou ranplase done yo chak fwa nou chanje li, nou sove li lè nou tou senpleman make ke nouvo done sa yo soti nan yon nouvo pwen nan tan, yon nouvo snapshot.

Ak nan lavni an, lè nou vle rollback oswa nou vle fè yon nouvo script soti nan kèk vèsyon ki pi gran, nou jis di: "OK, ban nou blòk done sa yo ki make tankou sa a."

Ak itilizatè sa a pral travay ak yon seri done konsa. Li pral piti piti chanje yo, fè pwòp snapshots li.

Epi nou pral branch. Chak devlopè nan ka nou an ap gen opòtinite pou gen pwòp script li edite, epi done yo pataje yo pral pataje ant tout moun.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Pou deplwaye yon sistèm nan kay la, ou bezwen rezoud de pwoblèm:

  • Premye a se sous done yo, kote ou pral pran li. Ou ka mete kanpe replikasyon ak pwodiksyon. Ou ka deja itilize sovgad yo ke ou te configuré, mwen espere. WAL-E, WAL-G oswa Barman. E menm si w ap itilize kèk solisyon Cloud tankou RDS oswa Cloud SQL, Lè sa a, ou ka itilize pil fatra ki lojik. Men, nou toujou konseye w sèvi ak sovgad, paske ak apwòch sa a ou pral tou kenbe estrikti fizik la nan dosye yo, ki pral pèmèt ou yo dwe menm pi pre mezi yo ke ou ta wè nan pwodiksyon yo nan lòd yo trape pwoblèm sa yo ki egziste.

  • Dezyèm lan se kote ou vle òganize laboratwa baz done a. Li ta ka Cloud, li ta ka On-premise. Li enpòtan pou di isit la ke ZFS sipòte konpresyon done. Epi li fè li byen byen.

Imajine ke pou chak script sa yo, tou depann de operasyon yo ke nou fè ak baz la, kèk kalite dev ap grandi. Pou sa, dev ap bezwen espas tou. Men, akòz lefèt ke nou te pran yon baz nan 4,5 terabytes, ZFS pral konprese li nan 3,5 terabytes. Sa a ka varye selon anviwònman yo. Epi nou toujou gen plas pou dev.

Yon sistèm sa yo ka itilize pou diferan ka.

  • Sa yo se devlopè, DBA pou validation rechèch, pou optimize.

  • Sa a ka itilize nan tès QA yo teste yon migrasyon an patikilye anvan nou woule li soti nan prod. Epi nou kapab tou ogmante anviwònman espesyal pou QA ak done reyèl, kote yo ka teste nouvo fonksyonalite. Epi li pral pran segonn olye pou yo tann èdtan, e petèt jou nan kèk lòt ka kote yo pa itilize kopi mens.

  • Ak yon lòt ka. Si konpayi an pa gen yon sistèm analytics mete kanpe, Lè sa a, nou ka izole yon script mens nan baz pwodwi a epi bay li nan demann long oswa endis espesyal ki ka itilize nan analytics.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Avèk apwòch sa a:

  1. Ba pwobabilite erè sou "prod la", paske nou teste tout chanjman yo sou done gwosè konplè.

  2. Nou gen yon kilti tès, paske kounye a ou pa oblije rete tann pou èdtan pou pwòp pozisyon ou.

  3. Epi pa gen okenn baryè, pa gen okenn ap tann ant tès yo. Ou ka aktyèlman ale epi tcheke. Epi li pral pi bon fason sa a pandan n ap akselere devlopman an.

  • Pral gen mwens refactoring. Mwens pinèz pral fini nan prod. Nou pral refactorize yo mwens pita.

  • Nou ka ranvèse chanjman irevokabl. Sa a se pa apwòch estanda a.

  1. Sa a se benefisye paske nou pataje resous yo nan ban tès yo.

Deja bon, men ki lòt bagay ki ka akselere?

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Mèsi a yon sistèm konsa, nou ka redwi anpil papòt pou antre nan tès sa yo.

Koulye a, gen yon sèk visye, lè yon pwomotè, yo nan lòd yo jwenn aksè a reyèl done gwosè, yo dwe vin yon ekspè. Li dwe fè konfyans ak aksè sa yo.

Men, ki jan yo grandi si li pa la. Men, e si w genyen sèlman yon ti seri done tès ki disponib pou ou? Lè sa a, ou pa pral jwenn okenn eksperyans reyèl.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Ki jan yo soti nan sèk sa a? Kòm premye koòdone, pratik pou devlopè nan nenpòt nivo, nou te chwazi bot la Slack. Men, li kapab nenpòt lòt koòdone.

Ki sa li pèmèt ou fè? Ou ka pran yon rechèch espesifik epi voye li nan yon chanèl espesyal pou baz done a. Nou pral otomatikman deplwaye yon script mens an segonn. Ann kouri demann sa a. Nou kolekte mezi ak rekòmandasyon. Ann montre yon vizyalizasyon. Lè sa a, script sa a ap rete pou rechèch sa a ka yon jan kanmenm optimize, ajoute endis, elatriye.

Epi tou Slack ban nou opòtinite pou kolaborasyon soti nan bwat la. Depi sa a se jis yon chanèl, ou ka kòmanse diskite sou demann sa a dwat la nan fil la pou yon demann konsa, ping kòlèg ou yo, DBAs ki andedan konpayi an.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Men, gen, nan kou, pwoblèm. Paske sa a se mond reyèl la, epi nou ap itilize yon sèvè hosting anpil klon nan yon fwa, nou dwe konprese kantite lajan an nan memwa ak CPU pouvwa ki disponib nan klon yo.

Men, pou tès sa yo ka posib, ou bezwen yon jan kanmenm rezoud pwoblèm sa a.

Li klè ke pwen enpòtan an se menm done yo. Men nou deja genyen li. Epi nou vle reyalize menm konfigirasyon an. Epi nou ka bay tankou yon konfigirasyon prèske idantik.

Li ta fre pou gen pyès ki nan konpitè menm jan ak nan pwodiksyon, men li ka diferan.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Ann sonje kijan Postgres travay ak memwa. Nou gen de kachèt. Youn nan sistèm fichye a ak yon postgres natif natal, sa vle di Shared Buffer Cache.

Li enpòtan pou sonje ke Cache Tanpon Pataje a resevwa lajan lè Postgres kòmanse, tou depann de ki gwosè ou presize nan konfigirasyon an.

Epi dezyèm kachèt la itilize tout espas ki disponib.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Men, lè nou fè plizyè klon sou yon machin, li sanble ke nou piti piti ranpli memwa a. Ak nan yon bon fason, Shared Buffer Cache se 25% nan kantite total memwa ki disponib sou machin nan.

Epi li sanble ke si nou pa chanje paramèt sa a, Lè sa a, nou pral kapab kouri sèlman 4 ka sou yon machin, sa vle di 4 nan tout klon mens sa yo. Ak sa a, nan kou, se move, paske nou vle gen anpil plis nan yo.

Men, nan lòt men an, Buffer Cache yo itilize pou egzekite demann pou endèks, se sa ki, plan an depann sou ki jan gwo kachèt nou yo. Men, si nou jis pran paramèt sa a epi redwi li, Lè sa a, plan nou yo ka chanje anpil.

Pou egzanp, si nou gen yon gwo kachèt sou prod, Lè sa a, Postgres pral prefere sèvi ak yon endèks. Men, si ou pa, Lè sa a, pral gen SeqScan. Ak sa ki ta pwen an si plan nou yo pa kowenside?

Men, isit la nou rive nan konklizyon an ke an reyalite plan an nan Postgres pa depann sou gwosè a espesifik espesifye nan tanpon pataje nan plan an, li depann de effective_cache_size la.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Effective_cache_size se estime kantite kachèt ki disponib pou nou, sa vle di sòm kachèt tanpon ak kachèt sistèm dosye. Sa a se mete nan konfigirasyon an. Ak memwa sa a pa atribye ba.

Ak akòz paramèt sa a, nou ka kalite Trick Postgres, li di ke nou aktyèlman gen yon anpil nan done ki disponib, menm si nou pa gen done sa yo. Se konsa, plan yo pral konplètman kowenside ak pwodiksyon an.

Men, sa ka afekte tan an. Epi nou optimize demann pa distribisyon, men li enpòtan ke tan depann de anpil faktè:

  • Sa depann de chay ki aktyèlman sou prod.

  • Sa depann de karakteristik sa yo nan machin nan tèt li.

Ak sa a se yon paramèt endirèk, men an reyalite nou ka optimize egzakteman pa kantite done ke rechèch sa a pral li yo nan lòd yo jwenn rezilta a.

Men, si ou vle distribisyon an yo dwe fèmen nan sa nou pral wè nan prod, Lè sa a, nou bezwen pran pyès ki nan konpitè ki pi sanble ak, pètèt, menm plis pou ke tout klon yo anfòm. Men, sa a se yon konpwomi, sa vle di ou pral jwenn menm plan yo, ou pral wè konbyen done yon rechèch patikilye pral li epi ou yo pral kapab konkli si rechèch sa a bon (oswa migrasyon) oswa move, li toujou bezwen optimize. .

Ann pran yon gade nan ki jan Joe espesyalman optimize.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Ann pran yon demann ki soti nan yon sistèm reyèl. Nan ka sa a, baz done a se 1 terabyte. Epi nou vle konte kantite nouvo post ki te gen plis pase 10 likes.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Nap ekri yon mesaj bay chanèl la, yon klone te deplwaye pou nou. E nou ava vwar ki en tel demann pou konplete dan 2,5 minit. Sa a se premye bagay nou remake.

B Joe ap montre w rekòmandasyon otomatik ki baze sou plan an ak mezi yo.

Nou pral wè ke rechèch la trete twòp done pou jwenn yon kantite relativman ti ranje. Ak kèk kalite endèks espesyalize ki nesesè, depi nou remake ke gen twòp ranje filtre nan rechèch la.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Ann pran yon gade pi pre nan sa ki te pase. Vreman vre, nou wè ke nou te li prèske yon sèl ak yon mwatye gigabyte nan done ki soti nan kachèt dosye a oswa menm soti nan disk. Epi sa a pa bon, paske nou te resevwa sèlman 142 liy.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Epi, li ta sanble, nou gen yon eskanè endèks isit la epi yo ta dwe travay byen vit, men depi nou filtre soti twòp liy (nou te oblije konte yo), demann lan tou dousman te travay deyò.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Lè sa a te rive nan plan an akòz lefèt ke kondisyon yo nan rechèch la ak kondisyon yo nan endèks la pasyèlman pa matche ak.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Ann eseye fè endèks la pi presi epi wè ki jan ekzekisyon rechèch la chanje apre sa.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Kreyasyon endèks la te pran yon bon bout tan, men kounye a nou tcheke rechèch la epi wè ke tan an olye pou yo 2,5 minit se sèlman 156 milisgond, ki se bon ase. Epi nou li sèlman 6 megabyte nan done.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Epi, koulye a nou itilize endèks sèlman eskanè.

Yon lòt istwa enpòtan se ke nou vle prezante plan an nan kèk fason ki pi konprann. Nou te aplike vizyalizasyon lè l sèvi avèk Flame Graphs.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Sa a se yon demann diferan, pi entans. Epi nou bati Flame Graphs dapre de paramèt: sa a se kantite done ke yon ne patikilye konte nan plan an ak distribisyon, sa vle di tan an ekzekisyon nan ne la.

Isit la nou ka konpare nœuds espesifik youn ak lòt. Epi li pral klè kilès nan yo pran plis oswa mwens, ki se nòmalman difisil fè nan lòt metòd rann.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Natirèlman, tout moun konnen eksplike.depesz.com. Yon bon karakteristik nan vizyalizasyon sa a se ke nou sove plan tèks la epi tou mete kèk paramèt debaz nan yon tab pou nou ka sòt.

Ak devlopè ki poko fouye nan sijè sa a tou itilize eksplike.depesz.com, paske li pi fasil pou yo konnen ki mezi enpòtan ak ki pa.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Gen yon nouvo apwòch nan vizyalizasyon - sa a se eksplike.dalibo.com. Yo fè yon vizyalizasyon pye bwa, men li trè difisil pou konpare nœuds youn ak lòt. Isit la ou ka konprann estrikti a byen, sepandan, si gen yon demann gwo, Lè sa a, w ap bezwen woulo liv ale ak soti, men tou, yon opsyon.

kolaborasyon

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Epi, jan mwen te di, Slack ba nou opòtinite pou kolabore. Pou egzanp, si nou rankontre yon rechèch konplèks ki pa klè ki jan yo optimize, nou ka klarifye pwoblèm sa a ak kòlèg nou yo nan yon fil nan Slack.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Li sanble nou ke li enpòtan pou fè tès sou done gwosè konplè. Pou fè sa, nou te fè zouti Mizajou Database Lab, ki disponib nan sous louvri. Ou ka itilize Joe bot la tou. Ou ka pran li kounye a epi aplike li nan plas ou. Tout gid yo disponib la.

Li enpòtan tou sonje ke solisyon an li menm se pa revolisyonè, paske gen Delphix, men li se yon solisyon antrepriz. Li konplètman fèmen, li trè chè. Nou espesyalman espesyalize nan Postgres. Sa yo se tout pwodwi sous louvri. Vin jwenn nou!

Sa a se kote mwen fini. Mèsi!

Kesyon ou yo

Bonjou! Mèsi pou rapò a! Trè enteresan, sitou pou mwen, paske mwen te rezoud sou menm pwoblèm nan kèk tan de sa. E alor mon annan en kantite kestyon. Èspere ke mwen pral jwenn omwen yon pati nan li.

Mwen mande ki jan ou kalkile plas la pou anviwònman sa a? Teknoloji a vle di ke nan sèten sikonstans, klon ou yo ka grandi nan gwosè a maksimòm. Apeprè pale, si ou gen yon baz done dis teraocte ak 10 klonaj, Lè sa a, li fasil pou simulation yon sitiyasyon kote chak script peze 10 done inik. Ki jan ou fè kalkile kote sa a, sa vle di, delta sa a ke ou te pale sou, kote klon sa yo pral viv?

Bon kesyon. Li enpòtan pou kenbe tras de klon espesifik isit la. Men, si yon script gen kèk chanjman twò gwo, li kòmanse grandi, Lè sa a, nou ka premye bay itilizatè a yon avètisman sou li, oswa imedyatman sispann script sa a pou nou pa gen yon sitiyasyon fail.

Wi, mwen gen yon kesyon enbrike. Sa vle di, ki jan ou asire sik lavi a nan modil sa yo? Nou gen pwoblèm sa a ak yon istwa antye separe. Ki jan sa rive?

Gen kèk ttl pou chak script. Fondamantalman, nou gen yon ttl fiks.

E si se pa yon sekrè?

1 èdtan, sa vle di san fè anyen konsa - 1 èdtan. Si li pa itilize, Lè sa a, nou bang li. Men, pa gen okenn sipriz isit la, depi nou ka ogmante script la nan segonn. Men, si ou bezwen li ankò, tanpri.

Mwen enterese tou nan chwa teknoloji yo, paske, pou egzanp, nou itilize plizyè metòd an paralèl pou yon rezon oswa yon lòt. Poukisa ZFS? Poukisa ou pa t itilize LVM? Ou mansyone ke te gen pwoblèm ak LVM. Ki pwoblèm yo te genyen? Nan opinyon mwen, opsyon ki pi optimal se ak depo, an tèm de pèfòmans.

Ki pwoblèm prensipal la ak ZFS? Lefèt ke ou dwe kouri sou menm lame a, sa vle di tout ka ap viv nan menm OS la. Ak nan ka a nan depo, ou ka konekte ekipman diferan. Ak boutèy la se sèlman blòk sa yo ki sou sistèm nan depo. Ak kesyon an nan chwa nan teknoloji se enteresan. Poukisa pa LVM?

Espesyalman, nou ka diskite sou LVM nan reyinyon. Konsènan depo - li jis chè. Nou ka aplike sistèm ZFS nenpòt kote. Ou ka deplwaye li sou machin ou. Ou ka tou senpleman telechaje repozitwa a epi deplwaye li. ZFS enstale prèske tout kote si nou ap pale de Linux. Sa vle di, nou jwenn yon solisyon trè fleksib. Ak soti nan bwat la, ZFS bay anpil. Ou ka telechaje done kòm kantite ou renmen, konekte yon gwo kantite disk, gen snapshots. Epi, jan mwen te di, li fasil pou administre. Sa vle di, li sanble trè plezan pou itilize. Li teste, li gen anpil ane. Li gen yon kominote trè gwo ki ap grandi. ZFS se yon solisyon trè serye.

Nikolai Samokhvalov: Èske mwen ka fè kòmantè pi lwen? Non mwen se Nikolay, nou travay ansanm ak Anatoly. Mwen dakò ke depo se gwo. Ak kèk nan kliyan nou yo gen Pi Depo elatriye.

Anatoly kòrèkteman te note ke nou yo konsantre sou modilarite. Ak nan lavni an, ou ka aplike yon sèl koòdone - pran yon snapshot, fè yon script, detwi script la. Tout bagay fasil. Ak depo se fre, si li se.

Men, ZFS disponib pou tout moun. DelPhix se deja ase, yo gen 300 kliyan. Nan sa yo, Fortune 100 gen 50 kliyan, sa vle di yo vize NASA, elatriye Li lè pou tout moun jwenn teknoloji sa a. Epi se poutèt sa nou gen yon Nwayo sous louvri. Nou gen yon pati koòdone ki pa sous louvri. Sa a se platfòm la ke nou pral montre. Men, nou vle li aksesib a tout moun. Nou vle fè yon revolisyon pou tout teste yo sispann devine sou laptops. Nou dwe ekri SELECT epi imedyatman wè ke li dousman. Sispann tann DBA a di w sou sa. Isit la se objektif prensipal la. E mwen panse ke nou tout pral rive nan sa a. Epi nou fè bagay sa a pou tout moun genyen. Se poutèt sa ZFS, paske li pral disponib toupatou. Mèsi a kominote a pou rezoud pwoblèm ak pou li gen yon lisans sous louvri, elatriye.*

Bonjou! Mèsi pou rapò a! Non mwen se Maxim. Nou te fè fas ak menm pwoblèm yo. Yo te deside poukont yo. Ki jan ou pataje resous ant klon sa yo? Chak klonaj ka fè pwòp bagay li a nenpòt ki lè: youn teste yon bagay, yon lòt yon lòt, yon moun bati yon endèks, yon moun gen yon travay lou. Men, si ou ka toujou divize pa CPU, Lè sa a, pa IO, ki jan ou divize? Sa a se premye kesyon an.

Ak dezyèm kesyon an se sou diferans ki genyen nan kanpe yo. Ann di mwen gen ZFS isit la ak tout bagay se fre, men kliyan an sou prod pa gen ZFS, men ext4, pou egzanp. Kouman nan ka sa a?

Kesyon yo trè bon. Mwen te mansyone pwoblèm sa a yon ti jan ak lefèt ke nou pataje resous yo. Ak solisyon an se sa a. Imajine ke w ap teste sou sèn. Ou kapab tou gen yon sitiyasyon konsa an menm tan ke yon moun bay yon sèl chaj, yon lòt moun. Epi kòm yon rezilta, ou wè mezi enkonpreyansib. Menm pwoblèm lan kapab ak prod. Lè ou vle tcheke kèk demann epi ou wè ke gen kèk pwoblèm ak li - li travay dousman, Lè sa a, an reyalite pwoblèm nan pa t 'nan demann lan, men nan lefèt ke gen kèk kalite chaj paralèl.

Se poutèt sa, li enpòtan isit la konsantre sou ki plan an pral ye, ki etap nou pral pran nan plan an ak konbyen done nou pral ranmase pou sa a. Lefèt ke disk nou yo, pou egzanp, yo pral chaje ak yon bagay, li pral espesyalman afekte distribisyon an. Men, nou ka estime konbyen demann sa a chaje pa kantite done. Li pa tèlman enpòtan ke an menm tan an pral gen kèk kalite ekzekisyon.

Mwen gen de kesyon. Sa a se bagay trè fre. Èske te gen ka kote done pwodiksyon yo enpòtan, tankou nimewo kat kredi? Èske gen yon bagay deja pare oswa èske se yon travay separe? Ak dezyèm kesyon an - èske gen yon bagay tankou sa a pou MySQL?

Konsènan done yo. Nou pral fè obfuscation jiskaske nou fè. Men, si ou deplwaye egzakteman Joe, si ou pa bay aksè a devlopè, Lè sa a, pa gen aksè a done yo. Poukisa? Paske Joe pa montre done. Li sèlman montre mesures, plan Et sa a. Sa a te fè espre, paske sa a se youn nan kondisyon kliyan nou an. Yo te vle kapab optimize san yo pa bay tout moun aksè.

Konsènan MySQL. Sistèm sa a ka itilize pou nenpòt bagay ki estoke eta sou disk. Epi depi nou ap fè Postgres, kounye a nou ap fè tout automatisation pou Postgres an premye. Nou vle otomatize jwenn done ki sòti nan yon backup. Nou ap konfigirasyon Postgres kòrèkteman. Nou konnen ki jan fè plan matche, elatriye.

Men, depi sistèm lan se extensible, li kapab tou itilize pou MySQL. E gen egzanp sa yo. Yandex gen yon bagay ki sanble, men yo pa pibliye li nenpòt kote. Yo sèvi ak li andedan Yandex.Metrica. Epi gen jis yon istwa sou MySQL. Men, teknoloji yo se menm bagay la, ZFS.

Mèsi pou rapò a! Mwen tou gen yon koup de kesyon. Ou mansyone ke klonaj ka itilize pou analytics, pou egzanp bati endis adisyonèl la. Èske ou ka di yon ti kras plis sou ki jan li fonksyone?

Apre sa, mwen pral imedyatman poze dezyèm kesyon an sou resanblans nan kanpe yo, resanblans nan plan yo. Plan an tou depann de estatistik yo kolekte pa Postgres. Ki jan ou rezoud pwoblèm sa a?

Dapre analytics yo, pa gen okenn ka espesifik, paske nou poko itilize li, men gen yon opòtinite konsa. Si nou ap pale de endèks, Lè sa a, imajine ke yon rechèch ap kouri dèyè yon tab ak dè santèn de milyon dosye ak yon kolòn ki anjeneral pa endis nan prod. Epi nou vle kalkile kèk done la. Si demann sa a yo voye bay prod, Lè sa a, gen yon posibilite ke li pral senp sou prod, paske demann lan pral trete la pou yon minit.

Oke, ann fè yon script mens ki pa terib yo sispann pou kèk minit. Ak nan lòd fè li pi konfòtab pou li analiz yo, nou pral ajoute endis pou kolòn sa yo nan ki nou enterese nan done yo.

Endèks la pral kreye chak fwa?

Ou ka fè li pou nou manyen done yo, fè snapshots, Lè sa a, nou pral refè soti nan snapshot sa a ak kondwi nouvo demann. Sa vle di, ou ka fè li pou ou ka ogmante nouvo klon ak endis deja apoze.

Kòm pou kesyon an sou estatistik, si nou retabli soti nan yon backup, si nou fè replikasyon, Lè sa a, estatistik nou yo pral egzakteman menm bagay la. Paske nou gen tout estrikti done fizik la, se sa ki, nou pral pote done yo jan li ye a ak tout estatistik yo tou.

Isit la se yon lòt pwoblèm. Si ou itilize yon solisyon nwaj, Lè sa a, sèlman pil fatra ki lojik ki disponib la, paske Google, Amazon pa pèmèt ou pran yon kopi fizik. Pral gen yon pwoblèm.

Mèsi pou rapò a. Te gen de bon kesyon isit la sou MySQL ak pataje resous yo. Men, an reyalite, li tout vini desann nan lefèt ke sa a se pa yon sijè nan DBMS espesifik, men nan sistèm nan dosye kòm yon antye. Epi, kòmsadwa, pwoblèm yo nan pataje resous yo ta dwe tou rezoud soti nan la, pa nan fen a ke li se Postgres, men nan sistèm nan dosye, nan sèvè a, an egzanp.

Kesyon mwen an se yon ti kras diferan. Li pi pre baz done milti-kouch, kote gen plizyè kouch. Pou egzanp, nou mete kanpe yon aktyalizasyon imaj dis-terabyte, nou ap repwodui. Epi nou espesyalman itilize solisyon sa a pou baz done. Replikasyon an ap fèt, done yo ap mete ajou. Genyen 100 anplwaye k ap travay nan paralèl isit la, ki toujou ap lanse piki sa yo diferan. Kisa pou fe? Ki jan yo asire w ke pa gen okenn konfli, ke yo te lanse yon sèl, ak Lè sa a, sistèm nan dosye chanje, ak foto sa yo tout ale?

Yo p ap ale paske se konsa ZFS travay. Nou ka kenbe separeman nan yon sèl fil chanjman nan sistèm dosye ki vini akòz replikasyon. Epi kenbe klon yo ke devlopè yo itilize sou ansyen vèsyon done yo. Epi li travay pou nou, tout bagay se nan lòd ak sa a.

Li sanble ke aktyalizasyon a pral pran plas kòm yon kouch adisyonèl, ak tout nouvo foto yo pral ale deja, ki baze sou kouch sa a, dwa?

Soti nan kouch anvan yo ki te soti nan replikasyon anvan yo.

Kouch anvan yo pral tonbe, men yo pral refere a ansyen kouch la, epi yo pral pran nouvo imaj nan dènye kouch ki te resevwa nan aktyalizasyon a?

An jeneral, wi.

Lè sa a, kòm yon konsekans nou pral gen jiska yon fig frans nan kouch. Ak sou tan yo pral bezwen yo dwe konprese?

Wi tout bagay kòrèk. Gen kèk fenèt. Nou kenbe snapshots chak semèn. Sa depann de ki resous ou genyen. Si ou gen kapasite nan magazen yon anpil nan done, ou ka estoke snapshots pou yon tan long. Yo pap ale pou kont yo. Pa pral gen okenn koripsyon done. Si snapshots yo demode, jan li sanble nou, sa vle di li depann sou politik la nan konpayi an, Lè sa a, nou ka tou senpleman efase yo epi libere espas.

Bonjou, mèsi pou rapò a! Kesyon sou Joe. Ou te di ke kliyan an pa t 'vle bay tout moun aksè a done yo. Fè egzateman pale, si yon moun gen rezilta a nan Eksplike Analize, Lè sa a, li ka fè jouda done yo.

Se konsa. Pa ekzanp, nou ka ekri: "SELECT FROM WHERE imel = to that". Sa vle di, nou pa pral wè done yo tèt li, men nou ka wè kèk siy endirèk. Sa a dwe konprann. Men, nan lòt men an, li nan tout la. Nou annan en log audit, nou annan kontrol lo lezot koleg ki osi vwar sa bann developers pe fer. Men, si yon moun ap eseye fè sa, Lè sa a, sèvis sekirite a ap vin jwenn yo epi travay sou pwoblèm sa a.

Bon apremidi Mèsi pou rapò a! Mwen gen yon kesyon kout. Si konpayi an pa sèvi ak Slack, èske gen nenpòt obligatwa pou li kounye a, oswa èske li posib pou devlopè yo deplwaye ka yo nan lòd yo konekte yon aplikasyon tès ak baz done yo?

Koulye a, gen yon lyen nan Slack, sa vle di pa gen okenn lòt mesaje, men mwen reyèlman vle fè sipò pou lòt mesaje tou. Kisa ou ka fè? Ou ka deplwaye DB Lab san Joe, ale avèk èd REST API oswa avèk èd platfòm nou an epi kreye klonaj epi konekte ak PSQL. Men, sa ka fèt si w pare pou bay devlopè w yo aksè a done yo, paske p ap gen okenn ekran ankò.

Mwen pa bezwen kouch sa a, men mwen bezwen yon opòtinite konsa.

Lè sa a, wi, li ka fè.

Sous: www.habr.com

Add nouvo kòmantè