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.
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.
| Tabela | 46 | 30 me një CREATE TABLE në depo, 16 pa të |
| Indekse dytësore | 43 | 32 të krijuara nga kodi në depo, 11 vetëm në bazën aktive |
| Skripte migrimi | 109 | në kontrollin e versioneve |
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.