„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 | 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 | ||
! | !➕ | ||
! | !➖ | ||
|- | |- | ||
| | |teljesítmény | ||
| | | | ||
* | * gyorsabb lokális feldolgozás | ||
* a gyorsítótárnak is köszönhetően | |||
* | * hálózat: kisebb késleltetés, alacsonyabb terhelés | ||
| | | | ||
* | * 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 | ||
* | * nagyobb terhelés az adatbázison | ||
* nem lehet igazán jól skálázni | |||
|- | |- | ||
| | |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" | |||
|} | |} | ||
=== Milyen programozási lehetőségei, sajátosságai vannak a Microsoft SQL Servernek? === | |||
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. | |||
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>). | |||
A függvények skalár értékekkel (változókkal) vagy táblákkal térhetnek vissza. | |||
= | 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 == | ||