Háttéralkalmazások/Záróvizsgatételek
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
- committed tranzakciók által frissített sorok kiolvasása
- 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
- committed tranzakciók által hozzáadott / eltávolított sorok kiolvasása
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,CASCADEstb.) 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
- atomicity
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.
| szempont / tulajdonság | ➕ | ➖ |
|---|---|---|
| teljesítmény |
|
|
| szabvány |
| |
| adatbiztonság |
|
|
| az üzleti logika bárhonnan meghívhatja a szubrutinokat |
|
|
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.
| 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.
| ü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
| 🔑 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 |
↓
| 🔑 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
| 🔑 id | lpn_or_car_number | has_radio_point_switcher |
|---|---|---|
| 1 | V1448 | false |
| 🔑 id | lpn_or_car_number | rear_engined |
|---|---|---|
| 1 | SGY811 | true |
➕
| 🔑 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
| 🔑 id | lpn_or_car_number |
|---|---|
| 1 | V1448 |
| 2 | SGY811 |
| 3 | NLE848 |
| 🔑 id | 🔑 🇸🇨 vehicle_id | has_radio_point_switcher |
|---|---|---|
| 1 | 1 | false |
| 🔑 id | 🔑 🇸🇨 vehicle_id | rear_engined |
|---|---|---|
| 1 | 2 | true |
| 2 | 3 | true |
➕
| 🔑 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ó).
| 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:
| 🔑 id | vat |
|---|---|
| 1 | 0,27 |
| 🔑 id | bank_transaction_tax |
|---|---|
| 1 | 0,0045 |
Vagy akár ezeket osztályonként / teljesen összevonva.
Szépen
Kulcs-érték páronként:
| 🔑 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!
...
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
...
AD
...
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.
...