Obrati se podršci

Odgovaramo e-poštom, obično u roku od dva dana.

Google reCAPTCHA provjerava ovu prijavu radi zaštite od zlouporabe; podaci se šalju tvrtki Google. Skripta se učitava tek kada se otvori ovaj obrazac.

← Sve objave

Gdje se zapravo nalazi shema baze podataka

O sadržaju i njegovoj provjeri

U ovom članku

Sve što ova usluga radi nalazi se u sustavu za upravljanje verzijama. Kod, u svakom slučaju. Baza podataka na kojoj radi ima 32 tablice, a 15 od njih nema definiciju nigdje u repozitoriju — nema CREATE TABLE, nema datoteke sheme, ničega. Izvoz vraća sve 32 s netaknutom strukturom; repozitorij nema drugu, neovisnu kopiju te strukture.

17 definiranih tablica 15 bez definicije 21 indeks izrađen kodom 11 samo u bazi podataka 32 tablice, 32 sekundarna indeksa, 0 datoteka sheme

Te brojke dolaze iz usporedbe aktivne baze podataka sa 736 datoteka i 5.671.710 znakova repozitorija. Nisu procjena.

Kako nestane pola sheme

Nije riječ o nemaru i zato to vrijedi zapisati. Svaki pojedini korak bio je razuman.

Tablice izrađene prije nego što je postojao aktualni kod nikada nisu zapisane jer su tada jednostavno bile ondje. Tablice dodane poslije stigle su kroz migracijske skripte, a te skripte jesu u repozitoriju — odatle dolazi 17 definicija. Naknadno dodani stupci dodani su jednorednom naredbom ALTER TABLE upisanom u naredbeni redak jer je upisivanje bilo brže od pisanja skripte za promjenu koja je trajala sekundu.

Indeksi su najgori slučaj. Indeks se dodaje kada je nešto sporo, u trenutku kad je sporo, i odmah rješava problem. Ne ostaje nikakav artefakt, ništa za pregled, ništa što zakaže kada se zaboravi. Jedanaest od trideset dva sekundarna indeksa ovdje postoji upravo iz tog razloga i nigdje nisu zabilježeni.

Tablica koja čuva same brojače, njih 166.438 redaka, među petnaest je bez definicije u repozitoriju.

Što se zapravo kvari

Ne mnogo, do jednog određenog trenutka: vraćanja baze podataka iz izvoza.

Izvoz nosi strukturu, pa je izravno vraćanje u redu. Opasan je svaki put koji ponovno gradi tablicu umjesto da je vraća — premještanje na drugi stroj, uvoz odabranih tablica, ponovno stvaranje jedne skriptom. Podaci se vraćaju, a indeksi neprimjetno ne. Ništa ne zakaže. Upiti vraćaju točne odgovore. Samo traju dulje, a uzrok je nevidljiv jer je jedini zapis o tome kakav je indeks bio stroj koji ga više nema.

Takav kvar vrijedi imenovati: nedostajući indeks ne stvara pogrešku, nego sporiji točan odgovor. Za to nema testa jer testovi prolaze.

Što u međuvremenu poduzimamo

Shema danas nije u repozitoriju i to je točan opis stanja. Postojeće mjere uže su od potpunog popravka i pokrivaju slučaj koji stvarno nešto košta:

Izvoz prije svega destruktivnog, čuvan izvan korijenskog web-direktorija. Vraćanje koje je barem jednom doista provedeno, a ne pretpostavljeno. I kratak popis indeksa za koje se zna da postoje samo u aktivnoj bazi podataka, provjeren nakon svakog vraćanja — jer se stroj može pitati koje indekse ima i odgovor usporediti s prošlim takvim upitom.

Opća verzija vrijedi za više od baza podataka. Ako dio sustava postoji samo u aktivnom sustavu, nema njegove druge kopije. Pitanje koje vrijedi postaviti o bilo kojem dijelu infrastrukture nije ima li sigurnosnu kopiju, nego što se ne bi moglo ponovno izgraditi iz repozitorija kada bi stroj nestao. Ovdje je odgovor petnaest tablica i jedanaest indeksa, trebalo je poslijepodne da se utvrdi i to je popis umjesto nepoznanice.

Ažuriranje: rujan 2026.

Pet dana nakon objave radni je direktorij spremljen u repozitorij: 26 datoteka i 4.058 redaka, među njima jedanaest migracijskih skripti napisanih između 28. kolovoza i 1. rujna koje su dotad postojale samo na aktivnom stroju. To je bila laka polovica — kod koji je bio napisan, ali nikad zabilježen.

Mjerenje je ponovljeno 1. rujna 2026. na isti način: aktivna baza podataka prema svemu što git prati.

Tablice4630 s naredbom CREATE TABLE u repozitoriju, 16 bez nje
Sekundarni indeksi4332 izrađena kodom iz repozitorija, 11 samo u aktivnoj bazi podataka
Migracijske skripte109u sustavu za upravljanje verzijama
30 definiranih tablica 16 bez definicije 32 indeksa s datotekom 11 samo u bazi podataka 46 tablica, 43 sekundarna indeksa, 0 datoteka sheme

Važna se brojka nije pomaknula. Dana 27. kolovoza jedanaest sekundarnih indeksa nije postojalo nigdje osim u aktivnoj bazi podataka. Dana 1. rujna i dalje ih je jedanaest. U međuvremenu je dodano još jedanaest indeksa i svaki je stigao s migracijskom skriptom: navika se promijenila, dug nije.

Tih jedanaest nalazi se na pet tablica — brojači, jezici, upućujuće stranice, popis izuzetaka i zapisnik događaja. Svih pet prethodi aktualnom kodu, upravo zato za njih nikada ništa nije zapisano. Pisanje datoteke sada bi značilo rekonstruirati iz aktivnog poslužitelja ono što je prije mnogo godina upisano u naredbeni redak.

Zato stanje iz kolovoza ostaje. Shema još nije u repozitoriju, a vraćanje koje ponovno gradi tablicu umjesto da je vraća i dalje bi bez riječi izostavilo jedanaest indeksa. Promjena je uža: sve što je dodano poslije ostavilo je datoteku.

Oglas