A módosított adatkövető rendszer alapjai

A módosított adatkövető rendszer regisztrálja az SQL Server asztalra vonatkozó műveletek beillesztését, frissítését és törlését. Ez hozzáférést biztosít a változások részletéhez egy könnyen feldolgozott relációs formátumban. A célkörnyezet változásainak alkalmazásához szükséges oszlopokra és metaadatokra vonatkozó információk módosított sorokban vannak követve, és a forrás táblázatok oszlopstruktúráját tükröző módosító táblázatokban vannak tárolva. Annak érdekében, hogy az adatfogyasztók rendszeresen hozzáférhessenek a változásokkal kapcsolatos információkhoz, az asztali értékű funkciók visszakerülnek.

Az adatfogyasztó jó példája erre a technológiára az adatok kinyerésére, átalakítására és betöltésére szolgáló alkalmazás (ETL). Az ETL alkalmazás fokozatosan lecseréli az eredeti SQL Server táblázatok változásairól az adattárolóra vagy adatátvitelre vonatkozó információkat. Bár az ábrázolás a forrás táblákat az adattárház tükröznie kell változások ezekben a táblázatokban, a technológia használata, amely frissíti a másolata az eredeti tábla nem megfelelő ebben az esetben. Ehelyett megbízható változási adatokra van szükség, oly módon strukturálva, hogy a fogyasztók alkalmazhatják heterogén céladatokra. Az SQL Serverben ezt a technológiát egy módosított adatkövetési rendszer biztosítja.

Az adatátvitel követési rendszere csak a következő kiadásokban érhető el: Enterprise, Developer and Evaluation SQL Server.

Az alábbi ábra bemutatja a módosított adatkövető rendszer fő adatfolyamát.

A módosított adatkövetési rendszer változási információjának forrása az SQL Server tranzakciós naplója. Mivel az eredeti ellenőrzött táblázatokban beszúrók, frissítések és törlések készülnek, ezeket a változásokat tartalmazó naplófájlok a naplóba kerülnek. A napló be van kapcsolva a megváltozott adatok nyomon követési folyamatába. Elolvassa a naplóadatokat, és információt ad a megfigyelt táblázathoz tartozó változtatási táblázathoz tartozó változásokról. Funkciókat biztosítanak arra, hogy felsorolják az adott tartományban lévő változótáblákban megjelenő változásokat, és az információkat szűrt eredménykészlet formájában adják vissza. A szűrt eredménykészletet általában az alkalmazási folyamat használja, hogy frissítse a forrás nézetet a külső környezetben.

Mielőtt nyomon követheti az egyes adatbázis-táblázatok módosításait, akkor explicit módon aktiválnia kell az adatbázisban található módosított adatok követési rendszerét. Ezt a sys.sp_cdc_enable_db tárolt eljárás használatával teheti meg. Amikor engedélyezi az adatbázist, a forrás táblák a sys.sp_cdc_enable_table tárolt eljárással követhetők nyomon. Ha a táblázathoz egy változásadat-nyomkövetési rendszert is tartalmaz, egy kapcsolódó változáskövetési példány jön létre, amely a változási adatokat a forrástáblába továbbítja. A nyomkövető rendszer egy példánya egy változtatási táblázatból és egy vagy két lekérdezési funkcióból áll. A nyomkövetési példány konfigurációjának részleteit tartalmazó metaadatok a cdc.change_tables metaadatváltozási követési táblákban tárolódnak. cdc.index_columns és cdc.captured_columns. Ezeket az információkat a sys.sp_cdc_help_change_data_capture stored procedure segítségével érheti el.

A nyomkövetési rendszer példányával kapcsolatos összes objektumot az aktivált adatbázis módosított adatkövető rendszere sémájában hozza létre. A nyomkövetési példány példányának érvényes objektumnévnek kell lennie, amely az adatbázisban lévő követési rendszer összes példányára jellemző. Az alapértelmezett név forrás táblázat. A hozzátartozó változtatási táblázatot a _CT kulcsszó hozzáadásával nevezik a követési rendszer példánynevére. Hogy a funkció használható lekérdezés összes említett változtatások hozzáadásával a tetején a példány neve előtag fn_cdc_get_all_changes_ nyomkövető rendszer. Ha a nyomkövetési rendszer példánya úgy van beállítva, hogy támogatja a nettó változásokat. A net_changes lekérdezési funkció is létrejön. amelyet a prefix követési rendszer példány nevének hozzáadásával nevezünk el fn_cdc_get_net_changes_.

A módosított adatkövetési rendszer változási táblázatának első öt oszlopa metaadat-oszlop. További információkat nyújtanak a regisztrált változás szempontjából. A fennmaradó oszlopok a forrástáblázat azonosított nyomon követett oszlopait tükrözik név és típus szerint. Ezek az oszlopok tárolják az ellenőrzött oszlopok adatait a forrás táblából.

A forrástáblázatban végrehajtott beillesztési vagy törlési műveletek egy sorként jelennek meg a változtatási táblázatban. A beillesztési művelet eredményeit tükröző sorban szereplő adatoszlopok tartalmazzák az oszlopok utáni értékeit. A törlési művelet eredményeit tükröző sorok adatoszlopai az oszlopok törlése előtt tartalmazzák az értékeket. A frissítési művelethez egy sor szükséges az oszlopértékekhez a frissítés előtt, és a frissítés után az oszlopok második sorában.

A változtatási táblázat minden egyes sorában további metaadatok is találhatók, amelyek lehetővé teszik a változtatási műveletek értelmezését. A __ $ start_lsn oszlop azonosítja a tranzakciónapló számát a változáshoz társított naplóban (LSN szám). Az állandó LSN azonosítja mind az azonos tranzakcióban végrehajtott változtatási műveleteket, mind a tranzakciók sorrendjét. Ha ugyanazon tranzakcióban más változásokat szeretne megrendelni, használhatja a __ $ seqval oszlopot. Az __ $ művelet oszlopban a változáshoz társított művelet írása: 1 = törlés, 2 = beillesztés, 3 = frissítés (forrás kép) és 4 = frissítés (művelet utáni kép). A __ $ update_mask oszlop egy változó bitmaszk, ahol minden egyes bit minden követett oszlopnak felel meg. A beillesztési és törlési műveletek beírása esetén a frissítési maszkban lévő összes bit mindig beállítódik. A frissítési műveleti sorok csak a megváltozott oszlopoknak megfelelő biteket tartalmazzák.

A módosított adatkövető rendszer érvényességi ideje az adatbázis számára az az időpont, amikor a nyomkövetési példányok számára rendelkezésre állnak a változási adatok. Az érvényességi idő az adatbázis-táblázat első követési példányának létrehozásával kezdődik, és a mai napig folytatódik.

A változtatási táblázatokban tárolt adatok kontrollálhatatlanul növekedni fognak, hacsak rendszeresen és szisztematikusan nem csengenek az adatok. A módosított adatkövetési rendszer tisztításának feladata a kötelező adatszűrés politikája a megőrzési időtartam lejártát követően. Először is az érvényességi idő alsó végpontját mozgatja az időbeli korlátozásoknak megfelelően. Ezután a lejárt változótáblázat bejegyzései törlődnek. Alapértelmezés szerint ez az adat három napig tárolódik.

A felső végpontnál, mivel a nyomon követési folyamat rögzíti az egyes új változási információs csomagokat, új bejegyzéseket adnak hozzá a cdc.lsn_time_mapping-hez minden olyan tranzakcióhoz, amelyre vonatkozóan vannak bejegyzések a változtatási táblázatban. A leképezési táblázatban a tranzakció regisztrációs száma a naplóban és az ügylet elkötési ideje (a start_lsn és a tran_end_time oszlopok). A cdc.lsn_time_mappingben található maximális LSN érték. az érvényességi időszak felső végpontját jelenti. A megfelelő elkötési időt alapértékként használjuk, amelyből az adatgyűjtés a visszatartási periódus után kiszámítja az alsó végpont új értékét.

Mivel a nyomon követési folyamat a tranzakciónaplóból származó változásokról információt tartalmaz, természetesen természetes késlekedés van a forrás táblában rögzített változás és a változás rögzítésének időpontjában. Bár ez a késleltetés általában kicsi, fontos, hogy ne feledje, hogy a változási információk nem állnak rendelkezésre, amíg a nyomkövetési folyamat a vonatkozó naplóbejegyzéseket feldolgozza.

Bár rendszerint az adatbázis és az egyedi nyomkövetési példány érvényességi ideje azonos, néha ez nem így van. A nyomkövetési példány érvényességi ideje akkor kezdődik, amikor a nyomkövetési folyamat felismeri a követési példányt, és elkezdi írni a kapcsolódó változásokat a változtatási táblázatban. Ennek eredményeként, ha a nyomkövetési példányok különböző időpontokban kerülnek létrehozásra, mindegyiknek megvan a saját alsó végpontja. Az eredményhalmaz start_lsn oszlopa, amelyet a sys.sp_cdc_help_change_data_capture függvény visszaküld. az egyes nyomkövetési példányok aktuális alsó végpontját mutatja. Amikor a tisztítási folyamat törli a változás táblázatok bejegyzéseit, az összes nyomkövetési példához tartozó start_lsn értékeket állítja be, hogy tükrözze az új alsó végpontot minden egyes rendelkezésre álló változási információhoz. Csak azok a nyomkövetési példányok állíthatók be, amelyek aktuális start_lsn értéke kisebb, mint az új alsó végpont. Az idő múlásával, ha nem hoznak létre új nyomkövetési példányokat, az egyes példányok érvényességi ideje fokozatosan egybeesik az adatbázis érvényességi idejével.

Az érvényességi idő a változásadatok fogyasztói számára fontos, mivel a kérés lekérési időtartamát teljes mértékben be kell tartani a nyomkövetési példány módosított adatkövető rendszerének érvényességi idejéhez. Ha a helyreállítási intervallum alsó végpontja átfedésben van az érvényességi idő alsó végpontjával, akkor a túlságosan agresszív tisztítás miatt a változásokkal kapcsolatos információk elveszthetők. Ha az extrakciós intervallum felső végpontja átfedi az érvényességi idő felső végpontját, a nyomkövetési folyamatnak nincs ideje feldolgozni az adatokat az extrakciós intervallum által képviselt időben, ezért lehetséges a változásokkal kapcsolatos információk elvesztése is.

sys.fn_cdc_get_min_lsn funkció használni ahhoz, hogy a jelenlegi minimális LSN számok például nyomon követésére és sys.fn_cdc_get_max_lsn funkció használni ahhoz, hogy a jelenlegi maximális LSN számokat. A módosított adatkövető rendszer lekérdezési funkciói sikertelenek lesznek a változási adatokra vonatkozó kéréssel, ha az LSN-számok meghatározott tartománya meghaladja a két LSN-számot.

A mögöttes forrás táblázatok oszlopváltozásának feldolgozása meglehetősen nehéz kérdés az adatáramlók számára. Míg a felvételét változás adatrögzítés a forrás tábla nem tiltja ezt a fajta DDL-változás nyomon követési rendszer csökkenti azok hatását a fogyasztókra miatt változhatatlansága az eredmény a visszaadott az API-felület, még az alapja az eredeti tábla szerkezete megváltozik. Egy fix oszlopú struktúra is megjelenik az alapváltozási táblázatokban, amelyekhez a lekérdezési funkciókat elérik.

Támogatására asztal változásokat, amelynek rögzített szerkezet az oszlop, a folyamat nyomon követése, amely felelős a táblázat kitöltése változik, nem veszi figyelembe az új, nem-specifikus nyomkövető oszlopok, ha a forrás tábla engedélyezve változás adatrögzítés. Ha a felügyelt oszlop törlõdik, a null bejegyzések a megfelelõ változás rekordokban vannak megadva. De ha a meglévő adattípus oszlop megváltozik, ez a változás a változtatási táblázatban jelenik meg, hogy megakadályozza az adatvesztést a monitorozott oszlopokban. A nyomkövetési folyamat a megfigyelt táblázat oszlopszerkezetében végrehajtott változásokat is elküldi a cdc.ddl_history táblázatba. Azok a fogyasztók, akik figyelmeztetni kívánják a felülről lefelé irányuló alkalmazásokhoz szükséges módosításokat, a sys.sp_cdc_get_ddl_history tárolt eljárást használják.

Általában az aktuális nyomkövetési példány továbbra is fenntartja a formátumát, amikor a DDL-változásokat a megfelelő forrás táblázathoz alkalmazzák. Az új oszlopszerkezetet tükröző táblázat azonban létrehozhat egy követési példányt. Ez lehetővé teszi a nyomkövetési folyamat számára, hogy két változat táblázatban változó forrás táblázatot jelenítsen meg, amelyek különböző oszlopstruktúrákat tartalmaznak. Így, miközben egy változótáblázat adatokat szolgáltat az aktuális alkalmazásokhoz, a második adatforrásként szolgál az olyan fejlesztési környezet számára, amely az adatokat az új oszlopból fogadja. Ha lehetővé teszi, hogy a nyomkövető eszköz egyidejűleg töltse ki mindkét változat táblát, az információ elvesztése nélkül elérheti az egyik formátumról a másikra történő átmenetet. Ez akkor fordulhat elő, ha a két nyomkövető rendszer időbeli skálája átfedésben van a megváltozott adatokkal. A költöztetés befejezése után a régi nyomkövetési példány törölhető.

Egyetlen forrás táblázattal egyidejűleg legfeljebb két példány követhető a követéshez.

Kapcsolódó cikkek