Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> db layer, jak pisac?
dr_bonzo
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Stoje przed zadaniem napisania abstrakcji na bazy danych i mam dwa rozwiazania do wyboru:

1. zupelna abstrakcja od api az po pseudo skladnie sql, ktora ma byc identyczna dla kazdej z baz (lub zamiast skladni, budowanie zapytania, np.
$q = $db->newQuyery( 'select' );
$q->addFields( array( 'ID', 'blabla' ) );
$q->addTable(...
$q->limited( 3,5 );
subqueries
triggers
transactions
itd...
masa roboty, ale za to mam calkowita niezaleznosc od bazy, nie moge wykorzystac wszystkich mozliwosci bazy (np. triggery w psql -- w mysqlu chyba nie ma?)

[aplikacja]<->[db layer]<-**[DB]

lub

2. tworze tylko wspolne api -- sql bedzie recznie wpisywany i bedzie rozny dla roznych baz + tworze kolejna abstrakcje (dla kazdej z baz) zawierajaca podstawowe zapytanie uzywane przez aplikacje, np. pobierz dane usera, pobierz wszystkie newsy

[aplikacja]<->[podstawowe operacje]<-**[db layer (bardziej API)]<->[DB]

co jest latwiejsze (chyba) do napisania ale nie mam calkowitej niezaleznosci od bazy i przenoszenie na inna baze wymaga napisania nowych "podstawowych funkcji".

Jak wy to rozwiazaliscie, ktore z rozwiazan sie sprawdza? A moze macie inne pomysly?
Go to the top of the page
+Quote Post
2 Stron V  < 1 2  
Start new topic
Odpowiedzi (20 - 21)
radziel
post
Post #21





Grupa: Zarejestrowani
Postów: 103
Pomógł: 0
Dołączył: 25.04.2003
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Cytat(M4chu @ 2005-05-05 16:25:25)
[...] wiec po co do kazdej bazy dawac inne zapytanie (ktore de facto bedzie identyczne? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Tam był przykład... Poza tym nie wkażdej bazie JOIN'ty, grupowanie,sortowanie wyglada tak samo.
Go to the top of the page
+Quote Post
Vengeance
post
Post #22





Grupa: Zarejestrowani
Postów: 657
Pomógł: 2
Dołączył: 15.08.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Dlatego wg. mnie abstrakcja bazy danych powinna zajmować się jedynie łączeniem z bazą + wysyłaniem zapytań i zwracaniem wyniku.
A nie dopieraniem zapytania automatycznie do wybranej bazy.
Tak jak to robią AdoDB np. w sprawie limitowania.

Ja robie tak, że dla każdej bazy jak i każdego "innego niż mysql" sposoby przetrzymywania danych mam różne klasy(modele) o wspólnym interfejsie. Dokładnie jak w MVC.
Go to the top of the page
+Quote Post

2 Stron V  < 1 2
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.06.2026 - 17:57