konto usunięte

Temat: Stored Procedures - potrzebne?

Z moim SQLowaniem "wychowałem" się na MySQL 3/4, więc wyrobiłem sobie ignoranckie podejście do stored procedures :)

Zastanawiam się, czy jest sens się z tego podszkolić? Jeśli bazy używa tylko jedna aplikacja realizująca większość logiki, to czy procedury na coś się przydają?

konto usunięte

Temat: Stored Procedures - potrzebne?

Moim zdaniem oczywiście, że sens jest. Ten jest zawsze :) SP są bardzo wygodne i mają szereg zalet, przede wszystkim częściowe zabezpieczenie przed SQL Injection, prostota wywoływania ich z poziomu kodu aplikacji (kto choc raz pisał aplikację opartą o BD wie o czym mówię :)), możliwosc wstępnej obróbki danych po stronie serwera, możliwosc zdalnej aktualizacji/optymalizacji zapytań SQL bez aktualizowania aplikacji itd. Na pewno zalet znajdzie się dużo więcej niż wad (są jakieś?), więc chyba warto się tym zainteresowac.
Tomasz S.

Tomasz S. Nokia Certified Qt
Specialist

Temat: Stored Procedures - potrzebne?

Na pewno jeszcze przyśpieszenie działania aplikacji

konto usunięte

Temat: Stored Procedures - potrzebne?

Z zalet to przede wszystkim szybkość wykonywnia - wynikająca m.in. z tego, że nie trzeba przewalać danych między serwerem bazy a aplikacją. Na pewno też szybciej się pisze SP niż procedury obróbki danych w aplikacji, bo kwestie pobrania i operacji na danych są w SP bardzo naturalne.

Z wad, to nie wszystkie narzędzia wspierają debugging SP. PL/SQL Developer, którego obecnie używam do Oracle'a ma bardzo fajny debugger, jak z innymi narzędziami - nie wiem. Pamiętam, że kiedyś miałem z tym problem...

Pytanie "czy SP są potrzebne" nie jest banalne, bo zawsze można obyć się bez nich :-) Ale jak wie się, jak i gdzie ich użyć, to bywają bardzo przydatne.

Pozdrawiam, Stasio.
Wojciech Z.

Wojciech Z. Konsultant
IT/Biznesowy

Temat: Stored Procedures - potrzebne?

Z narzedzi jeszcze napewno warto wspomniec o SQL Navigator i niesamowitym TOAD (niestety cholernie droga licencja)

Zalety

- szybkosc dzialania (pakiety sie kompiluja, kod jest wykonywany bezposrednio na bazie)
- latwy dostep do bazy z poziomu procedur (latwe wielokrotne operowanie na tabelach, prostota wyciagania skomplikowanych struktur np. na kursorach)
- izolacja - czesc funkcjonalnosci moze byc zaszyta w bazie, dzieki temu a) mozna wymienic warstwe kliencka (np thin/thick client) bez modyfikowania warstwy logiki, b) zmiana w tej warstwie po upgrade serwera jest natychmiast dokonana dla calej aplikacji (wazne gdy z bazy korzystaja na przyklad 3 rozne uslugi, webpage i smartClient)

Wady?

Coz, nie kazdy lubi PL/SQLa (czy tam Transacta) - poza tym te jezyki w porownaniu ze wspolczesnymi to nadal sredniowiecze developerskie


EDIT -> Aaa... jeszcze z zalet to mniejsza redundancja ;)


Wojciech Z. edytował(a) ten post dnia 21.11.06 o godzinie 11:25
Sylwester Nowalski

Sylwester Nowalski Integrated Data
Solutions Department
Director,
Marketing...

Temat: Stored Procedures - potrzebne?

Kornel L.:Z moim SQLowaniem "wychowałem" się na MySQL 3/4, więc wyrobiłem sobie ignoranckie podejście do stored procedures :)

Zastanawiam się, czy jest sens się z tego podszkolić? Jeśli bazy używa tylko jedna aplikacja realizująca większość logiki, to czy procedury na coś się przydają?

Pewna historyjka:
Swego czasu Jan Himilsbach miał propozycję zagrania w zachodnim filmie. Był jednak pewien warunek angażu: aktor musiał opanować język angielski. Ponieważ początek zdjęć był jeszcze sprawą bardzo odległą, nauczenie się języka w przynajmniej podstawowym zakresie było całkiem realne. Po długim namyśle Jasiu jednakże odmówił. Kiedy znajomi pytali go o powody tak niecodziennej decyzji (w końcu rola w filmie na Zachodzie to nie było za komuny "w kij dmuchał"), aktor wypalił szczerze:
- Pomyślcie sami - ja się nauczę angielskiego, a oni jeszcze gotowi odwołać produkcję filmu. I co wtedy? Zostanę jak głupi z tym angielskim...

Warto się ze SP "zapoznać". Wiele argumentów już "za" padło, dorzucę jeszcze jeden niejako powiązany z uprawnieniami. Nie nadajesz niebezpiecznego bardzo często dostępu bezpośrednio do obiektów typu tabela, view, tylko na procedury. A co w nich jest, już sam decydujesz.
A co do poruszanego "SQL Injection" są firmy/klienci, którzy bardzo gwałtownie reagują na tego typu zagrożenia.

pozdrav,
Sylwek
Tomasz S.

Tomasz S. Nokia Certified Qt
Specialist

Temat: Stored Procedures - potrzebne?

Jeśli się zdecydujesz na stosowanie SP, pronuję zainteresować się bazą danych PostgreSQL. Szczeoglnie z tego względu, że znajduje się w niej między innymi język podobny do pl/sql(ORACLE) o nazwie pl/pgsql

konto usunięte

Temat: Stored Procedures - potrzebne?

Sylwek N.:
A co do poruszanego "SQL Injection" są firmy/klienci, którzy bardzo gwałtownie reagują na tego typu zagrożenia.


Czy mógłbyś rozwinąc ten wątek? Bo nie bardzo rozumiem co miałeś na myśli.

pozdrawiam,
Rafał
Sylwester Nowalski

Sylwester Nowalski Integrated Data
Solutions Department
Director,
Marketing...

Temat: Stored Procedures - potrzebne?

Rafał S.:
Sylwek N.:
A co do poruszanego "SQL Injection" są firmy/klienci, którzy bardzo gwałtownie reagują na tego typu zagrożenia.


Czy mógłbyś rozwinąc ten wątek? Bo nie bardzo rozumiem co miałeś na myśli.

pozdrawiam,
Rafał

To, że ich(Klientów) systemy mają być na takie ataki odporne.
Aplikacja traktowana jest jak skórka do pokazywania danych, a cała mechanika zawarta ma być w SP.
Z poziomu warstwy "najbliższej" użytkownikowi końcowemu nie ma prawa wyjść zapytanie inne, niż wywołanie procedury z odpowiednimi parametrami.

Wracając jeszcze do pytania głównego - tak, warto się podszkolić. Równie dobrze można zapytać, czy warto "uczyć się" perspektyw, funkcji itp.
Należy zapoznawać się z całym silnikiem przez producenta udostępnionym. Tym bardziej, że jako pracownik firmy masz obowiązek stałego poszerzania swojej wiedzy ;).

pozdrav,
Sylwek

konto usunięte

Temat: Stored Procedures - potrzebne?

Sylwek N.:
To, że ich(Klientów) systemy mają być na takie ataki odporne.
Aplikacja traktowana jest jak skórka do pokazywania danych, a cała mechanika zawarta ma być w SP.
Z poziomu warstwy "najbliższej" użytkownikowi końcowemu nie ma prawa wyjść zapytanie inne, niż wywołanie procedury z odpowiednimi parametrami.

zgadzam się z Tobą w 100%. Nie bardzo zrozumiałem tylko fragment o "gwałtownych" reakcjach klientów. Moim zdaniem klient nie musi byc nawet świadom takich zagrożeń, bo naszą rolą jest zabezpiczenie go przed takimi sytuacjami.

pozdrawiam,
Rafał
Andrzej Zawadka

Andrzej Zawadka
Projektant/Programis
ta

Temat: Stored Procedures - potrzebne?

Mnie zawsze frapował sposób zwracania przez SP informacji o błędach wykonania i przedstawiana odpowiednio spreparowanej na tej podstawie informacji do użytkownika, bądz podejmowaniu wtedy odpowiednich działań. Czy polegacie tutaj na funkcjonalności biblioteki dostępu do danych jakiej dany język używa (taki np. pg_last_error z PHP), lub jaką inną politykę obsługi błędów wygenerowanych przes SP stosujecie w waszych aplikacjach?

Pozdrawiam
Andrzej
Wojciech Z.

Wojciech Z. Konsultant
IT/Biznesowy

Temat: Stored Procedures - potrzebne?

W Oracle uzywam obslugi wyjatkow i w nich wywoluje RAISE_APPLICATION_ERROR
Marcin S.

Marcin S. BI Consultant, ETL
developer

Temat: Stored Procedures - potrzebne?

Wojciech Z.:

Coz, nie kazdy lubi PL/SQLa (czy tam Transacta) - poza tym te jezyki w porownaniu ze wspolczesnymi to nadal sredniowiecze developerskie


A możesz wymienić te współczesne i jakie mają zalety, których brakuje w T-SQL i PL/SQL?

konto usunięte

Temat: Stored Procedures - potrzebne?

Dorzucę jeszcze jeden argument dla "zalety"

1. Większość zapytań jest jednak powtarzalnym ciągiem SQL i tokenów. Dużo łatwiej pracuję się nad optymalizacją obciążenia DB gdy analizujemy częstotliwość/czas trwania/wydajność procedury/funkcji. A jakie szczęśćie jak upolujemy w ten sposób jakiegoś potworka :))

2. Ta warstwa pośrednicząca pomiędzy dostępem do żywych danych a samym pobieraniem danych też się przydaję -- np gdy oczekiwania wydajnościowe zmuszają nas do zamiany zwykłych danych na ich częściowe widoki zmaterializowane.

3. Trzecim argumentem "za" jest elastyczność języka stored procedures. Przecież nikt nie zmusza do pisania ich w PL/SQL - chyba wszystkie sensowne SBD wspierają coś więcej.

PS
Pornel: gorąco polecam zacząć przygodę z PostgreSQL lub Oracle. MySQL wtłacza w głowę bardzo złe nawyki..


Pozdrawiam,
Wojtek


Wojciech Jukowski edytował(a) ten post dnia 02.12.06 o godzinie 17:37
Wojciech Z.

Wojciech Z. Konsultant
IT/Biznesowy

Temat: Stored Procedures - potrzebne?

Moge - mechanizm dziedziczenia, obiektowosc, polimorfizm, refleksja ... i tak dalej
Tomasz S.

Tomasz S. Nokia Certified Qt
Specialist

Temat: Stored Procedures - potrzebne?

Wojciech Z.:Moge - mechanizm dziedziczenia, obiektowosc, polimorfizm, refleksja ... i tak dalej


Mechanizm dziedziczenia i obiektowość jest w pl/sql i pl/pgsql
Wojciech Z.

Wojciech Z. Konsultant
IT/Biznesowy

Temat: Stored Procedures - potrzebne?

ODMG niedopracowane a do pelnej obiektowosci jeszcze brakuje - z tego co wiem wiekszos features ma jeszcze status "experimental"...

BTW - spotkal sie kjtos kiedys z czyms a'la Tokenizer w PL/SQL ? Przydaloby sie...


Wojciech Z. edytował(a) ten post dnia 05.12.06 o godzinie 10:24
Tomasz Kondej

Tomasz Kondej Programista w M4B

Temat: Stored Procedures - potrzebne?

z tego co się orientuję to mechanizm obiektowości to właśnie (oprócz pojęć klasy i obiektu oczywiście) dziedziczenie,polimorfizm,abstrakcja i hermetyzacja więc nie wiem jak oprócz wspomnianego dziedziczenia PostgreSQL ją implementuje. Refleksję można uzyskać poprzez umiejętne wykorzystanie schematu. Zgadzam sie co do tego że współczesne jezyki bazodanowe to średniowiecze developerskie (nie znaczy że go nie lubie :] ), pełną obiektowość na bazie danych można uzyskać dopiero dzięki zintegrowaniu SqlServera 2005 z CLR.

konto usunięte

Temat: Stored Procedures - potrzebne?

Witam,
Jesli chodzi o duża zalete SP :
- przechowuje kod juz sparwdzony, serwer każde lużne zapytanie musi sprawdzac od nowa czy jest zgodne z wymaganiami jezyka
- po każdym wykonaniu procedury zapisany jest dla niej juz execution plan, wiec o ile sie paramerty nie zmianiają nie trzeba jej od nowa kompilowac
Jednym słowem oszczedzamy serwer, mówie o MSSQL ;)
Pozdrawiam,

konto usunięte

Temat: Stored Procedures - potrzebne?

Szukam aktualnie informacji kiedy używać procedur, a kiedy funkcji. Mógłby ktoś mi to rozjaśnić?

Następna dyskusja:

Czy potrzebne sa bazy MSAcc...




Wyślij zaproszenie do