Kontaktoni mbështetjen

Përgjigjemi me email. Zakonisht brenda dy ditësh.

Për mbrojtje nga abuzimi, Google reCAPTCHA kontrollon këtë dërgesë. Gjatë kësaj, të dhënat i transmetohen kompanisë Google. Skripti ngarkohet vetëm kur hapet ky formular.

← Të gjitha postimet

Ku gjendet vërtet skema e bazës së të dhënave

Për përmbajtjen dhe kontrollin e saj

Në këtë artikull

Gjithçka që bën ky shërbim është në kontrollin e versioneve. Të paktën kodi. Baza e të dhënave ku punon ka 32 tabela dhe 15 nuk kanë përkufizim askund në depo — as CREATE TABLE, as skedar skeme, asgjë. Një eksport i rikthen të 32 me strukturën e paprekur; ajo që nuk mban depoja është një kopje e dytë, e pavarur e asaj strukture.

17 tabela të përkufizuara 15 të papërkufizuara askund 21 indekse të krijuara nga kodi 11 vetëm në bazën e të dhënave 32 tabela, 32 indekse dytësore, 0 skedarë skeme

Këto shifra vijnë nga krahasimi i bazës aktive me 736 skedarë dhe 5 671 710 shenja të depos. Nuk janë vlerësim.

Si humbet gjysma e skemës

Nuk është pakujdesi dhe pikërisht prandaj ia vlen të shkruhet. Çdo hap më vete ishte i arsyeshëm.

Tabelat e krijuara përpara kodit aktual nuk u shkruan askund, sepse atëherë thjesht ekzistonin. Tabelat e shtuara më pas erdhën me skripte migrimi dhe ato skripte janë në depo — prej tyre vijnë 17 përkufizimet. Kolonat e mëvonshme u shtuan me një komandë njëreshtëshe ALTER TABLE të shkruar në terminal, sepse ishte më shpejt se një skript për një ndryshim që merrte një sekondë.

Indekset janë rasti më i keq. Një indeks shtohet kur diçka është e ngadaltë, në çastin kur është e ngadaltë, dhe e zgjidh problemin menjëherë. Nuk mbetet skedar, asgjë për t'u shqyrtuar, asgjë që dështon kur harrohet. Njëmbëdhjetë nga tridhjetë e dy indekset dytësore këtu ekzistojnë pikërisht për këtë arsye dhe nuk janë regjistruar askund.

Tabela që mban vetë numëruesit, me 166 438 rreshta, është mes pesëmbëdhjetë tabelave pa përkufizim në depo.

Çfarë prishet vërtet

Jo shumë, deri në një çast të caktuar: kur baza e të dhënave rikthehet nga një eksport.

Eksporti mban strukturën, prandaj rikthimi i drejtpërdrejtë është në rregull. Rreziku është çdo rrugë që rindërton tabelën në vend që ta rikthejë — kalimi në makinë tjetër, importimi i tabelave të zgjedhura, rikrijimi i njërës nga një skript. Të dhënat kthehen, indekset në heshtje jo. Asgjë nuk dështon. Kërkesat japin përgjigje të sakta. Thjesht marrin më shumë kohë dhe shkaku është i padukshëm, sepse e vetmja dëshmi e indeksit është makina që nuk e ka më.

Ky është lloji i dështimit që ia vlen të emërtohet: indeksi që mungon nuk prodhon gabim, prodhon përgjigje të saktë më të ngadaltë. Nuk ka test për të, sepse testet kalojnë.

Çfarë bëjmë ndërkohë

Skema sot nuk është në depo dhe ky është përshkrimi i saktë i gjendjes. Masa ekzistuese është më e ngushtë se zgjidhja e plotë dhe mbulon rastin që kushton realisht:

Një eksport përpara çdo veprimi shkatërrues, i ruajtur jashtë rrënjës së uebit. Një rikthim i kryer të paktën një herë, jo thjesht i supozuar. Dhe një listë e shkurtër, e kontrolluar pas çdo rikthimi, me indekset që dihet se ekzistojnë vetëm në bazën aktive — sepse makina mund të pyetet çfarë indeksesh ka dhe përgjigjja të krahasohet me herën e kaluar.

Versioni i përgjithshëm vlen për më shumë se bazat e të dhënave. Nëse një pjesë e sistemit ekziston vetëm në sistemin aktiv, nuk ka kopje të dytë. Pyetja që ia vlen për çdo pjesë infrastrukture nuk është nëse ka kopje rezervë, por çfarë nuk mund të rindërtohet nga depoja nëse makina zhduket. Këtu përgjigjja është pesëmbëdhjetë tabela dhe njëmbëdhjetë indekse; u desh një pasdite për ta përcaktuar dhe tani është listë, jo e panjohur.

Përditësim: shtator 2026

Pesë ditë pas botimit të këtij postimi, dosja e punës u regjistrua në një commit: 26 skedarë dhe 4 058 rreshta, mes tyre njëmbëdhjetë skripte migrimi të shkruara midis 28 gusht dhe 1 shtator, që deri atëherë ekzistonin vetëm në makinën aktive. Kjo ishte gjysma e lehtë — kod i shkruar, por i paregjistruar.

Matja u përsërit më 1 shtator 2026 në të njëjtën mënyrë: baza aktive kundrejt gjithçkaje që gjurmon git.

Tabela4630 me një CREATE TABLE në depo, 16 pa të
Indekse dytësore4332 të krijuara nga kodi në depo, 11 vetëm në bazën aktive
Skripte migrimi109në kontrollin e versioneve
30 tabela të përkufizuara 16 të papërkufizuara askund 32 indekse me skedar 11 vetëm në bazën e të dhënave 46 tabela, 43 indekse dytësore, 0 skedarë skeme

Numri i rëndësishëm nuk ndryshoi. Më 27 gusht, njëmbëdhjetë indekse dytësore ekzistonin vetëm në bazën aktive. Më 1 shtator janë ende njëmbëdhjetë. Ndërkohë u shtuan njëmbëdhjetë të tjerë dhe secili erdhi me skript migrimi: zakoni ndryshoi, borxhi jo.

Të njëmbëdhjetë indekset janë mbi pesë tabela — numëruesit, gjuhët, referuesit, listën e përjashtimit dhe regjistrin e ngjarjeve. Të pesta janë më të hershme se kodi aktual, pikërisht prandaj asgjë nuk u shkrua për to. Shkrimi i një skedari tani do të thoshte rindërtim nga serveri aktiv i asaj që u shkrua në terminal vite më parë.

Prandaj gjendja e gushtit mbetet. Skema ende nuk është në depo dhe një rikthim që rindërton tabelën në vend që ta rikthejë ende do të humbiste njëmbëdhjetë indekse pa fjalë. Ndryshimi është më i ngushtë: gjithçka e shtuar që atëherë ka lënë skedar.

Reklamë