Da li je pametnije sve sql procedurom obavljati?

Wrong Turn

Domaćin
Banovan
Poruka
4.812
Pozdrav svima...

Radim jedan ozbiljniji projekat, i pre par dana sam od profe iz baza na fakultetu cuo da je pametnije sve procedurom obavljati kod velikih projekata, jer ako to radimo preko programskog jezika(koji nije sql), on ce na svaki query otvarati novu konekciju, sto pri velikom broju podataka zna usporiti sistem?

Na ovom projektu sam vec odradio sve insert, update procedure...

Znaci pitanje je prosto, da li je pametnije praviti upit u recimo php

mysql_query("insert into (`kolone`) values (`redove`)");

ili

Kod:
CREATE PROCEDURE SP_Tabela_INSERT
     (
        IN  p_kolona                    	VARCHAR(30)  , 
     )
BEGIN 

    INSERT INTO Tabela
         (
           kolona
         )
    VALUES 
         ( 
           p_kolona               	   
         ) ; 
END$$

mysql_query("call SP_Tabela_INSERT('kolone')");
 
Najpametnije je praviti sopstvene programe za rad sa bazama podataka i programe za pravljenje baza podataka, jer SQL ne zna sto ti tacno najvise treba, tj. kako ce najbrze uraditi ono sto ti hoces. Dakle, pravis iz koda baze podataka, i svojim kodom upravljas njima, a ne ponudjenim. To se zove ozbiljnost. A ovo se zove nestrpljivost koja rezultira u sporim programima.
 
Najpametnije je praviti sopstvene programe za rad sa bazama podataka i programe za pravljenje baza podataka, jer SQL ne zna sto ti tacno najvise treba, tj. kako ce najbrze uraditi ono sto ti hoces. Dakle, pravis iz koda baze podataka, i svojim kodom upravljas njima, a ne ponudjenim. To se zove ozbiljnost. A ovo se zove nestrpljivost koja rezultira u sporim programima.

A SQL procedura nije kod? :lol:

Ja govorim o povezivanju programskog koda i sql koda, radi postizanja veće brzine na većem broju podataka...
 
Логика за руковање подацима у самој бази делује као нешто што се некоме не може забранити ако баш преферира.

Да ли је оправдано, зависи од типа апликације и конкретне зоне логике која се пребацује у базу. Ја нпр. не бих алгоритам за обраду слике програмирао као stored procedure.

on ce na svaki query otvarati novu konekciju, sto pri velikom broju podataka zna usporiti sistem?
Пошто ти је свежије него мени, можеш ли да рекапитулираш 1) шта овде и 2) на који начин успорава систем? Шта су bottlenecks?
 
Pozdrav svima...

Radim jedan ozbiljniji projekat, i pre par dana sam od profe iz baza na fakultetu cuo da je pametnije sve procedurom obavljati kod velikih projekata, jer ako to radimo preko programskog jezika(koji nije sql), on ce na svaki query otvarati novu konekciju, sto pri velikom broju podataka zna usporiti sistem?

Na ovom projektu sam vec odradio sve insert, update procedure...

Znaci pitanje je prosto, da li je pametnije praviti upit u recimo php

mysql_query("insert into (`kolone`) values (`redove`)");

ili

Kod:
CREATE PROCEDURE SP_Tabela_INSERT
     (
        IN  p_kolona                    	VARCHAR(30)  , 
     )
BEGIN 

    INSERT INTO Tabela
         (
           kolona
         )
    VALUES 
         ( 
           p_kolona               	   
         ) ; 
END$$

mysql_query("call SP_Tabela_INSERT('kolone')");


Istina, biti će brže ali je puno teže održavati STORE procedure, koje ako su veće i komplicirane znaju biti vrlo nepregledne. Dobro odvagni ...
 
Slucajno sam naleteo na temu (kao ajde da vidim sta na krstarici pisu o programiranju) i eto morao sam cak i da resetujem sifru (nije me mrzelo :D).

Definitivno je pametnije da ti programski kod radi operacije sa bazom, razlika u brzini je nebitni, ali totalno a to sto kaze profa da svaki query otvara novu konekciju nema veze sa mozgom. Istina, konekcija sa bazom (u php-u) se ostvaruje tokom svakog http request-a koji inicijalizuje neki query ili vise njih. I jos par "tip-ova" nemoj koristiti mysql_query jer nemas prepared statement-e sto te otvara laganom sql injection-u vec koristi PDO klasu i jos bolja varijanta ti je da korstis neki ORM (Doctrine, Eloquent).

Pozdrav! :)
 
Slucajno sam naleteo na temu (kao ajde da vidim sta na krstarici pisu o programiranju) i eto morao sam cak i da resetujem sifru (nije me mrzelo :D).

Definitivno je pametnije da ti programski kod radi operacije sa bazom, razlika u brzini je nebitni, ali totalno a to sto kaze profa da svaki query otvara novu konekciju nema veze sa mozgom. Istina, konekcija sa bazom (u php-u) se ostvaruje tokom svakog http request-a koji inicijalizuje neki query ili vise njih. I jos par "tip-ova" nemoj koristiti mysql_query jer nemas prepared statement-e sto te otvara laganom sql injection-u vec koristi PDO klasu i jos bolja varijanta ti je da korstis neki ORM (Doctrine, Eloquent).

Pozdrav! :)

Ne treba kriviti profu, verovatno sam ja pogresno razumeo. On ima mnogo bogatu karijeru i par svojih firmi, tako da je tesko greska njegova. Pozdrav.
 

Back
Top