Analyzing Data Lineage in Database Frameworks
Analýza datových toků ve databázových systémech
diploma thesis (DEFENDED)

View/ Open
Permanent link
http://hdl.handle.net/20.500.11956/110206Identifiers
Study Information System: 206786
Collections
- Kvalifikační práce [11349]
Author
Advisor
Referee
Hnětynka, Petr
Faculty / Institute
Faculty of Mathematics and Physics
Discipline
Artificial Intelligence
Department
Department of Distributed and Dependable Systems
Date of defense
16. 9. 2019
Publisher
Univerzita Karlova, Matematicko-fyzikální fakultaLanguage
English
Grade
Good
Keywords (Czech)
dátové toky, statická analýza programu, Java frameworkyKeywords (English)
data lineage, data flow visualization, static program analysis, Java frameworksInformačné systémy často vo svojej implementácií využívajú už existujúce frameworky a knižnice. Dôležitou vlastnosťou takýchto systémov sú ich dátové toky. Dáta sú načítané zo zdrojového systému (napríklad databáze), pokračujú cez aplikačný kód a zapísané sú do ďalšieho, cieľového systému. Ako súčasť práce sme implementovali nástroj Java Resolver schopný získavať dátové toky Java aplikácií. Program využíva existujúcu knižnicu Symbolic analysis library, ktorá je shopná počítať dátové toky jednoduchých Java aplikácií. Ako zdrojové a cieľové systémy však knižnica rozpoznáva iba JDBC a I/O API. V našom riešení sme navrhli zmenu architektúry knižnice, aby bola jednoducho rozšíriteľná pomocou pluginov, ktoré môžu pridať podporu pre nové frameworky. Tieto pluginy sme implementovali pre niekoľko frameworkov (Spring JDBC, MyBatis a Kafka). Naše testy ukazujú, že tento prístup môže byť v praxi využiteľný. 1
Large information systems are typically implemented using frameworks and libraries. An important property of such systems is data lineage - the flow of data loaded from one system (e.g. database), through the program code, and back to another system. We implemented the Java Resolver tool for data lineage analysis of Java programs based on the Symbolic analysis library for computing data lineage of simple Java applications. The library supports only JDBC and I/O APIs to identify the sources and sinks of data flow. We proposed some archi- tecture changes to the library to make easily extensible by plugins that can add support for new data processing frameworks. We implemented such plugins for few frameworks with different approach for accessing the data, including Spring JDBC, MyBatis and Kafka. Our tests show that this approach works and can be usable in practice. 1