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

Preview:

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

Kővári AttilaFüggetlen BI tanácsadó, SQL Server MVPwww.biprojekt.huKovari.Attila@biprojekt.hu

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

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

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

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

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

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

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.

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)

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)

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.

É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ó!

É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

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

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

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

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ó)

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

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ó

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)

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)

Ö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!

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