23
Kővári Attila Független BI tanácsadó, SQL Server MVP www.biprojekt.hu [email protected] Adattárház építése az SQL Server 2005 Integration Services (SSIS) segítségével

Kővári Attila Független BI tanácsadó, SQL Server MVP biprojekt.hu

  • Upload
    mason

  • View
    31

  • Download
    1

Embed Size (px)

DESCRIPTION

Adattárház építése az SQL Server 2005 Integration Services (SSIS) segítségével. Kővári Attila Független BI tanácsadó, SQL Server MVP www.biprojekt.hu Kovari.Attila @ biprojekt.hu. Az előadásról. Kinek szól az előadás: Akik már ismerik valamennyire az SSIS-t - PowerPoint PPT Presentation

Citation preview

Page 1: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu

Kővári AttilaFüggetlen BI tanácsadó, SQL Server [email protected]

Adattárház építése az SQL Server 2005 Integration Services (SSIS)segítségével

Page 2: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu

Az előadásrólKinek szól az előadás:

Akik már ismerik valamennyire az SSIS-tAkik nem most hallanak először a BI-ról és az adattárházról

Az előadás céljaA legjobb módszerek bemutatásaHogy Önök hatékony ETL folyamatokat valósítsanak meg az SSIS segítségével

Page 3: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu

TematikaAz SSIS Gyors áttekintéseHatékony ETL folyamat megvalósítása az SSIS segítségévelTeljesítmény-hangolás

Page 4: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu

Hol tartunk most?

Projekt- tervezés

Projektmenedzsment

Üzl

eti

ig

én

ye

k m

eg

ha

táro

zás

a

Architektúra- tervezés

Eszköz- választás és

telepítés

Fizikai tervezés

Adatbetöltők tervezése és fejlesztése

Felhasználói felület /alk.

tervezés

Felhasználói felület /alk. fejlesztés

Üzembe- helyezés, oktatás

Növekedés

Karbantartás

Dimenzionális modellezés

Page 5: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu

SSIS áttekintésAdatbetöltő eszköz, a MS ETL eszközeRésze az SQL Server 2005 programcsomagnakGrafikus programozási interfészNem DTS!

Page 6: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu

TematikaAz SSIS Gyors áttekintéseHatékony ETL folyamat megvalósítása az SSIS segítségévelTeljesítmény-hangolás

Page 7: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu

Hol tároljuk a package-eket?Adatbázis? Fájl rendszer? SSIS package store?

Érvek a fájlrendszer mellettKönnyebb Source control alá helyezni egy fájlt, mint egy adatbázistKönnyebb fájlt verziózni, mint adatbázistEgyszerűbb menteni és visszaállítani, mint az msdb adatbázistEgyszerűbben betölti a BI Studio az SSIS csomagokat fájlból, mint adatbázisbólHierarchikusan rendezhetjük az SSIS csomagokat

Érvek az adatbázis mellettA napi mentések során SSIS csomagjaink automatikusan mentődnek.

Page 8: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu

Készítsünk adatforrástól és hardver környezettől független SSIS csomagokat!A minden package által használt beállításokat

tegyük szeparált konfigurációs állományba (pl elérési utak)Minden package ugyanabból a konfigurációs állományból olvassa ki a beállításokat!Hol tároljuk a konfigurációs beállításokat?

XML konfigurációs állomány Környezeti változó Registry bejegyzésHívó package változójábanSQL Server

Best practice: Adatforrásonként, beállításonként egy XML fájl és Windows környezeti változók használata (Indirect XML Configuration file)

Page 9: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu

Naplózzuk az adattárház eseményeit!

Készítsünk naplót, hogyPontos képet kapjunk betöltési folyamataink eredményérőlStatisztikákat készíthessünkLáthatóvá tegyük, hogy épp melyik folyamat futFuttatandó betöltések (SSIS csomagok, task-ok) szabályozása

Készítsünk háromszintű naplót (Job, Package, Task) lefúrási lehetőséggelA task szintű naplózásra használjuk az SSIS beépített naplózási szolgáltatását (sysdtslog90 tábla)

Page 10: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu

Auditáljuk a beérkező rekordokat

A Derived column task segítségével könnyen hozzáadhatjuk a beérkező rekordokhoz, hogy

Melyik forrásrendszerből került beMelyik Package töltötteMilyen módon került be (BI Studióból, vagy job-ból? (interactiveMode)Hogy került be? (hibaágon, vagy standard úton)Ki töltötte be?Mikori betöltéssel került be?

Az audit információk megkönnyítik a hibakeresést és a kézi javítást.

Page 11: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu

Építsünk dinamikus SSIS csomagokat

Egy ismételt betöltés során eldönti a package, hogy kell-e futnia vagy sem. Ne fusson újra, ha egyszer már sikeresen lefutott!Használjunk feltételhez kötött végrehajtást (Expression and Constraint)Napló alapján tárolt eljárás beírja a package változójába, hogy kell e futni vagy nem. A package innen kiolvassa és az annak megfelelő ágon fut.Ne erre használjuk a disable=true beállítást, mert nem erre való!

Page 12: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu

Építsünk dinamikusan konfigurált csomagokat

Nem tudjuk beégetni az SSIS csomagba, hogy melyik napot kell letöltenie.Paraméterezett lekérdezés, vagy az egész lekérdezés egy paraméter:

Select * from t where datum=?„Select * from t where datum=2007-05-16”

Használjunk paramétert, ha lekérdezésünk hossza meghaladja a 4000 karaktertMinden más esetben készítsük el magunk a teljes lekérdezéstMegj.: A DataFlow task nem konfigurálható át futásidőben, csak a package betöltésekor. (DTS tudta) -> Migration best practice: NE

Page 13: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu

Készítsünk Template package-et a fejlesztési munka gyorsítására

A Template package tartalmazza:Konfigurációs állományok elérési útjátNaplózási funkciókatGyakran használt task-okat, connection menedzsereket, Standard változókatCsomagok védelmi szintjét

ProtectionLevel=DontSaveSensitive

standard beállításokatTegyünk BreakPoint-ot az package OnPostExecute eseményére

Tegyünk szöveges megjegyzéseket a template package-be -> Mit kell majd átállítani, ha új package készül belőle

Page 14: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu

A Package-ek legyenek moduláris felépítésűek

1 Package 1 táblát töltsön!Dimenzió táblánként 1 package, ténytáblánként 1 packageKönnyebb fejleszteni, hibát javítani, futtatni, párhuzamosítani

Package-en belül használjunk container-eket

Párhuzamosíthatóak benne a folyamatokEgyszerűbb nem futtatni (disable=true)

Használjunk fő package-eket a dimenziókat és ténytáblákat töltő package-ek összefogására

Page 15: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu

A Package-ek legyenek moduláris felépítésűek

Page 16: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu

Hogyan futassuk SSIS csomagjainkat fejlesztés közben?

BI Development stúdióF5 (Start with debugging)Ctrl F5 (Start without debugging)

Parancssor: DTExec.exe (vagy DTExecUI.exe)Performancia teszteléshez használjuk a parancssortTask-ok kikapcsolása: Disable=false (csak debug módban használható)

Page 17: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu

TematikaAz SSIS Gyors áttekintéseHatékony ETL folyamat megvalósítása az SSIS segítségévelTeljesítmény-hangolás

Page 18: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu

Az SSIS felépítéseWorkflow engine

Párhuzamos futtatást lehetővé tevő Task-okat, konténereket futtató workflow engineTeljesítménye SSIS szempontjából tekinthető adottságnak (teljesítménye az RDBMS-től, a hálózat sebességétől függ)

Data Flow engieSpeciális runtime task, ami lehetővé teszi a különböző rendszerek közti adatmozgatástKomponensei adatforrások, transzformációs eljárások, céladatbázisokPárhuzamosítható

Page 19: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu

Teljesítmény-hangolásPárhuzamosítsunk!

Párhuzamosítsunk!Szedjük szét a forrásadatokat

Fájlokat több fájlbaTáblák adatát több szeletre (where feltétellel)

Határozzuk meg, hogy hány folyamat fusson párhuzamosan

Data flown-n kívül (Package-en belül): MaxConcurrentExecutables (-1 = (Logikai) processzorok száma + 2)Data flown-n belül: EngineThreads. Az alapértelmezett 5, ami egy multiprocesszoros gépen megnövelhető (Adatforrásoknak és aszinkron transzformációknak kell egy-egy thread)

Page 20: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu

Teljesítmény-hangolásIrányelvek

Egyszerre a lehető legtöbb adatot olvassuk be a pipeline-ba

Csak azokat amelyekre tényleg szükség van. Select * = A lehető legkisebb helyigényű adattípust használjuk

Kerüljük a teljes adathalmazon végzett transzformációkat (sort, aggregate) (ha tudjuk)Index: Betöltés szempontjából csak a dimenzió táblákra -> jobb lookup teljesítményHasználjunk SQL Server Destination-t OLE DB helyettTöltsünk üres táblába (Partícionálás)

Page 21: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu

ÖsszefoglalásÉpítsen hatékony SSIS csomagokat!Ismerje meg alaposan az SSIS architektúrájátPárhuzamosítson!Mérje a teljesítményt (Naplózzon)És használjon egy jól bevált adattárház építési metodológiát!

Page 22: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu

További információk

Integration Services: Performance Tuning Techniqueshttp://www.microsoft.com/technet/prodtechnol/sql/2005/ssisperf.mspx

Project REAL: Business Intelligence ETL Design Practiceshttp://www.microsoft.com/technet/prodtechnol/sql/2005/realetldp.mspx

Blog bejegyzések:Jammie Thomson, Marco Russo, Alberto Ferrari, Brian Knight írásai

Magyar nyelvű irodalom:http://www.biprojekt.hu

Page 23: Kővári Attila Független BI  tanácsadó, SQL Server MVP biprojekt.hu