PDA

Pogčedajte punu verziju : Prednosti i mane pojedinih RDBMS-ova


kodi
07. 01. 2006., 23:28
Ova tema je nastala kao epilog jedne duge rasprave na php forumu.

ja sam takodje omao neka iskustva u projekovanju intranet aplikacija...

php je sasvim zadovoljavajuce resenje...

samo moja preporuka je PostgreSQL... (ako je u pitanju baza koja trpi veliko opterecenje)

ivanhoe
08. 01. 2006., 17:26
samo moja preporuka je PostgreSQL... (ako je u pitanju baza koja trpi veliko opterecenje)


zapravo, mysql je brzi od postgres-a (i vecine komercijalnih baza uzgred), za web model pristupa podacima, gde imas puno select-a, a relativno malo izmena..

postgres je ozbljnija baza u smislu da je maximalno inspirisana Oraclom i da od samog pocetka ima transakcije, referencijalni integritet, triggere, storovane procedure i slicno, a mysql je to tek nedavno dobio... tako da bi preporuka za postgresql bila vise u smislu robustnosti i proverenog kvaliteta, nego perfomansi....

dinke
08. 01. 2006., 17:47
postgres je ozbljnija baza u smislu da je maximalno inspirisana Oraclom i da od samog pocetka ima transakcije, referencijalni integritet, triggere, storovane procedure i slicno, a mysql je to tek nedavno dobio... tako da bi preporuka za postgresql bila vise u smislu robustnosti i proverenog kvaliteta, nego perfomansi....
MySQL (innodb i bdb tabele) ima Referencijalni Integritet od verzije 3.23.44. Slično važi i za transakcije (3.23 max odnosno od 4.0.x). Dakle, nedavno (u verziji 5.0.x) je dobio samo triggere i stored procedure, ovo ostalo ima već duže vremena.

Ilija Studen
08. 01. 2006., 18:24
PostgreSQL je stvarno kompletno rešenje, ali su mogućnosti koje MySQL pruža uglavnom dovoljne za web razvoj. Možda naveća prednost MySQLa u odnosu na PostgreSQL je rasprostranjenost (retki su hostovi koji nemaju LAMP paket). Po meni, najveća glupost koju je MySQL AB dozvolio je šareniš koji je nastao usled četiri aktivne verzije: 3.23.x, 4.0.x, 4.1.x i sad 5.x. Pošto se mogućnosti ovih baza često znatno razlikuju teško je biti pametan :)

Dobar persistance layer (npr Propel (http://propel.phpdb.org/trac/)) i tweakovanje dobijenog DDLa tako da izvučeš maksimum iz baze koju aplikacija stvarno koristi je sasvim zadovoljavajuće rešenje za većinu problema sa kojima ćeš se sresti na webu. Ima izuzetaka, ali ako ti je bitnija brzina razvoja od brzine izvršavanja onda je ovo prava kombinacija.

PS: Split dok još uvek znamo gde smo skrenuli u offtopic :D

ivanhoe
09. 01. 2006., 11:55
MySQL (innodb i bdb tabele) ima Referencijalni Integritet od verzije 3.23.44. Slično važi i za transakcije (3.23 max odnosno od 4.0.x). Dakle, nedavno (u verziji 5.0.x) je dobio samo triggere i stored procedure, ovo ostalo ima već duže vremena.


Ok, nisam mislio nedavno kao u poslednjoj verziji, nego nedavno kao u zadnjih par godina :D

Jos uvek mozes cesto da cujes i procitas komentare ljudi koji ne znaju za ove mogucnosti InnoDB, a rade sa mysql svaki dan, tako da, u tom smislu, te tehnologije su jos mlade...vecina programera ih jos uvek ne koristi mnogo,
mada postoji izvesno opravdanje za to jer innoDB ima nesto slabije perfomanse od myisam, ako se dobro secam..

dinke
09. 01. 2006., 12:03
Ok, nisam mislio nedavno kao u poslednjoj verziji, nego nedavno kao u zadnjih par godina :D
MySQL podržava transakcije od verzije 3.23.15 - iliti od 9. Maja 2000. godine! Dakle, više od 5 godina.

Jos uvek mozes cesto da cujes i procitas komentare ljudi koji ne znaju za ove mogucnosti InnoDB, a rade sa mysql svaki dan, tako da, u tom smislu, te tehnologije su jos mlade...vecina programera ih jos uvek ne koristi mnogo,
mada postoji izvesno opravdanje za to jer innoDB ima nesto slabije perfomanse od myisam, ako se dobro secam..
To je nažalost tačno. Zbog toga sam i najavio na svom blogu seriju članaka o mogućnostima MySQL-a koje developeri retko (ili nikada) koriste. Stay tuned :)

bojan_bozovic
09. 01. 2006., 21:18
Iskreno, meni je zasmetalo to sto nemam BEGIN/ROLLBACK ili slicno u MySQL. Vredi to, i na webu. Imam samo malo iskustva sa MySQL, i ostale baze ne mogu komentarisati. Kad se izgubi konekcija sa bazom (db server pao) cudne stvari se desavaju, ukljucujuci i vise od jednog INSERT ili UPDATE upita na bazi, a to je golem problem. Opet, ja sam jos na 3.23, a s obzirom da sam ne mogu znati kada ce server online, pitanje je hoce li i moze li i to da mi pomogne. Server je 3.23.56-log ali je moj problem sto nije po defaultu pravio InnoDB tabele, i sad prakticno nista ne mogu.

dinke
09. 01. 2006., 21:27
Boki, problem je što MySQL IMA begin/rollback koji ti pominješ.


start transaction;
insert into foo value ('foo1');
insert into foo value ('foo2');
commit;

start transaction;
insert into foo value ('foo3');
insert into foo value ('foo2');
;duplicate key error occured
rollback;


Ovo radi sa Innodb i BDB tabelama!

bojan_bozovic
09. 01. 2006., 21:33
Isprobacu transakcije, pa cu videti hoce li mi koristiti. Morao sam bas da vidim koju verziju baze imam (ovde u lokalu imam 5+ ali na serveru sta imam imam 3.23.56-log). Hvala! :)

ivanhoe
10. 01. 2006., 02:59
Vidim da mnogi pričaju o mnogim stvarima i prosto ne mogu da ne zapitam: koliko su STVARNO koristili bilo šta od toga. Priča se o mysql, o transakcijama, o postgreeSQL koji je proklamovan kao "najkompletnije rešenje" a nisam siguran da je bilo ko STVANO i napravio neku komercijalnu aplikaciju (znači ne ono kao "zezanje kod kuće") i koristio ta "kompletna rešenja" pa da može tako nešto da tvrdi. Tvrdim da 99,99% ljudi, ne samo ovde nego na čitavom web-u, koristi samo osnovne stvari, a "extra features" su ostali samo... tema za razgovor, ili što bi Srbi rekli: "kurčenje".


Ja sam sa postgresom radio 2001 par aplikacija za jednog britanskog provajdera (administracija korisnika, obracunavanje vremena, placanje i sl.), izbor baze je bio na njihov zahtev, prelazak sa postojece perl + mysql platforme na php + postgres....i priznajem koristio sam triggere i storovane procedure i transakcije cisto zato sto postoje, nije da sam morao, ali s druge strane su mi odlicno odradile posao i verovatno ustedeli malko vremena, a i kad vec postoje sto da ih ne koristim...Tako da da, postgres jeste veoma kompletna i dobra baza. I znatno laksa za instalaciju i upotrebu od Oracla, sa kojim treba da budes voodoo vrach da bi izasao na kraj, cenu da ne pominjemo...

Inace Dinke je spomenuo da i mysql ima slicne mogucnosti od 2000, ali moram priznati da sam ja za to saznao tek pre mozda 2 godine (/me stupid :rolleyes: ), ali jos nisam nikad koristio innoDB komercijalno, jer mi nije trebalo nikad, bas kao sto i kazes web development obicno moze i bez toga...

ali opet ne kapiram sta nalazis da je problem oko promovisanja naprednijih tehnika? Zasto smatras to kurcenjem?
To je kao da programiras u php-u i koristis foreach, a ne znas kako radi for ili while, samo zato sto ti uglavnom ne treba.
Mnogo je lakse i sigurnije uraditi begin i onda eventualno rollback, nego lockovati rucno tabele i proveravati sve i svasta...ili recimo kad brises usera, na primer, zasto bi isao od tabele do tabele i brisao njegove podatke, kad preko referencijalnog integriteta i triggera mozes to da zavrsis jednom komandom. Uostalom ne ugradjuju se te funkcije u baze zato sto je proizvodjacima dosadno, nego zbog zahteva korisnika...

degojs
10. 01. 2006., 07:58
Ni ja ne kapiram zašto su transakcije "kurčenje"?

Jedan deo sistema na kom radim (baza je SQL Server) jednostavno mora da ih ima. Svaka operacija nad podacima u bazi mora da se loguje. Mora. Npr. polje u bazi se menja, pa onda logujemo tu izmenu. Nema tu mesta razmišljanju tipa: valjda neće da pukne iz bilo kog razloga nakon što uradi UPDATE, a pre nego uradi INSERT. Transakcije rešavaju problem - jednostavno i efikasno.

Pa kako bi to neko i uradio bez transakcija?

Nije to ni kurčenje ni nečiji hir, već ne može bre bez toga. Odnosno može, al šta kad pukne, a ti si imao ovakvu situaciju:
1. Sa računa A skidamo $1
2. Na račun B stavljamo tih $1

Iz boga-pitaj-kog razloga, sistem nije uspeo da uradi ovo pod 2. I sad lepo neko tamo ostao bez para? Transakcije to rešavaju jednostavno. Ili će obe operacije da prođu ili *ništa* neće biti odrađeno.

Gorane: nema razloga ne koristiti transakcije, ako ti treba takva sigurnost. Kod mene na poslu se nije ni postavljalo pitanje. Ne može bre da ide live ako to nije ispunjeno. Mi smo zakonom obavezni da sve imamo u logu, a transakcije to garantuju.

bluesman
10. 01. 2006., 11:07
Pitanje je sada da li je tema "offtopic" ili ste vi krenuli u tom pravcu. Ja nisam imao nameru da pricam ni o mysql ni o bilo cemu o cemu vi pricate, mozda sam temu trebao da stavim udrugi forum. Ovo je bilo generalno pitanje, izgleda da su jedino Dinke i Dejan shvatili sta hocu da kazem.

degojs: nisam rekao da su transakcije kurchenje vec prica o necemu sto si samo citao da postoji, a nikada nisi koristio, medjutim "znas" dovoljno da mozes da dajes "zakljucke". To mogu da budu transakcije ili cena polovnih automobila ili ljubavni zov tetreba... nebitno, bitno je da mi smeta kada ljudi pricaju sa toliko iskljucivosti ("ili to ili nista drugo") a da u "pravom zivotu" nikada nisu upravo koristili to o cemu pricaju.

Znas na sta mislim... vidim sada neki pricaju o Oracle, pa cak uporedjuju druge DBMS sa Oracle, a da Oracle nikada nisu ni videli (osim recimo u reklami u nekom casopisu ili tekst na nekom blogu) a kamoli radili sa njim... Ja recimo Oracle nikada nisam video (i nije me sramota to da kazem, ne znam zasto drugi imaju stav da ne smeju da kazu da "ne znaju" nesto) i ne pada mi na pamet da polemisem o tome... mogu samo da gledam i ako me zainteresuje - da pocnem da ucim. Got it? :)

Sorry ako sam bio nejasan.

dinke
10. 01. 2006., 11:55
@Degojs
Mašiš poentu. Niko nema ovde ništa protiv transakcija (ili bilo čega drugog od naprednijih tehnologija) već protiv ljudi koji uleću u diskusiju i gađaju se sa izrazima zato što je to cool.

- MySQL nije cool
- Postgree je mnogo cool jer ima transakcije, referencijalni integritet, stored procedure, trigere i poglede.
- Oracle je naj cool on ima sve to valjda ali je još bolji. Sa njim Linux još bolje radi (svi mi znamo da oracle make linux unbreakable)

Mali Perica najviše voli Oracle. MySQL sucks.

Nadam se da sam sada bio jasniji.

ivanhoe
10. 01. 2006., 14:42
Svako ima svoje misljenje bilo da je ono zaradjeno praksom ili preuzeto od nekoga, ali to je valjda poenta foruma...ako bi se pricalo samo i iskljucivo o onom sto vecina web developera radi svakodnevno, onda ne bi smo odmakli mnogo dalje od echo i include... :D

Oduzmes i saberes ono sto su ljudi rekli, pa u sredini dobijes neke zanimljive podatke...


@dinke & bluesman: posto sam ja jedina osoba ovde sem vas dvojice koja je spomenula Oracle, pretpostavljam da su vase opaske na moj racun?
Pa ajd onda da se branim i dokazujem da smo u bivsoj firmi (http://code-development.com/) koristili Oracle za Maximo sistem, i kako nigde nisam rekao kako je Oracle naj-super, kad sam zapravo rekao potpuno suprotnu stvar da je beskonacno komplikovan za namestanje... :/

dinke
10. 01. 2006., 15:33
Ma uopšte nisam mislio na tebe. Ja sam konkretno bio isprovociran ovim postom (http://www.devprotalk.com/showpost.php?p=4732&postcount=10).

OT
Napisao sam mali tutorijal o korišćenu transakcija u MySQL-u Koga interesuje neka pogleda http://www.dinke.net/blog/archives/2006/01/mysql_i_transak.html.

bluesman
10. 01. 2006., 15:37
ivanhoe... godinama sam na forumima i naucen sam da ne citam ime nego samo text... tek ako mi se nesto ucini interesantno ili odgovaram nekome direktno, pogledam ko je napisao.

Znaci ne gledam ko nego sta je napisao, tako da moja "prozivka" (iako nisam nikoga prozivao) nije upucena tebi. Vise pricam generalno...

Ok, i sada ti pricas o Oracle, i odmah dodje njih 20 koji pocnu sa pricom "da da, oracle rules"... e to mi smeta.

Sto se tice price na forumu, naravno da svako ima pravo da kaze sta misli, ali mislim da i na forumu kao i u pravom zivotu moras da stojis iza onoga sto kazes. Kako mozes da imas formirano misljenje o necemu, ili stav "ovo je bolje od onoga" ako nisi probao sve to o cemu pricas.

Osim toga, dolazis u situaciju da lupis glupost ako pricas o necemu sto ne poznajes dovoljno, sto utice na tvoj kredibilitet, odnosno svaki sledeci put, pa cak i kada znas o cemu pricas, ljudi ce te gledati sa rezervom (da ne kazem sa omalovazavanjem)

Jos jednom, nisam nikoga prozivao, ovo je moj generalni utisak, ne samo sa ovog foruma, nego sa svih IT foruma. Najsmesniji su mi oni koji silno zele da odgovore na neko pitanje, valjda da pokazu kako su "pametni" pa odu i iskopiraju primer iz manuala i kao "evo ti code"...

Pobegli smo (bar ja) sa nekih drugih foruma bas zbog takvih, ne zelim da se i ovde isto desava. Desavace se, naravno, dok god dolaze ljudi, ali cemose truditi da to svedemo na najmanju mogucu meru.

Ilija Studen
10. 01. 2006., 16:28
Čini mi se da se Bluesman žacnuo na moju izjavu da je "PGSQL stvarno kompletno rešenje", ali je moguće da grešim. Ja stvarno ne vidim ništa loše u toj izjavi. Možemo sad da "mlatimo" o tome šta kompletno znači, ali sam tu reč upotrebio u kontekstu da ima sve što se danas od moderne "baze" očekuje. Niti sam rekao da je najkompletnije rešenje (kao što je ovde citirano), niti sam rekao da je MySQL sranje i da tereba koristi PGSQL.

Upoznat sam sa mogućnostima koje PGSQL ima ali ga nisam koristio u komercijalnim projektima. Nedovoljno je rasprostranjen, donedavno se nije mogao ni voziti na Winu (koji koristim za razvoj) bez emulatora, a nije mi ni trebao preterano. Mojim potrebama trenutno odgovara MySQL. Doduše, koristim Propel tako da mi je uglavnom svejedno šta je ispod - to jednostavno radi ($user->save(); će uraditi baš ono što očekujem da bude urađeno bez obzira da li je u pitanju Oracle, SQL Server, MySQL ili PGSQL).

Mislim da je ova tema i njen kompletan stav loše postavljena. Da li to što nisam koristio navedeno rešenje u komercijalnim projektima bitno menja stvari? Činjenica: nisam vozio Aston Martin. Da li to znači da ne smem da kažem da je Aston Martin dobar automobil? Ili pak da ne smem da izjavim da Aston Martin pruža sve što se od modernog automobila očekuje i preporučim ga nekom?

Neargumentovani stavovi i dezinformacije relativno brzo isplivaju na forumima tako da to nije neki problem. Meni je samo jako čudno očekivanje da neko mora da ima komercijalno iskustvo sa određenom stvari da bi mogao da ima stav o njoj. To mi jako vuče na klinački argument kad se na fakultetskim forumima diskutuje o smerovima: "Dobro, dobro. Videćemo mi ko će na kraju više zarađivati!" Mislim da je malo nezreo stav, ali dobro...

Dalje, da li mogućnosti koje inače predstavljaju standard kurčenje? Da li se kurčim kad koristim foreign keys ili transakcije kako bih obezbedio integritet podataka / sprečio greške? Ili pak kad koristim napredne mogućnosti neke platforme da bih sebi olakšao život / ubrazao razvoj?

Već sam negde rekao da je ono što je nekom buzzword nekom drugom svakodnevica. Isto se može reći i za "kurčenje". Sve zavisi gde ti problemi sa kojima se srećeš / okruženje u kom radiš postave granicu kurčenja (ispod je ok, iznad je kurčenje). Što jednom PHP skripteru kurčenje .NET ili Java programeru je dobar dan tako da je kompletna ova priča bezveze (zato se i nisam uključivao ranije u diskusiju).

bluesman
10. 01. 2006., 17:01
Zašto si se ti osetio prozvanim? Zašto si se toliko uhvatio za "kurčenje".

Hajde kada si se uhvatio za Aston Martin: ako ga nikada nisi video, osim na fotografiji, kako znaš da valja (ili ne valja)? Tu nije problem da ti pričaš o tome, ali je problem da ti donosiš zaključke, tvrdiš neke stvari i komentarišeš recimo performanse Aston Martin Vanquish. Kako recimo znaš da je to "ultimate driving machine"? A da ne pričamo dalje o tome... da bi za nešto (aston martin u ovom primeru) mogao da kažeš da je NAJBOLJE moraš ne samo da znaš sve o tome, već i da znaš SVE o celokupnoj KONKURENCIJI (ili alternativnim rešenjima) sa kojima porediš.

Ja sam ga recimo video samo na slici, i pored wishfull thinking mogus samo da kažem "u jeee..." (ili nešto bar malo inteligentnije), ali ne mogu da napravim side-by-side poređenje sa Jaguarom, kao što to većina na svim IT forumima radi... mislie ako su pročitali negde da je ovo bolje od onoga, da ih to kvalifikuje za eksperta u toj oblasti, a obično nisu videli ni jedno ni drugo.

Ono što ja prihvatam kao korektan stav je "ja vozim Aston Martin, to je za mene najbolji automobil na svetu". Ništa više od toga, osim ako nisi vozio svaki automobil sa kojim Aston martin može da se poredi.

Opet, za one koji preskaču redove u postovima ili čitaju površno, ne prozivam nikoga direktno nego prozivam SVE zajedno.

Ilija Studen
10. 01. 2006., 17:23
Zašto si se ti osetio prozvanim?

Zato što si citirao izjavu da je PGSQL "najkompletnije rešenje" (a niko na datoj temi osim mene nije koristio PGSQL i kompletno u istoj rečenici) ;)

Zašto si se toliko uhvatio za "kurčenje".

Zato što smatram da niko ovde nije došao da bi se kurčio i da rešenja o kojima neki ljudi ovde govore u rangu sa problemima sa kojima se sreću (problem ne treba nužno da bude zahtev klijenta, već može da bude i stiska sa vremenom, želja da se radi brže / bolje, da se dobijeni kod kasnije lakše proširuje i održava...)

---

Da li poređenje listi mogućnosti prihvataš? Tipa "MySQL ima te i te mogućnost, PGSQL te i te, a kako se to ponaša u praksi ne mogu da kažem jer ih nisam poredio"? Ne treba da koristim PGSQL transakcije da bih znao da PGSQL ima podršku za njih.

---

Nego, opet se hvatam u besciljnim diskusijama :) No dobro, svoj stav sam izneo.

ivanhoe
10. 01. 2006., 17:25
ok, stoji to sto kazes, jedino su argumentovani podaci stvarno podaci, sve ostalo je samo gossip i tako i treba postupati sa tim....mada ponekad i nesto sto si samo cuo ili procitao i skroz je neprovereno, moze nekom da bude jako korisna informacija ili ideja...

Inace kad smo vec kod argumentovanih prica, a posto je sve pocelo oko mysql i postgresa, evo jedan zanimljiv link:
http://monstera.man.poznan.pl/wiki/index.php/Mysql_vs_postgres

bojan_bozovic
10. 01. 2006., 17:36
Ahem, ispada da je MySQL+InnoDB tu gde i Postgres po brzini, kad se koristi transakcija u Postgres, ali radi se o tome sto je MySQL 5 redak na serverima ;) Zanimljivo.

dinke
10. 01. 2006., 17:54
@Boki
Ponavljaj 10 puta za mnom.

Transakcije rade na MySQL 3.23.15. Transakcije rade na MySQL 3.23.15. Transakcije rade na MySQL 3.23.15.Transakcije rade na MySQL 3.23.15.Transakcije rade na MySQL 3.23.15.Transakcije rade na MySQL 3.23.15.Transakcije rade na MySQL 3.23.15.Transakcije rade na MySQL 3.23.15.Transakcije rade na MySQL 3.23.15.Transakcije rade na MySQL 3.23.15.

bojan_bozovic
10. 01. 2006., 18:00
@dinke

OK :)

dinke
12. 01. 2006., 17:59
Dve teme na kojima se praktično raspravljalo o mogućnostima, prednostima i manama pojedinih RDBMS-ova su merdžovane u jednu. Dakle, ova tema sada služi za to. Ako imate nešto oko stvari nevezanih direktno za to (stvari oko ponašanja na forumu generalno, kojih ima i ovde, ali nije bilo moguće sve tačno počistiti), molim vas postavite to u postojeću temu na forumu "Predlozi i Pitanja".

Hvala svima na razumevanju.