Szybko czas leci i od ostatniego wpisu minął prawie kwartał. Nawet nie wiem kiedy. W poprzednim wpisie marudziłem na FireBirda – pseudo bazę danych. Ciekawą polemikę podjął Gutek w swoim wpisie. Nie mogę się zgodzić jednak z
takie rzeczy mają prawo się dziać, w końcu, i tak mamy dostęp do naprawdę całkiem spoko bazy danych. A co w przypadku rzeczy które są „prawie” darmowe?
FireBird jest darmowy jednak nie do końca. Wymaga on pracy developera a ta kosztuje realne pieniądze. Zresztą:
nazywam „prawie” darmowe rzeczy, które są darmowe do ściągnięcia i nawet na siłę da się w nich za darmo programować, ale nie jest to już takie proste
No właśnie, praca z FireBirdem prosta nie jest co pokazałMichał Jawulski pokazując mi jak ustawić transakcje, żeby można było zrobić rename tabeli – sorry nie rename bo tego do tej pory nie wiem jak zrobić – delete i recreate. Nie wspominając o 1=0 – ciągle mnie to zadziwia. To co mnie jednak najbardziej zadziwia to:
Spójność danych
Okazuje się, że w FireBirdzie można w dla kolumy powiedzmy X która zawiera kilka nuli to tu to tam, dodać constraint not null. FireBird nie powie słowa. Ot doda not null constraint dla kolumny. Wszystko pięknie gra bo już nie wrzucimy nowego rekordu z nullem w kolumnie X i nikomu zupełnie nie przeszkadza, że w not null jest jednak null (w starych danych). WOW ale najlepsze jest jak się zrobić backup – bo się zrobi. Tyle tylko, że już restore nie zadziała (podobno bo nie sprawdzałem osobiście – jak ktoś potrafi jednak użyć takiego backupa to proszę przemówić).
Złośliwy programista
No właśnie, co jeśli budując program w jakimś defaultowym słowniku programista niby przypadkowo, niby złośliwie, ot tak, wrzuci jakiś jeden null a potem doda not null i taką bazę będzie redystrybuował ze swoją aplikacją? Baza będzie nierestorowalna, więc w sytuacji ekstremalnej, gdzie admin w swojej niekompetencji nigdy nie sprawdzi czy restore działa, pewnego dnia obudzi się z zepsutą bazą i bez backupów (które mógł by użyć)….
… dlatego FireBird w mojej ocenie to pseudo baza, której powinno się unikać jak się da.