Rocnikovy projekt
Student: Artem Protas,
protas1@uniba.sk
Supervisor: RNDr. Jana Kostičová, PhD,
M-256
, kosticova (at) dcs.fmph.uniba.sk
Meno projektu
Monitorovanie zmien dát v úložisku Apache Iceberg
Specifikacia projektu
Cieľom projektu je vytvoriť systém na monitorovanie zmien dát v úložisku Apache Iceberg. Parametre monitorovania budú vychádzať z metadát, ktoré Apache Iceberg automaticky ukladá k jednotlivým časovým verziám dát (snapshotom). Systém bude implementovaný ako web aplikácia. Bude zobrazovať priebeh dátových zmien v čase pomocou grafu na základe zvolených parametrov (dátová sada, autor zmeny, druh zmeny, ..). Takisto umožní zobrazenie detailu zmien pre zvolený čas / časový úsek.
Zimný semester
Špecifikácia funkcionality, definícia parametrov monitorovania.
Návrh architektúry a výber technológii.
Základná infraštruktúra, testovacie nasadenie.
Pripojenie k zvolenej inštancii Apache Iceberg a výpočet parametrov (vlastných metadát) pre vizualizáciu.
V prípade potreby príprava testovacích dát.
Letný semester
Vizualizácia podľa definovaných parametrov a pripavených metadát.
Zobrazenie časového priebehu jednotlivých dátových zmien pomocou grafu.
Zobrazenie detailu pre konkrétny čas / časový úsek.
Report
Zimny report
Počas zimného semestra som sa venoval analýze Apache Iceberg a jeho metadát, najmä snapshotov a možností ich využitia na monitorovanie zmien dát. Navrhol som funkcionalitu systému, základnú architektúru aplikácie a vybral vhodné technológie. Implementoval som pripojenie k lokálnemu katalogu Apache Iceberg a výpočet vybraných parametrov z metadát. Zároveň je k dispozícii základný frontend, pomocou ktorého je možné overiť funkcčnosť API servera.
Letny semester
Počas letneho semestra som sa zameral na dokončenie použivateľskeho rozhrania a rozširenie funkcii na monitorovanie zmien dat v uložisku Apache Iceberg. Webovu aplikaciu som rozdelil do prehľadnych kariet, čo zjednodušuje orientaciu.
Jedna z kariet služi na pripojenie k vybranej inštancii a katalogu Apache Iceberg. Použivateľ tu zada URL adresu katalogu, prihlasovacie udaje a nazov tabuľky. Backend aplikacie sa nasledne pomocou tychto udajov spoji s Iceberg API. Po uspešnom pripojeni začne system sťahovať metadatove subory vo formate JSON. Tieto subory obsahuju kompletnu historiu a štrukturu celej databazy.
Ďalšie karty su určene na samotne zobrazovanie datovych zmien v čase. Datove zmeny sa extrahuju tak, že backend prechadza celu historiu snapshotov. Každy snapshot v Icebergu predstavuje stav databazy v konkretnom čase. Aplikacia čita metadatove subory, kde hľada polia ako snapshot-id, timestamp-ms a summary. V poli summary zisťuje presny typ operacie, napriklad append, replace alebo delete. System tieto JSON data analyzuje, spočita pridane či zmazane riadky a subory a pretransformuje ich do štrukturovaneho formatu pre frontend.
Na frontendovej karte sa tieto očistene data posielaju do knižnice na vykresľovanie grafov. Graf zobrazuje časovu os, kde body predstavuju jednotlive snapshoty (commity). Použivateľ može na grafe vidieť krivky rastu objemu dat alebo stĺpce počtu zmien. Kliknutim na konkretny bod alebo vyberom časoveho useku sa spusti detailny filter. Ten poskytne podrobne štatistiky o vybranom commite, napriklad presny počet zmenenych bajtov.
Veľmi dôležitou časťou aplikacie je karta s nazvom SQL Workbench. Tato karta funguje ako interaktivna textova konzola na pisanie prikazov. Použivateľ sem može napisať SQL dopyty, ako su INSERT, UPDATE alebo DELETE. Po stlačeni tlačidla na spustenie sa dopyt odošle cez backend priamo do Iceberg uložiska. Iceberg dopyt spracuje, vykona zmeny v datach a automaticky vytvori novy snapshot.
Hlavna vyhoda tohto prepojenia kariet spočiva v okamžitej spatnej vazbe. Použivateľ spusti SQL prikaz v SQL Workbench a nasledne sa prepne na vizualizačne karty. Aplikacia na pozadi znova načita najnovši JSON subor s metadatami z uložiska. Graf sa okamžite prekresli a použivateľ vidi novy bod na časovej osi, ktory vytvoril.