Bakalářská práce

Multiplatform data filtering library

Daniel Ilčin
Anotace

Cieľom tejto práce je vytvoriť knižnicu na spravovanie dát, ktorá je vysoko modulárna, ľahko rozšíriteľná a ľahko implementovateľná na viacerých platformách. Pre dosiahnutie rozšíriteľnosti a modularity využíva táto knižnica návrhové vzory ako napríklad vzor Repository a vzor UnitOfWork. Využitím týchto vzorov sa medzi prvkami knižnice vytvárajú voľné prepojenia, čo umožňuje jednoduchú modifikáciu alebo výmenu prvkov.

Abstract

This thesis aims to create a data management library that is highly modular, easy to extend, and easily implementable over multiple platforms with good performance. In achieving extendability and modularity, this library utilizes design patterns such as the Repository pattern and UnitOfWork pattern, amongst others, through which it achieves loose coupling between elements comprising the library, making it trivial to modify or exchange its elements.

Klíčová slova
Java JavaScript Kotlin MongoDB
Zadání práce

Digital transformation demands a highly efficient platform for project work, business intelligence and enterprise insights. Unfortunately, the tool that many of us use to do the actual work - spreadsheets - hasn’t changed significantly since the 80s. Making matters worse, the business data are usually scattered all over various tools.

Legacy tools are less valuable for today’s modern business because the way teams work has dramatically shifted over the last three decades. In just a few short years, millions of workers have started to collaborate by utilizing some of the many different tools available. However, using multiple tools and different apps is problematic.

The goal of a newly created open-source project management tool is to provide a single solution to support current business models. This means providing various views of the same data to allow smooth communication, prevent duplication of effort and allow moving work forward in a seamless manner.

The goal of this thesis is to develop a data filtering library, that:

  • works with any supported user data
  • can be used both on backend and frontend (i.e. supports usage from Java and JavaScript)
  • can be easily maintained and extended
  • provides a reasonable performance
  • supports complex comparisons between user data fields (i.e. not just $data > constant, but also $data1 > $data2)

One complex problem is the ability to pass in data structures from both supported languages (Java and JavaScript), and to filter data based on their visual representation. The date data type provides a major challenge. For example, a date is stored as ISO string or milliseconds since epoch in the database. While users might have a custom formatting that displays the date as quarters, e.g. 2020 Q2. Such a representation contains string ‘Q2’. The date therefore contains ‘Q2’.

Also performance should be considered. As a baseline, the expectation is to filter 10,000 records in one second on a single core virtual CPU.

To allow multi platform support with the ability to update the source code only once, the code should be written in Kotlin.

The student needs to run a proof of concept of cross compiling the Kotlin code, using language native collections in the source code, and to call native JS libraries. Next, the student needs to develop the needed filtering code, verify its performance and search for possible improvements using a profiler.

Práce zkontrolována:
21. 12. 2021 08:16, Mgr. Martin Večeřa, učo 72839
Jazyk práce
angličtina angličtina
Termín obhajoby
10. 2. 2022
Práce byla úspěšně obhájena

Vedoucí

Mgr. Martin Večeřa, učo 72839
abs FI MU

Oponent

RNDr. Adam Rambousek, Ph.D., učo 60380
KSUZD FI MU

Masarykova univerzita Fakulta informatiky
Studijní program
Aplikovaná informatika
  • Přidání souboru

    Soubor nebo složku lze nahrát pomocí tlačítka Přidat.
  • Další operace se soubory

    Podrobnosti lze zjistit označením příslušného řádku.
  • Pohled pro experty

    Pro častou práci je možné zvolit režim Více možností.
  • Vyhledávání souborů

    Vyhledávaný výraz můžete zadat přímo do adresního řádku.
  • Rychlý přístup k souborům

    Pomocí funkce Nedávné je možné se rychle vrátit k právě prohlíženým souborům. Oblíbené soubory je také možné označit Hvězdičkou.