„Háttéralkalmazások/Záróvizsgatételek” változatai közötti eltérés

2. Tárolt eljárások: Tétel kidolgozása
64. sor: 64. sor:


=== Ismertesse az adatbázisok szerveroldali programozásának koncepcióját, előnyeit, hátrányait! ===
=== Ismertesse az adatbázisok szerveroldali programozásának koncepcióját, előnyeit, hátrányait! ===
Használatával eljárásokat (procedures) és függvényeket (functions), illetve triggereket lehet tárolni az adatbázisban. Azokban változókat, operátorokat, elágazásokat és kivételeket is lehet használni. Lényege, hogy az üzleti logika helyett maga az adatbázis-kezelő ''futtatja'' a beállított szubrutinokat, az előbbi csak ''meghívja'' őket.
Használatával eljárásokat (procedures) és függvényeket (functions), illetve triggereket lehet tárolni az adatbázisban. Lényege, hogy az üzleti logika helyett maga az adatbázis-kezelő szerver ''futtatja'' a beállított szubrutinokat, az előbbi csak ''meghívja'' őket.
{| class="wikitable"
{| class="wikitable"
|+
|+a szerveroldali programozás jellemzői
!szempont / tulajdonság
!szempont / tulajdonság
!
!
!hátrányai
!
|-
|-
|az üzleti logika bárhonnan meghívhatja a szubrutinokat
|teljesítmény
|
|
* növeli a kód újrafelhasználhatóságát
* gyorsabb lokális feldolgozás
 
* a gyorsítótárnak is köszönhetően
* könnyebb karbantartás
* hálózat: kisebb késleltetés, alacsonyabb terhelés
|
|
* nincs scope-juk, így nehezebb korlátozni, ki hívhatja meg őket
* legtöbb esetben<ref>Kivéve: https://learn.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/native-compilation-of-tables-and-stored-procedures és https://docs.oracle.com/en/database/oracle/oracle-database/21/jjdev/running-Java-stored-procedures.html</ref> értelmezett nyelvek
* jogosultságkezeléssel meg lehet oldani
* nagyobb terhelés az adatbázison
* nem lehet igazán jól skálázni
|-
|-
|nagyobb teljesítmény
|szabvány
|
|
|
|
* nincs (ISO-)szabvány
* platformfüggőek az implementációk
* sőt, általában egy külön nyelvet is meg kell tanulni hozzá
* így nehezebben karbantartható a kód
|-
|-
|adatbiztonság
|
|
* jobb megfelelés az ACID-elveknek
* nem kell a hálózaton utaztatni az adatokat
|
|
|-
|az üzleti logika bárhonnan meghívhatja a szubrutinokat
|
|
* növeli a kód újrafelhasználhatóságát
* könnyebb karbantartás
|
* nincs scope-juk, így nehezebb korlátozni, ki hívhatja meg őket
* jogosultságkezeléssel meg lehet oldani
|}
{| class="wikitable"
|}
|}
Előnyei:


* jobb megfelelés az ACID-elveknek
=== Milyen programozási lehetőségei, sajátosságai vannak a Microsoft SQL Servernek? ===
* a szubrutinok közvetlenül elérik az adatokat, nem kell őket a hálózaton utaztatni
A Microsoft SQL Server procedurális programozási nyelve a T(ransact)-SQL. Azokban változókat, operátorokat, elágazásokat, utasításblokkokat, ciklusokat és kivételeket is lehet használni.
** kisebb késleltetés
** alacsonyabb hálózati terhelés
** gyorsabb feldolgozás
*** a gyorsítótárnak is köszönhetően
** nagyobb adatbiztonság


Hátrányai:
Egyedi adatbetöltési eszköze a kurzor. Gyakorlatilag úgy működik, mintha lenne egy Excel-táblázatunk, amit egy olyan Maccel szeretnénk kiolvasni, amihez csak egy <code>▼</code> billentyű van csatlakoztatva. Meg kell nyitni a táblázatot, utána egyesével végig lehet léptetni az adatokon. Az utolsó sort elérve be kell zárni az ablakot (= a kurzort), majd magát a programot is, hogy felszabadítsuk az erőforrásokat (<code>DEALLOCATE cursor1</code>).


* nincs (ISO-)szabvány
A függvények skalár értékekkel (változókkal) vagy táblákkal térhetnek vissza.
** platformfüggőek az implementációk
** sőt, általában egy külön nyelvet is meg kell tanulni hozzá
** így nehezebben karbantartható
* értelmezett


=== Milyen programozási lehetőségei, sajátosságai vannak a Microsoft SQL Servernek? ===
A triggerek DML- és DDL-utasításokat is végrehajthatnak.
...
{| class="wikitable"
|+
szubrutinok jellemzői T–SQL-ben
!típus
!van visszatérési értéke?
!van mellékhatása?
|-
|eljárás
|🟠 lehet
|🟠 lehet
|-
|függvény
|🟢 igen, mindig
|🔴 nem, soha
|}


== 3. ORM ==
== 3. ORM ==