|
SQL baze podataka - Sponzor: Baze-Podataka.net MySQL, MSSQL, Oracle, Access, ODBC. Ako imate problem brže i preciznije ćete dobiti odgovor ako priložite strukturu tabela ili skript koji kreira tabele i puni ih test podacima umesto što to problem opisujete samo rečima. Sponzor: Baze-Podataka.net - Blog o bazama podataka |
|
Alati teme | Način prikaza |
|
31. 01. 2006. | #1 |
Ivan Dilber
Sir Write-a-Lot
|
DB Abstraction Layer, koji koristite ?
i da li uospte koristite neki ?
Jako se mnogo prica o portabilnosti koda sa jedne baze na drugu, ali nisam siguran koliko to prakticno ima znacaja? Da li vam se ikada desilo da ste naknadno morali da portujete neki web projekat sa jedne baze na drugu? AFAIK za vecinu web sajtova se sa 99% sigurnosti moze tvrditi da mysql moze da odradi mnogo vise nego sto ce im ikada trebati, pa mi se sva ta prica o portabilnosti cini vise kao hip, nego kao real world potreba...a i koliko god dobra bila klasa, prelaz sa jedne baze na drugu je uvek mnogo vise gnjavaze od proste promene par parametara.... Koje je vase misljenje o tome da li se isplati koristiti abstraction layere uopste? ti paket ubrzavaju razvoj, i omogucavaju cistiji kod, sto je svakako plus...ali opet vecina njih (recimo PearB ili AdoDB za PHP) imaju gomilu dodatnog koda koji se izvrsava da bi osigurao da SQL upit bude portabilan medju bazama, a ako cu ja koristiti samo npr. mysql to je cisto trosenje resursa. Takodje upotrebom tih klasa postaje relativno komplikovano izvesti neke specificne cake vezane za konkretnu bazu, a koje bi mogle da ubrzaju stvari (npr. jako zgodna auto inkrement polja u mysql..) Kakva su vasa iskustva?
__________________
Leadership is the art of getting people to want to do what you know must be done. Poslednja izmena od ivanhoe : 31. 01. 2006. u 20:36. |
31. 01. 2006. | #2 |
Direktor Kombinata
Invented the damn thing
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
|
Ja koristim Propel, a on kao abstraction layer koristio Creole. Dobra stvar je što zajedno omogućavaju vrhunsku portabilnost jer te ne zanima koja je baza ispod. Definišeš koje objekte želiš, kako su povezani i na osnovu toga se za konkretnu platformu generišu konstrukcija baze, klase, relacije među njima... Konstrukcija je u XML formatu tako da je nezavisna od platforme.
Problemi: - Generiše se mnogo koda - Potrebno dosta vremena da se sav taj kod parsira tako da je distribucija u izvornom obliku ludost. U produkciji je najpametnije koristiti enkodirane fajlove jer se tu preskače parsiranje. Takođe, pametnim korišćenjem __autoload() funkcije se isto mogu ostaviriti uštede... - Ovakav kod jeste sporiji, ali u ekodiranom obliku uštede u performansama su zanemarljive u odnosu na dobijeno vreme u razvoju / portovanju (hardver - jeftin, vreme dobrog programera - skupo). Ko je bar jednom koristio nešto slično zna o čemu pričam. Ostali samo mogu da nagađaju - Nije za male projekte Ukolike je projekat bar malo složen (5 tabela +) i nisu potrebne maksimalne performanse (ovde mislim na stvarno ekstremnu posećenost) uvek preporučujem korišćenje abstrakcionih slojeva. Ubrzavaju razvoj, povećavaju portabilnost koda i pomažu ti da umesto da razmišljaš o tabelama u bazi i poljima razmišljaš o objektima, njihovim relacijama i konkretnim problemima koje treba da rešiš. PS: Do sada nisam bio u situaciji da moram da portujem kod na drugi tip baze. Lakoća portovanja nije osnovni razlog zašto bi se neko odlučio na korišćenje ovakvih biblioteka. Jednostavno olakšavaju i ubrzavaju rad, a portabilnost mu tu dođe kao fin dodatak.
__________________
activeCollab - Project Management and Collaboration Tool iz domaće kuhinje | area51.rs - Blog Poslednja izmena od Ilija Studen : 31. 01. 2006. u 21:18. |
31. 01. 2006. | #3 |
Boris
Grand Master
Datum učlanjenja: 01.12.2005
Lokacija: Novi Sad
Poruke: 775
Hvala: 5
156 "Hvala" u 2 poruka
|
Home made db wrapper mi radi posao. Jos uvek nisam imao realnu potrebu da koristim drugi db engine, osim mysql...
Inace, na phpclasses.org se bukvalno svaki dan pojavi novi mysql wrapper, ponekad i po dva komada
__________________
"It’s important to have goals when you pet. Otherwise you’re just rubbing another mammal for no reason." - Scott Adams |
31. 01. 2006. | #4 |
Super Moderator
Invented the damn thing
Datum učlanjenja: 06.06.2005
Poruke: 2.371
Hvala: 370
701 "Hvala" u 194 poruka
|
Ja u principu do sada nisam koristio nikakav DB abstraction layer, niti sam se susreo sa potrebom da moram da prebacujem kod sa jedne baze na drugu. SQL pisem sam, a koristim jednostavan OOP MySQL API koji sam sam razvio. Ovih dana prelazim i ja na PHP 5 (i to odmah 5.1) pa cu probati PDO ako stignem.
I ja sam od onih koji smatraju da je koriscenje biblioteka tipa PEAR::DB kada to nije apsolutno neophodno uludo trosenje resursa. Poslednja izmena od dinke : 31. 01. 2006. u 23:13. |
31. 01. 2006. | #5 |
profesionalac
Professional
|
ADOdb (za manje projekte ADOdb Lite)
__________________
The knack of flying is learning how to throw yourself at the ground and miss. |
31. 01. 2006. | #6 |
Direktor Kombinata
Invented the damn thing
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
|
Zaboravih da napomenem, a možda iz mog posta nije očigledno.
Mislim da je apstrakcija baze podataka polukorak. Nešto što nema puno smisla... Možda u tolikoj meri da je definisan standardan API i par pomoćnih metoda koji sprečavaju fizikalisanje. Dalje od toga je uludo trošenje resursa. Međutim apstrakcija kompletnog pristupa podacima ima znatno više smisla po meni. To je kompletan korak, kad ne morate da pišete SQL i razmišljate o bazi. Jedan od slučajeva je da se ispod klasa i ne nalazi baza već možda XML fajl. Sama aplikacija toga nije svesna (i ne bi treba da bude). Njoj je bitno da do podataka dođe, a na koji način će se oni "očuvati" između zahteva treba da prepusti potpuno automatizovanom sloju. Problem i rešenje fino opisani ovde...
__________________
activeCollab - Project Management and Collaboration Tool iz domaće kuhinje | area51.rs - Blog Poslednja izmena od Ilija Studen : 31. 01. 2006. u 22:23. |
31. 01. 2006. | #7 |
Boris
Grand Master
Datum učlanjenja: 01.12.2005
Lokacija: Novi Sad
Poruke: 775
Hvala: 5
156 "Hvala" u 2 poruka
|
Da, zato se jedno zove wrapper, a drugo abstraction layer, zar ne?
__________________
"It’s important to have goals when you pet. Otherwise you’re just rubbing another mammal for no reason." - Scott Adams |
31. 01. 2006. | #8 |
Nekad bio ddz
Expert
|
Koristim ezSQL wrapper (pokupio ga sa phpclasses), za sitnije sajtove koje sam radio - sasvim ok. Ne verujem da će bilo koji od tih sajtova prelaziti na neke egzotične baze, tako da mi nije bila potrebna nikakva apstrakcija, a i volim direktno da pričam sa bazom
Ah da, ima i sjajnu funkciju za debugovanje queryja. |
|
|
Slične teme | ||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
Koji font koristite u editoru? | bluesman | Programiranje | 53 | 22. 10. 2009. 00:53 |
Koji tekst editor koristite i zašto? | Milos Vukotic | Opušteno | 133 | 04. 06. 2009. 01:27 |
koji JS menu koristite? | dootzky | (X)HTML, JavaScript, DHTML, XML, CSS | 6 | 17. 11. 2006. 22:32 |
Koji AV software koristite | dinke | Opušteno | 22 | 12. 03. 2006. 07:05 |
Koji framework koristite? | Ilija Studen | PHP | 3 | 19. 06. 2005. 19:25 |