Analysis Services 2008 újdonságok - Adatmenedzsment nézetek
Az Analysis Services 2008 Adatmenedzsment nézetei (Data Management View, vagy rövidítve DMV) lehetőséget biztosítanak arra, hogy lekérdezzük az OLAP adatbázis szerkezetét, vagy választ kapjunk olyan kérdésekre, mint:
Mennyi ideig futott az utolsó lekérdezés, ki futatta, mennyi CPU-t használt, mi volt a lekérdezés szövege, milyen objektumokat érintett, stb. De olyan kérdésekre is választ kaphatunk, hogy melyik mutatószám-csoport (measure group) igényel több aggregációt.
Az adatmenedzsment nézetek - hasonlóan a relációs nézetekhez - olyan objektumok, amelyeket le lehet kérdezni egy Select utasítással, és amelyek valamilyen más objektumokat (pl. táblákat) kérdeznek le. (Úgy fest, mintha az XMLA discover parancsot hívná meg csak táblázatos formában adja vissza az eredményt)
Milyen adatmenedzsment nézeteket tartalmaz az Analysis Services?
Először is derítsük fel azt az sémát, ami az adatmenedzsment nézetek információit tartalmazza:
Select * from $system.dbschema_tables
where TABLE_SCHEMA = '$system'
order by Table_name
A fenti lekérdezés visszaadja, hogy milyen adatmenedzsment nézetek léteznek a szerveren (több mint 50 van belőlük!) Az első ránézésre SQL select-nek tűnő lekérdezés valójában nem az. Sőt még nem is MDX, ami az Analysis Services lekérdező nyelve, hanem DMX. (A DMX az adatbányász motor lekérdező nyelve)
Amikor e cikket írom még rendkívül kevés információ található e témáról, (PL books online-ban semmi, pedig már a véglegeset olvasom), úgyhogy amit most írok, azt kezelje kritikusan. Sokkal több információra lenne szükség, ahhoz a miértekre is választ tudjak adni, úgyhogy egyelőre legyen elég a hogyan.
Egyébként azt hallottam a fejlesztőktől, hogy sokkal egyszerűbb volt a Data Mining lekérdező környezetét alkalmassá tenni az adatmenedzsment nézetek lekérdezésére, mint az Analysis Services-ét lett volna.
Még egy megjegyzés: Adatmenedzsment nézetnek nevezem ezeket a rendszerinformációkat visszaadó nézeteket, mert így olvastam róluk először. A név egyébként rendkívül zavaró mert az SQL Server-nek (a relációs motornak) is van DMV-je, csak ott Dynamic Management View -t jelent, és nem összekeverendő az Analysis Services Data Management view-jával.
No de kanyarodjunk vissza a fenti lekérdezéshez. Ez a lekérdezés visszaadj az összes adatmenedzsment nézet nevét. Mivel több, mint 50 van belőlük, ezért kiválogattam azokat, amelyek első ránézésre fontosak lehetnek, és ezekről írok egy pár szót.
(Ezek az adatmenedzsment nézetek egyébként ID-kon keresztül kapcsolódnak egymáshoz, de nem dzsoinolhatóak össze. Ne felejtse el, hogy DMX-ben vagyunk, nem MDX-ben, vagy TSQL-ben)
A erőforrás monitorozás kellékei: Az adatmenedzsment nézetek
A $SYSTEM.DISCOVER_Sessions Data Management View tartalmazza például az adott session utoljára futtatott MDX lekérdezését, a felhasználó nevét, de a $SYSTEM.DISCOVER_Commands view-n keresztül eljuthatunk a $SYSTEM.DISCOVER_Command_Objects view-hoz amiben megtalálhatjuk, hogy mennyi CPU időt használt az adott lekérdezés.
Kik használják az OLAP-ot?
Engem többek között az érdekelt, hogy vajon az adatmenedzsment nézetek alkalmasak-e arra, hogy belőlük felállítsak egy olyan statisztikát, hogy kik, mikor milyen adtakockákat használtak, milyen MDX lekérdezéseket küldtek a szerver felé, és azok mennyi ideig futottak, stb.
Ezek az információk mind-mind megtalálhatóak a Data Management View-kban, csak éppen addig, amíg az adott session él. Ha azt bezárják (kilép a felhasználó), akkor az információk elvesznek.
Mikor lett utoljára felösszegezve az adatkocka?
A másik dolog ami kapásból eszembe jutott, az az volt, hogy vajon lekérdezhető-e, hogy mikor lettek utoljára felösszegezve a kockák. Ez az információ azért kell, mert a riportokra szeretem kiírni, hogy mikori adatokat tartalmaz a kocka. Így a felhasználó látja, hogy mikor frissült utoljára a kocka:
Select
CUBE_NAME,
LAST_DATA_UPDATE
from $system.mdschema_Cubes
where CUBE_SOURCE = 1
Eddig SSAS tárolt eljárást kellett írnunk, vagy az MDSCHEMA_CUBES rowset-et kellett lekérdeznünk valamilyen programozási nyelven keresztül, ha ki akartuk írni a riportokra, hogy mikor frissült utoljára az adatkocka. Most újra megjelent egy reménysudár, hogy egyszerűbben meg fogjuk tudni tenni mindezt. A hogyan még kérdéses, de majd erre is találunk megoldást.
Adatmenedzsment nézetek információinak életciklusa
Vannak nézetek - és ezek vannak többségben - amelyek addig mutatják az információkat, amíg az adott session él, és vannak olyan nézetek, amelyek a szerviz indulása óta gyűjtik és tárolják az infókat. (ilyen például a $SYSTEM.DISCOVER_Object_activity, amelyet fel fogunk tudni arra használni, hogy megállapítsuk, melyik measure group-nak kell több aggregációt terveznünk, ahhoz, hogy gyorsíthassunk a lekérdezéseken)
Az adatok eltérő életciklus hossza miatt azonban nehezen fogunk tudni olyan információbázist létrehozni, amelyből meg tudnánk állapítani, hogy tegnap este 7 órakor miért volt lassú a rendszer.
Összefoglalva: Jelen pillanatban még rendkívül kevés információnk áll rendelkezésre a témával kapcsolatban, de az már tisztán látszik, hogy nagyon nagy segítséget fognak jelenteni ezek az adatmenedzsment nézetek (akár üzemeltetünk, akár fejlesztünk) Még csak annyit kéne megoldaniuk a redmondi fejlesztőknek, hogy az adatmenedzsment nézetek információit historikusan is elérhessük. Persze a hab a tortán az lenne, ha mindezt bepakolnák egy OLAP kockába, amelyen keresztül idősorosan elemezhetnénk mi történt az OLAP adatkockákban az elmúlt időszakban. De ez még várat magára.
Felhasznált irodalom:
- Vidas Matelis: MS SQL Server Analysis Services 2008 - November CTP quick review
- Darren Gosbell: SSAS 2008: Data Management Views
- Vidas Matelis: SSAS 2008 CTP6 - new DMV $SYSTEM. DISCOVER_ OBJECT_ ACTIVITY
Kővári Attila - BI projekt
Új hozzászólás