konto usunięte
Temat: Projekt bazy danych.
Adrian O.:
Opisujesz typowe problemy wynikające z projektowania typu "database centric" i trzymania jakiejs części logiki w bazie, gdzie sporo obliczeń wykonuje sama kwerenda. A cierpi potem m.in. właśnie DBA.
Nie, Weź chociażby zmianę dwóch kolumn na jedną. Nieważne dlaczego, bo programista miał zły dzień i tak chce.
Przed zmianą było to: table a (x text, y text), a po zmianie ma być: table a (z text), gdzie dane to z = x || " " || y.
Zrobienie tego jednym updatem grozi ładnym lockowaniem całej tabeli, stara aplikacja nie pójdzie na nowej strukturze, nowa nie pójdzie na starej. Można zatem zatrzymać program, zaktualizować bazę, odpalić nowy program. Pytanie tylko ile czasu to zajmie. Jak wrzucałem SQLa, który był wynikiem półrocznej pracy programistów i miał ok. 40 tys. linii, to miało to zająć dwa tygodnie.
Innym rozwiązaniem jest np. to, że można dodać kolumnę (dobrze napisana stara aplikacja pójdzie), napisać trigger aktualizujący kolumnę z, oraz w tle, przy działąjącej aplikacji, kopiować dane wiersz po wierszu. Sam upgrade aplikacji może oznaczać skasowanie kolumn x i y, albo też i niekasowanie ich na razie wcale.
Nie ma tu żadnej logiki i wykonywania obliczeń w bazie, a problem jest. Ot, po prostu programista miał chęć połączenia kolumn.