Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Co jest bardziej wydajnym i "lepszym" rozwiązaniem
awakening
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 12.01.2008
Skąd: Warszawa

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


Witam,

Natknąłem się na problem poniekąd natury filozoficznej. Muszę zrealizować dość skomplikowaną operację na danych z bazy i widzę dwie możliwości rozwiązania zadania:

Rozwiązanie 1. Pobrać wszystkie dane na raz, jednym zapytaniem i potem "obrobić" je w kodzie. Dokładnie chodzi o zsumowanie wartości produktów według grup do których należą, czyli pobieram wszystkie produkty jednym zapytaniem, następnie iteruję po nich i sumuję wartości przypisując je do tablicy z grupami produktów.

Rozwiązanie 2. Stworzyć dwa oddzielne widoki w bazie danych (tak mi wychodzi ze struktury bazy, każdy z nich będzie miał ok. dwa JOIN'y) a następnie w kodzie przy zapytaniu połączyć kolejnym JOIN'em te dwa widoki. To rozwiązanie nie wymaga iterowania po tablicy w kodzie, ani wykonywania żadnych innych "brzydkich" operacji na danych. To rozwiązanie podoba mi się bardziej ze względu na czystość w kodzie i łatwość utrzymania kodu, ale mam małe obawy co do wydajności tego podejścia.


Czy istnieją jakieś "best practices" w takich przypadkach? Lepiej dane "obrabiać" po stronie bazy danych, czy w kodzie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
awakening
post
Post #2





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 12.01.2008
Skąd: Warszawa

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


Na razie używam widoków ze względów praktycznych. Jako frameworka używam CakePHP, w którym tworząc zapytanie "ręcznie" muszę zadbać o ochronę przed SQL Injection, tworząc widok w bazie ten problem odpada i jest po prostu szybciej, a na problemy z uprawnieniami jeszcze się nie natknąłem. Pewnie za jakiś czas i tak czeka mnie refaktoring i widoki zostaną zastąpione "customowymi" zapytaniami w modelach. (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Pyton_000
post
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Cytat(awakening @ 28.08.2014, 17:05:24 ) *
Jako frameworka używam CakePHP, w którym tworząc zapytanie "ręcznie" muszę zadbać o ochronę przed SQL Injection, tworząc widok w bazie ten problem odpada i jest po prostu szybciej

Wybacz ale takiej bzdury jeszcze nie słyszałem.
Widok to nic innego jak ogromne zapytanie/a zwracające ileś tam kolumn. W efekcie piszesz dokładnie dokładnie tak samo jak zwykłe zapytanie, z różnicą że nie wybierasz tabeli tylko widok jako źródło danych.

Więc gdzie ta ochrona (IMG:style_emoticons/default/wink.gif)

Fakt przy widoku można ograniczyć się co Model::findBy...() i z głowy, a przy zwykłym query filtrowanie niezbędne.

A problemy z uprawnieniami... Zrób obie eksport widoku i spróbuj zaimportować do innej bazy i innego użytkownika to zobaczysz (IMG:style_emoticons/default/wink.gif)

Ten post edytował Pyton_000 28.08.2014, 21:38:04
Go to the top of the page
+Quote Post

Posty w temacie


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: 29.12.2025 - 20:21