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

A VIK Wikiből
a Táblázat helyes lezárása
3. ORM: Tétel kidolgozása
133. sor: 133. sor:


=== Mi az O/R leképzés feladata, mire szolgálnak a shadow-információk? ===
=== Mi az O/R leképzés feladata, mire szolgálnak a shadow-információk? ===
...
Az ORM segítségével egy objektumorientált nyelv memóriájában tárolt objektumokat le lehet képezni egy relációs adatbázis sémájára (és fordítva). Ezzel hidat képez az adatbázis és az üzleti logika között, biztosítva utóbbi adatperzisztenciáját.
 
A shadow-információk az adatbázisban szükséges, de az üzleti logika által nem használt kulcsokat, időbélyegeket és egyéb adatokat takarják.
{| class="wikitable"
|+egymásnak megfeleltethető adattípusok
!üzleti logika
!adatbázis
|-
|osztály
|tábla
|-
|tagváltozó (primitive)
|oszlop (attribútum)
|-
|tagváltozó (objektum)
|oszlop (attribútum), mely egyben idegen kulcs is
|-
|osztálypéldány
|sor (rekord)
|}


=== Az öröklési hierarchiát miképp lehet leképezni relációs sémára? ===
=== Az öröklési hierarchiát miképp lehet leképezni relációs sémára? ===
...
Tegyük fel, hogy van egy absztrakt <code>''Vehicle''</code> osztályunk. Ebből származik a <code>Tram</code> és a <code>Bus</code> osztály. Be akarunk vezetni egy új <code>ElectricBus</code> osztályt, mely a <code>Bus</code> leszármazottja.
 
==== Egy táblába, gányul ====
{| class="wikitable"
|+vehicle
!🔑 id
!lpn_or_car_number
!is_tram
!has_radio_point_switcher
!is_bus
!rear_engined
|-
|1
|V1448
|true
|false
|false
|''<null>''
|-
|2
|SGY811
|false
|''<null>''
|true
|true
|}
{| class="wikitable"
|+vehicle
!🔑 id
!lpn_or_car_number
!is_tram
!has_radio_point_switcher
!is_bus
!rear_engined
!is_electric_bus
!traction_battery_capacity_kwh
|-
|1
|V1448
|true
|false
|false
|''<null>''
|false
|''<null>''
|-
|2
|SGY811
|false
|''<null>''
|true
|true
|false
|''<null>''
|-
|3
|NLE848
|false
|''<null>''
|false
|true
|true
|170
|}
 
==== Külön táblába a valós osztályokat ====
{| class="wikitable"
|+tram
!🔑 id
!lpn_or_car_number
!has_radio_point_switcher
|-
|1
|V1448
|false
|}
{| class="wikitable"
|+bus
!🔑 id
!lpn_or_car_number
!rear_engined
|-
|1
|SGY811
|true
|}
{| class="wikitable"
|+electric_bus
!🔑 id
!lpn_or_car_number
!rear_engined
!traction_battery_capacity_kwh
|-
|1
|NLE848
|true
|170
|}
 
==== Külön táblába az összes osztályt ====
{| class="wikitable"
|+vehicle
!🔑 id
!lpn_or_car_number
|-
|1
|V1448
|-
|2
|SGY811
|-
|3
|NLE848
|}
{| class="wikitable"
|+tram
!🔑 id
!🔑 🇸🇨 vehicle_id
!has_radio_point_switcher
|-
|1
|1
|false
|}
{| class="wikitable"
|+bus
!🔑 id
!🔑 🇸🇨 vehicle_id
!rear_engined
|-
|1
|2
|true
|-
|2
|3
|true
|}
{| class="wikitable"
|+electric_bus
!🔑 id
!🔑 🇸🇨 bus_id
!traction_battery_capacity_kwh
|-
|1
|2
|170
|}
 
==== Absztrakt struktúrába ====
Külön tábla az osztályoknak, örökléseknek, tagváltozóknak, azok típusainak és az értékeknek. Mindegyiknek van kapcsolata legalább egy másik táblával.


=== Hogyan képezzük le az objektumok közötti kapcsolatokat? ===
=== Hogyan képezzük le az objektumok közötti kapcsolatokat? ===
...
Csak a kapcsolatok számosságát lehet leképezni, azok irányát nem. A kapcsolatok akár azonos táblán belül is lehetnek (rekurzió).
{| class="wikitable"
|+kapcsolatszámossági mátrix
!
!egy
!több
|-
|egy
| colspan="2" |idegen kulccsal az egyik táblában
|-
|több
|–
|egy külön kapcsolótáblával
|}


=== Hogyan képezhetőek le a globális változók? ===
=== Hogyan képezhetőek le a globális változók? ===
...
 
==== Gányul ====
Változónként külön táblában:
{| class="wikitable"
|+vat_hungary
!🔑 id
!vat
|-
|1
|0,27
|}
{| class="wikitable"
|+transaction_fee_hungary
!🔑 id
!bank_transaction_tax
|-
|1
|0,0045
|}
Vagy akár ezeket osztályonként / teljesen összevonva.
 
==== Szépen ====
Kulcs-érték páronként:
{| class="wikitable"
|+globals
!🔑 id
!class
!key
!value
|-
|1
|Hungary
|vat
|0,27
|-
|2
|Hungary
|bank_transaction_tax
|0,0045
|}


== 4. EF Core ==
== 4. EF Core ==
149. sor: 373. sor:
...
...


=== Mikor használjuk, mikor nem? ===
=== Mikor használjuk, és mikor nem? ===
...
...



A lap 2025. június 22., 17:26-kori változata


1. Adatbázisok

Ismertesse az adatbáziskonkurencia-problémákat!

  • dirty read
    • uncommitted tranzakciók által frissített sorok kiolvasása
  • non-repeatable read
    • committed tranzakciók által frissített sorok kiolvasása
      • a tranzakció előtt és után kiolvasott értékek nem egyeznek
  • phantom read
    • committed tranzakciók által hozzáadott / eltávolított sorok kiolvasása
      • a tranzakció előtt és után kiolvasott értékek nem egyeznek

Ismertesse a tranzakciók alaptulajdonságait!

  • ACID:
    • atomicity
      • minden tranzakció egy egység
      • ha egy tranzakció valamely része elhasal, akkor az egész sikertelennek minősül
    • consistency
      • az illegal transactionök nem mennek végbe
      • a kulcsok mindig helyesek
      • a megkötések (NOT NULL, UNIQUE, CASCADE stb.) be vannak tartva
      • a triggerek az előírtaknak megfelelően működnek
    • isolation
      • a párhuzamosan futó tranzakciók az izolációs szintnek megfelelő adatokat olvassanak ki
    • durability
      • a tranzakciók végrehajtása utáni állapot egy rendszerhiba vagy üzemzavar esetén is megmaradjon

Mire szolgálnak a tranzakcióizolációs-szintek?

izolációs szint dirty read non-repeatable read phantom read
read uncommitted 🔴 🔴 🔴
read committed 🟢 🔴 🔴
repeatable read 🟢 🟢 🔴
serializable 🟢 🟢 🟢

Ezeket az SQL-92 (ISO-)szabvány tartalmazta először.

Milyen izolációs szinteket támogat az Microsoft SQL Server?

A fentieket, plusz egy snapshot szintet, ami egy segédadatbázis (tempdb) segítségével számon tartja az egyes sorok verzióit, így a tranzakciók az azok kezdetekor készített pillanatkép alapján végeznek műveletet az adatbázisban. Előnye, hogy lockok nélkül működik. Hátránya, hogy a tempdb-nek magas lehet az erőforrásigénye, illetve egy esetleges írásütközés esetén kivételt dob az RDBMS, amit kezelni kell.

2. Tárolt eljárások

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. 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.

a szerveroldali programozás jellemzői
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[1] é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

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 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 (DEALLOCATE cursor1).

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.

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

Mi az O/R leképzés feladata, mire szolgálnak a shadow-információk?

Az ORM segítségével egy objektumorientált nyelv memóriájában tárolt objektumokat le lehet képezni egy relációs adatbázis sémájára (és fordítva). Ezzel hidat képez az adatbázis és az üzleti logika között, biztosítva utóbbi adatperzisztenciáját.

A shadow-információk az adatbázisban szükséges, de az üzleti logika által nem használt kulcsokat, időbélyegeket és egyéb adatokat takarják.

egymásnak megfeleltethető adattípusok
üzleti logika adatbázis
osztály tábla
tagváltozó (primitive) oszlop (attribútum)
tagváltozó (objektum) oszlop (attribútum), mely egyben idegen kulcs is
osztálypéldány sor (rekord)

Az öröklési hierarchiát miképp lehet leképezni relációs sémára?

Tegyük fel, hogy van egy absztrakt Vehicle osztályunk. Ebből származik a Tram és a Bus osztály. Be akarunk vezetni egy új ElectricBus osztályt, mely a Bus leszármazottja.

Egy táblába, gányul

vehicle
🔑 id lpn_or_car_number is_tram has_radio_point_switcher is_bus rear_engined
1 V1448 true false false <null>
2 SGY811 false <null> true true

vehicle
🔑 id lpn_or_car_number is_tram has_radio_point_switcher is_bus rear_engined is_electric_bus traction_battery_capacity_kwh
1 V1448 true false false <null> false <null>
2 SGY811 false <null> true true false <null>
3 NLE848 false <null> false true true 170

Külön táblába a valós osztályokat

tram
🔑 id lpn_or_car_number has_radio_point_switcher
1 V1448 false
bus
🔑 id lpn_or_car_number rear_engined
1 SGY811 true

electric_bus
🔑 id lpn_or_car_number rear_engined traction_battery_capacity_kwh
1 NLE848 true 170

Külön táblába az összes osztályt

vehicle
🔑 id lpn_or_car_number
1 V1448
2 SGY811
3 NLE848
tram
🔑 id 🔑 🇸🇨 vehicle_id has_radio_point_switcher
1 1 false
bus
🔑 id 🔑 🇸🇨 vehicle_id rear_engined
1 2 true
2 3 true

electric_bus
🔑 id 🔑 🇸🇨 bus_id traction_battery_capacity_kwh
1 2 170

Absztrakt struktúrába

Külön tábla az osztályoknak, örökléseknek, tagváltozóknak, azok típusainak és az értékeknek. Mindegyiknek van kapcsolata legalább egy másik táblával.

Hogyan képezzük le az objektumok közötti kapcsolatokat?

Csak a kapcsolatok számosságát lehet leképezni, azok irányát nem. A kapcsolatok akár azonos táblán belül is lehetnek (rekurzió).

kapcsolatszámossági mátrix
egy több
egy idegen kulccsal az egyik táblában
több egy külön kapcsolótáblával

Hogyan képezhetőek le a globális változók?

Gányul

Változónként külön táblában:

vat_hungary
🔑 id vat
1 0,27
transaction_fee_hungary
🔑 id bank_transaction_tax
1 0,0045

Vagy akár ezeket osztályonként / teljesen összevonva.

Szépen

Kulcs-érték páronként:

globals
🔑 id class key value
1 Hungary vat 0,27
2 Hungary bank_transaction_tax 0,0045

4. EF Core

Mi az Entity Framework?

...

Mikor használjuk, és mikor nem?

...

Mi a DbContext?

...

Milyen három modellezési lehetőségünk van adatmodell készítésére, és milyen két lehetőségünk van a modell konfigurációjára?

...

Hogy néz ki egy entitás, hogyan készítünk kapcsolatokat közöttük?

...

Hogyan készítünk lekérdezéseket, hogyan módosítunk adatokat EF Core-ban?

...

5. JPA – általános

Ismertesd a Java Persistence API architektúráját és főbb jellemzőit!

...

Milyen annotációkat kell alkalmazni egy JPA-entitás megírásakor, és milyen típusú attribútumokat vehetünk fel benne?

...

Ismertesd a perzisztenciakontextus fogalmát!

...

Mutasd be az entitások életciklusát!

...

6. JPA – használat

Milyen módokon lehet lekérdezést megfogalmazni a JPA-ban?

...

Hogyan bővíti a lehetőségeket a Spring Data JPA a lekérdezések megfogalmazásának területén?

...

Hogyan valósíthatók meg entitások közti kapcsolatok és az entitások öröklése JPA-ban?

...

7. Spring

Mik a függőséginjektálás főbb előnyei, és hogyan támogatja a Spring?

...

Milyen élettartama lehet egy springes beannek?

...

Hogyan könnyíti meg a JPA használatát a Spring Data JPA?

...

Hogyan támogatja a tranzakciókezelést a Spring?

...

8. ASP.NET Core

Mi az ASP.NET Core?

...

Mit jelent, hogy egy alkalmazás monolitikus?

...

Mi a clean architecture?

...

Sorolj fel min. 3 általános ASP.NET Core által nyújtott infrastruktúra funkciót!

...

Hogyan indul el egy ASP.NET Core projekt?

...

Milyen lépései vannak, hogy egy Web API-n kiajánljunk egy EF Core által nyújtott adatmodellt (lekérdezésre, módosításra)?

...

9. Razor

Milyen módokon szeparálhatjuk a kliens–szerver alkalmazásrétegeket?

...

Mi a szerveroldali renderelés?

...

Milyen előnyei/hátrányai vannak a kliensoldalival szemben?

...

Mi a Razor?

...

Hogyan készül el egy HTML-oldal Razor segítségével és MVC vagy Razor Pages használatával?

...

10. Microservices

Milyen előnyökkel és hátrányokkal jár a mikroszolgáltatás architektúra a monolitikussal szemben?

...

Ismertesd az alábbi microservice tervezési minták céljait, azok előnyeit, hátrányait!

Shared database

...

Database per service

...

API composition

...

CQRS

...

11. Microservices

Milyen előnyökkel és hátrányokkal jár a mikroszolgáltatás architektúra a monolitikussal szemben?

Ismertesd az API gateway tervezési mintát!

...

Ismertesd a tanult Service discovery mintákat!

...

12. Cloud

A számítási felhő fő jellemzői.

...

A számítási felhő fizikai, térbeli kiépítése.

...

Főbb publikus felhőszolgáltatók.

...

Felhős szolgáltatásmodellek.

...

Szolgáltatásgaranciák (SLA).

...

Skálázási lehetőségek.

...

Példák elérhető szolgáltatásokra.

...

A felhős modell előnyei, hátrányai.

...

13. Azure

Azure alapszolgáltatások viszonya egymáshoz.

Előfizetés

...

...

Fiók (account)

...

Erőforráscsoport

...

Erőforrás

...

Erőforrások beállítható alapjellemzői.

...

Régió kiválasztásának szempontjai.

...

Azure SQL és Azure App Service szolgáltatások...

...bemutatása.

...

...felépítése (logikai) erőforrások szintjén.

...

...árazási tényezői.

...