![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 219 Pomógł: 5 Dołączył: 18.07.2006 Skąd: Piekary Śląskie Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Od kilku lat systematycznie rozwijam swoją aplikację. Jest ona coraz większa i zachciało mi się odzielić zapytania do bazy od logiki tak aby w przyszłości móc zamienić bezproblemowo mysqla na postgresa albo xmla albo jeszcze cokolwiek innego. I tu pojawia się problem. Przeczytałem sporo o wzorcach projektowych (ActiveRecord itp.) jednak one nie za bardzo spełniają moje założenia. W zapytaniach używam wielokrotnych złączeń, funkcji agregujących, funkcji dodatkowych (np. concat() czy date_add() w mysql). Tak więc ich koncepcja generalnie mi nie odpowiada. Na phppatterns.com widziałem tez rozwiązanie brute forcowe polegające na tym, że tworzy się dla każdego modułu osobną klasę, w której dla każdego zapytania używanego w logice tworzy się osobną metodę zwracającą zestandaryzowany wynik zapytania. Jednak przy wielu zapytaniach klasa taka rozrośnie się niemiłosiernie. Wszelkie kreatory zapytań też wydają mi się mało optymalne ze względu na bogactwo języka zapytań i na to, że nie może nikt mi zagwarantować, że późniejsze migracje do xmola zachowają kompatybilność np. z frazą gruoupby. Może się więc okazać, że jeżeli napiszę klasę kreatora zapytań implementującą metodę groupby() to potem nie będę miał jak tego przekonwertować do nowego enginu. Pytanie moje jest więc takie. Czy macie jakiś sensowny, łatwo dostosowywalny sposób na oddzielenie zapytań od logiki? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
php Pro?
Przenoszę na php. P.S. AdoDB Creole Propel .... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 219 Pomógł: 5 Dołączył: 18.07.2006 Skąd: Piekary Śląskie Ostrzeżenie: (0%) ![]() ![]() |
php Pro? Przenoszę na php. Oto cytat z opisu forum php Pro: "Inżynieria programowania w php, strategie budowy aplikacji." Jak dla mnie oddzielanie warstwy dostępu do danych od logiki aplikacji dotyczy jak najbardziej inżynierii programowania i strategii budowy aplikacji. Jak masz chwile -> http://ez.no/doc/components/view/1.1/(file...n_Database.html Nie chodziło mi o interfejs umożliwiający wykonanie zapytań dla różnych silników baz danych przez to samo ApI jakim jest PDO. Tylko o sposób oddzielenia zapytań od logiki systemu. Czyli o coś takiego abym w module aplikacji nie miał "Select * from ...". |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 02:43 |