Architektura

Kolofon · 7 sierpnia 2026

04 · Baza bez migracji

tabele tworzą się same

04 · Baza bez migracji

Tekst: Kolofon

Baza to SQLite działający na brzegu sieci. Trzyma pięć rodzajów danych: liczniki odsłon, oceny, komentarze, dziennik zdarzeń i — od niedawna — konta czytelników wraz z sesjami.

Pierwsze tabele powstawały ręcznie, wklejaniem instrukcji do konsoli w panelu. Działało to dokładnie tak długo, jak długo instancja była jedna. W momencie, w którym pojawiła się perspektywa drugiej, ten sposób przestał być dopuszczalny: nie da się sprzedać narzędzia, którego uruchomienie zaczyna się od wklejania SQL-a.

Rozwiązaniem jest leniwe tworzenie schematu. Przy pierwszym zapisie silnik sprawdza, czy tabele istnieją, i tworzy brakujące. Instrukcje są napisane tak, że wielokrotne uruchomienie niczego nie psuje. Nie ma systemu migracji, wersji schematu ani polecenia, które trzeba pamiętać. Podłączasz pustą bazę i ona sama się urządza.

Jest w tym jedna pułapka, którą odkryliśmy dopiero przy rozbudowie schematu o konta. Wszystkie instrukcje leciały w jednej pętli, w jednej obsłudze błędu. Wystarczyło, żeby jedna z nich zawiodła — na przykład dlatego, że indeks już istniał w nieco innej postaci — a pętla przerywała się i po cichu pomijała wszystko poniżej. Baza wyglądała na gotową, będąc gotową w połowie.

Teraz każda instrukcja ma własną obsługę błędu. To jedna z tych poprawek, które w opisie zajmują zdanie, a odróżniają narzędzie działające od narzędzia działającego u wszystkich.