[LUGOS-PROG] MySQL vs. Postgresql

Anze anze at volja.net
Sun Nov 9 12:34:51 CET 2003


Zivjo!

> > Ce se zelis omejiti na eno samo bazo, izvoli - in ja, uporabljaj foreign
> > key-e, transakcije, vse lepe stvari, ki ste se jih ucili pri osnovah
> > relacijskih baz.
>
> Se opravičujem, če se narobe razumel, ampak tole si napisal, kot da so
> zgoraj naštete funkcije tam samo za to, da lahko na faksu sestavijo
> kompleten izpit; če že niso popolna neumnost.
> Upam, da nisi eden izmed tistih, ki mislijo, da so enostavne SELECT,
> INSERT, UPDATE in DELETE vse funkcije, ki bi jih kdorkoli, kjerkoli,
> kadarkoli lahko potreboval.

Ne, sploh ne. Je pa za veliko aplikacij to popolnoma dovolj - in v tem 
primeru moras resno premisliti, ali se splaca zrtvovati prenosljivost za 
preostale funkcije. Se posebej v primeru web aplikacij in gostovanja pri 
ISPjih.

> > Ampak ko bos selil aplikacijo na drugo bazo, bos naJ... (in
> > to z velikim J) Ampak ti ocitno teh izkusenj se nimas. Blagor enim.
>
> Zakaj bi moral pri selitvi aplikacije naj****? Težave pri portanju med
> bazami so skoraj vedno posledica slabega načrtovanja aplikacije, ne pa
> posebnosti baz.

Odvisno - ce razvijas na PostgreSQLu in npr. uporabljas subquerije, bos 
moral spreminjati querije, ce gres na MySQL. Ce uporabljas stored procedures, 
jih bos moral v vecini primerov napisati na novo. 

> Ko se pojavi potreba po podpiranju nove platforme, se prevede samo ta del.
> Tako je npr. shranjevanje zapisa vedno shraniZapis(data), "osrčju"
> aplikacije pa se niti slučajno ne sanja, kaj se dejansko zgodi - ali se
> podatki zapišejo v MySQL, PostgreSQL, tekstovno datoteko, ali /dev/null.

Se strinjam, to rabis v vsakem primeru. Razlika je samo v tem, da pri mojem 
nacinu dela "shraniZapis" lahko napisem samo enkrat za VSE sql baze - to si 
lahko privoscim, ker mi presek SQL-ov na vseh bazah nudi dovolj za normalno 
delo. Ce bom kdaj sel na flat-file, bom pac moral napisati layer na novo, pri 
seljenju med bazami pa potrebe po tem ni. In glede na to, da hitrost dela z 
bazami minimalno vpliva na hitrost aplikacije (veliko vecino izpisov 
cache-iram in s tem do baze sploh ne dostopam), si razliko v hitrosti 
dostopanja do baz lahko privoscim (govorim o razliki v hitrosti kot posledici 
dejstva, da SQL querijev ne optimiziram za posamezno bazo).

Ce potrebujes stvari, ki so nekompatibilne med bazami, jih seveda uporabis. 
Ce jih ne potrebujes nujno, velja premisliti, ali prednosti odtehtajo vec 
dela. Dobro nacrtovana aplikacija in dobra dokumentacija sicer pomagata pri 
prenosu na novo bazo, ampak se vedno to pomeni vec dela, kot ce bi imel dobro 
napisano aplikacijo in dokumentacijo s "prenosljivim" SQLom. 

Sicer je pa to ze malo abstraktna razprava... ;)

LP!

Anze



More information about the lugos-prog mailing list