Integrációs terület → Adatpiac (Data Mart) töltése
Az adatpiac (Data Mart) az adattárház egyik célterülete, ahol az üzleti felhasználók számára optimalizált, témakör-specifikus adatok találhatók. Az adatpiacokat általában dimenzió-tény (star schema vagy snowflake schema) struktúrában hozzuk létre.
Ebben a lépésben az adatok konszolidált, elemzésre kész formába kerülnek, a szükséges üzleti szabályok és aggregációk alkalmazásával.
2. Milyen technikai mezőket használunk az Adatpiacban?
Az adatpiacban az üzleti felhasználók számára optimalizált adatok vannak, így a technikai mezők főként az adatintegritás és a riportálás támogatására szolgálnak.
1️⃣ Dimenziótáblák (pl. D_CUSTOMER) technikai mezői
Mező neve | Jelentése / Szerepe |
---|---|
DIM_CUSTOMER_ID | Surrogate key (helyettesítő kulcs), egyedi azonosító a dimenzióban |
SOURCE_CUSTOMER_ID | Az eredeti ügyfél azonosító a forrásrendszerben |
VALID_FROM | Az érvényesség kezdete (SCD Type 2 esetén) |
VALID_TO | Az érvényesség vége (SCD Type 2 esetén) |
IS_CURRENT | Aktív rekordot jelölő flag (SCD Type 2 támogatás) |
LAST_UPDATE_DATE | Utolsó módosítás dátuma |
2️⃣ Ténytáblák (pl. F_SALES) technikai mezői
Mező neve | Jelentése / Szerepe |
---|---|
SALES_ID | Egyedi azonosító (ha szükséges) |
DIM_CUSTOMER_ID | Külső kulcs a dimenzióhoz |
DIM_PRODUCT_ID | Külső kulcs a termékdimenzióhoz |
DIM_DATE_ID | Külső kulcs az idődimenzióhoz |
SALES_AMOUNT | Eladási összeg |
SALES_QUANTITY | Eladott mennyiség |
RECORD_SOURCE | Megmutatja, hogy az adat melyik forrásrendszerből származik |
LOAD_DATE | Az adatrekord betöltésének dátuma |
BATCH_ID | A betöltési folyamat azonosítója |
3. Milyen szabályokat és elveket kell figyelembe venni?
1️⃣ Teljesítményoptimalizálás és indexelés
- Particionálás a nagy ténytáblákon (
DATE_ID
,REGION_ID
szerint) - Materializált nézetek használata a gyors riportálás érdekében
2️⃣ Slowly Changing Dimension (SCD) támogatás
- SCD Type 1: régi adat felülírása
- SCD Type 2: időbélyeges verziózás (
VALID_FROM
,VALID_TO
,IS_CURRENT
) - SCD Type 3: korlátozott történetkezelés egy új oszlopban
3️⃣ Delta képzés és idősoros kezelés
- A ténytáblákban mindig idődimenzióra hivatkozunk (
DIM_DATE_ID
), hogy az idősoros elemzések elvégezhetők legyenek
4️⃣ Adatintegritás és üzleti szabályok alkalmazása
- Külső kulcsok (
FK_CUSTOMER_ID
,FK_PRODUCT_ID
) biztosítják az adatkapcsolatokat - Üzleti szabályok alkalmazása (pl. negatív eladási mennyiség kiszűrése)
5️⃣ Adatfrissítési stratégia
- Full refresh vagy inkrementális töltés?
- Ténytáblákban inkrementális töltés (
MERGE
,UPSERT
) - Dimenziók esetén SCD szabályok betartása
- Ténytáblákban inkrementális töltés (
Adattárház teljesítményoptimalizálási megoldások
Az adattárházak hatékony működéséhez olyan optimalizálási technikákra van szükség, amelyek gyorsítják a lekérdezéseket, csökkentik az erőforrásigényt és optimalizálják a tárhelyhasználatot.
Ebben a szakaszban az alábbi három fő megoldásra fókuszálunk:
- Particionált táblák
- Materializált nézetek
- Egyéb teljesítményoptimalizálási megoldások
Particionált táblák
A particionálás egy nagy méretű táblát kisebb, logikailag elkülönített részekre oszt, amelyeket a lekérdezések hatékonyabban tudnak feldolgozni.
Milyen előnyökkel jár a particionálás?
✅ Gyorsabb lekérdezések → A WHERE feltételek szűkítik a bejárandó adatokat, nem kell az egész táblát beolvasni.
✅ Kevesebb memória- és CPU-használat → A feldolgozás célzottan a szükséges partíciókra korlátozódik.
✅ Adatkezelés egyszerűbb → Lehetőség van csak egy adott partíció betöltésére, archiválására vagy törlésére anélkül, hogy az egész táblát érintenénk.
Particionálási módszerek
Típus | Leírás | Tipikus használat |
---|---|---|
Range Partitioning | Az adatokat egy adott tartomány szerint osztja fel (pl. dátum). | Nagy mennyiségű idősoros adatok (pl. napi/havi eladások) |
List Partitioning | Egy adott oszlop előre meghatározott értékei szerint osztja az adatokat. | Pl. országkód, régió, ügyfélkategória |
Hash Partitioning | Egy adott oszlop hash-értéke alapján osztja az adatokat, hogy egyenletes terhelést biztosítson. | Nagy, egyenletes elosztású adathalmazok, pl. ügyfélrekordok |
Composite Partitioning | Több particionálási módszer kombinációja (pl. range + hash). | Nagy, vegyes struktúrájú adatok, pl. idő + földrajzi terület |
Materializált nézetek (Materialized Views)
Egyéb optimalizálási megoldások
Indexek használata
✅ B-tree index* → Gyors keresésekhez használható (WHERE
feltételeknél)
✅ Bitmap index → Kevés egyedi értéket tartalmazó oszlopokhoz (pl. nem, státusz, kategória)
Partition-wise joins (Oracle)
✅ Ha mindkét tábla azonos particionálási logikát használ, az Oracle csak a megfelelő partíciókat fogja összekapcsolni.
🔹 Különösen fontos ténytábla + dimenzió kombinációknál
Parallel Query Execution
✅ Oracle Parallel Query: Nagy lekérdezések több processzoron párhuzamosan futnak, csökkentve a válaszidőt.
🔹 Hasznos nagy méretű ténytáblák elemzésénél
BigQuery vagy Snowflake esetén: Clustering és Micro-Partitioning
✅ Google BigQuery: Clustering → Adatokat logikailag tárolja egy adott oszlop alapján
✅ Snowflake: Micro-Partitioning → Automatikusan rendezi az adatokat a háttérben
Indexelési stratégiák és index típusok az adatbázisokban és adattárházban
Indexelési stratégiák
Az indexek alkalmazásának megtervezésénél az alábbi stratégiákat érdemes követni:
1️⃣ Index csak akkor szükséges, ha valóban gyorsítja a lekérdezést
- Olyan oszlopokat indexeljünk, amelyeket gyakran használunk a keresésekhez, szűrésekhez (
WHERE
), rendezésekhez (ORDER BY
) vagy csatlakozásokhoz (JOIN
). - Ha az adott oszlop gyakran frissül (UPDATE/DELETE), az index lassíthatja az adatbázist a karbantartási költségek miatt.
2️⃣ Válasszuk meg a megfelelő index típust
- Nem minden lekérdezéshez ugyanaz az index típus optimális.
- Például OLTP rendszereknél (gyakori beillesztés/frissítés) B-tree index ajánlott, míg OLAP esetén (adattárház) a Bitmap index lehet hatékony.
3️⃣ Tartsuk szem előtt az indexek karbantartási költségeit
- Túl sok index rontja az adatbázis teljesítményét, mert minden INSERT/UPDATE/DELETE művelet frissíti az indexeket is.
- Az indexek folyamatos töredezettsége miatt időszakos REBUILD vagy REORGANIZE szükséges lehet.
Főbb index típusok és alkalmazásuk
1️⃣ B-tree (Balanced Tree) Index – Az általánosan használt index
🔹 Mikor érdemes használni?
✔ Gyakori keresésekhez (WHERE
feltételeknél, pl. WHERE customer_id = 1001
)
✔ Rendezett visszakeresésekhez (ORDER BY
)
✔ OLTP rendszereknél → gyors egyedi rekordkeresés
🔹 Előnyök:
✅ Gyors keresés és szűrés, mert logaritmikus időben (O(log n)
) működik
✅ Hatékony az egyedi és kis számú találatokat visszaadó lekérdezéseknél
🔹 Hátrányok:
❌ Nagy frissítési és törlési műveleteknél (UPDATE, DELETE) lassíthatja a rendszert
❌ Töredezetté válhat, ezért rendszeres karbantartásra van szükség
📌 Példa Oracle-ben B-tree index létrehozására:
2️⃣ Bitmap Index – OLAP rendszerekhez optimalizálva
🔹 Mikor érdemes használni?
✔ Olyan oszlopokra, amelyekben kevés egyedi érték található (pl. nem
, státusz
, országkód
)
✔ Nagy méretű adattárházakban (OLAP)
✔ Több feltételes keresés (AND
, OR
) esetén, például ha több oszlopon is szűrünk egy lekérdezésben
🔹 Előnyök:
✅ Kevés helyet foglal, mert a bitmátrix tömöríti az adatokat
✅ Több szűrő egyidejű alkalmazásánál (AND, OR, NOT) kiemelkedően hatékony
✅ Adattárházakban gyors, mert a rekordok frissítése ritka
🔹 Hátrányok:
❌ Nem hatékony gyakran frissített oszlopok esetén, mert minden változásnál az egész bitmátrixot frissíteni kell
❌ Nem ideális OLTP rendszerekhez, mert lassítja az adatkezelést
📌 Példa Oracle-ben Bitmap index létrehozására:
Megjegyzések
Megjegyzés küldése