Uvođenje paralelizma u SSIS paket – Balanced Data Distributor

Objavljeno: 17-01-2014 | Autor: Tatjana Mađer | Kategorija: Optimizacija, SSIS

Ознаке: , ,

0

Balanced Data Distributor (BDD) je SSIS komponenta koja omogućava jednostavan način da se iskoriste multi-procesorski serveri uvođenjem paralelizma u data flow paketa.

BDD se prvi put pojavljuje sa verzijom SQL Servera 2008. Ne dolazi podrazumevano sa instalacijom SQL Servera, već je neophodno instalirati ga posebno (instalacija se može preuzeti sa sledećeg link-a). Nakon instaliranja, potrebno ga je ručno dodati da bi se pojavio u listi data flow transformacija i to na sledeći način: u Toolbox-u uraditi desni klik na Data Flow Transformations i izabrati Choose Items->SSIS Data Flow Items tab gde je potrebno čekirati Balanced Data Distributor i potvrditi sa OK.

BDD ulazni tok podataka deli na približno jednake delove do izlaza, ma koliko izlaza iz njega postojalo (ukoliko postoje 3 izlaza, približno 1/3 slogova će biti sprovedena na svaki od njih). Efikasan je zbog toga što ne preusmerava pojedinačne slogove, već radi sa buffer-ima podataka.

Sve transformacije koje se nalaze posle BDD-a u data flow-u rade isti posao istom brzinom. Izbalansiran je i sinhronizovan pa ukoliko bi neka od transformacija ili destinacija koja sledi BDD bila sporija od ostalih, ostali tokovi bi se usporili, zbog čega je najbolje da posle BDD-a slede identične komponente na svim izlaznim tokovima.
BDD ne radi nikakvu suštinsku transformaciju, za razliku od većine komponenti. Njegova uloga je obezbeđivanje paralelizma. Kada postoje nezavisni segmenti data flow-a, SSIS može da distribuira rad na više niti i time BDD obezbeđuje jednostavan način za kreiranje nezavisnih segmenata. Sadrži predefinisanu logiku po kojoj preraspodeljuje slogove na različite izlaze (round robin algoritam).

Primena BDD-a:
Korišćenje ove komponente zahteva poznavanje hardvera na kome sistem funkcioniše, performanse data flow-a i prirodu podataka. BDD je efikasan u sledećim situacijama:

  • kada postoji veliki broj podataka koji prolaze kroz DF
  • kada podaci mogu biti pročitani brže nego što DF može da ih obradi (najčešće zbog transformacija koje se obavljaju ili zbog upisivanja u destinacionu tabelu)
  • kada ne postoji redosled izvršavanja u okviru DF-a.

BDD nema primenu ukoliko se usko grlo nalazi u source komponenti, i ovo se mora rešiti paralelizacijom ovih komponenti. Ukoliko je usko grlo u samoj transformaciji ili u destination komponenti, BDD može naći svoju primenu i unaprediti performanse paketa.

Kada su u pitanju transformacije, potrebno je iskopirati više puta istu transformaciju, staviti pre nje BDD i tako omogućiti paralelizaciju rada komponenti za transformaciju.


Pojava uskog grla kod destinacije rešava se stavljanjem većeg broja destinacija posle BDD-a. Kada je baza distribuirana na više diskova, performanse u ovom slučaju su sasvim zadovoljavajuće. Uslov za ovo je da destinaciona tabela nema podignute nikakve indekse.


Kada nije podržano postojanje više destinacija u DF-u, rešenje je nakon BDD-a i transformacija spojiti sve u jednu vezu unijom.

BDD ne zahteva praktično nikakva podešavanja prilikom korišćenja. Upotreba je jednostavna i svodi se na prevlačenje u data flow i njegovo povezivanje sa komponentama koje predstavljaju ulaz i izlaze.