Moduł mapowania danych systemu aSISt

Moduł mapowania danych systemu aSISt

Klient: Użytkownicy systemu aSISt

Założenia

Elastyczny mechanizm deklaratywnego importu danych dla różnego typu sprawozdań systemu aSISt oparty o definiowane wyrażenia obliczające raportowane dane (mapujące zbiór źródłowy na komórki sprawozdania określonego typu). Uniezależnienie od formatu danych wynikającego z typu sprawozdania. Obsługa danych źródłowych zapisanych w postaci tabelarycznej o dowolnym schemacie. Wsparcie dla formatów CSV i Excel 97. Zasilanie danymi zarówno tabel o stałej jak i zmiennej strukturze (tabele listowe i wymiary własne). Oparcie zasilania o zwięzły i jednocześnie ekspresywny język mapowania danych. Definiowanie zbiorów wyrażeń w przestrzeni sprawozdania. Zarządzanie i przechowywanie zbiorów wyrażeń przygotowanych w oparciu o różne taksonomie. Wsparcie dla archiwizacji, eksportu i importu wyrażeń mapujących.

Rozwiązanie

Głównym wyzwaniem dla modułu mapowania danych było stworzenie języka umożliwiającego precyzyjne wskazanie danych dla każdej zasilanej wartości pozwalającego wykonać dodatkowe operacje modyfikujące (operacje arytmetyczne, agregaty). Język ten z jednej strony musiał być notacyjnie i modelowo na tyle prosty, aby umożliwić definiowanie wyrażeń mapujących małe zbiory zwykłym użytkownikom w sposób niewymagający szczegółowego poznania wszystkich jego aspektów. Z drugiej strony musiał dawać wystarczającą ekspresywność dla uzyskania systemu funkcjonalnie pełnego w nietrywialnych przypadkach.

Ważnym aspektem było również wsparcie w procesie zasilania tabel o rozszerzalnej strukturze gdzie ilość danych jest zmienna i nie może być określona w czasie przygotowywania wyrażeń mapujących. Rozszerzenie języka o wyrażenia grupujące pozwoliło na wykorzystanie tego samego mechanizmu w sposób elastyczny dla ewentualnych potrzeb użytkownika.

Ważnym problemem stała się również konieczność przetworzenia dużych zbiorów danych źródłowych w relatywnie krótkim czasie. Dzięki zapożyczonej z koncepcji strumieniowych baz danych metodzie przetwarzania danych w locie udało się znacznie ograniczyć zarówno złożoność pamięciową jak również czas całego procesu zasilania. Ilość używanej pamięci w czasie procesu zasilania jest zależna od samych danych jednak znacznie mniejsza od wielkości zbiorów. Dodatkowo moduł częściowo zrównolegla przetwarzanie, co daje odczuwalne korzyści przy popularnych procesorach wielordzeniowych.

Z perspektywy użytkownika stającego przed koniecznością stworzenia wyrażeń mapujących dla sprawozdania ważne było umożliwienie edycji wyrażeń w sposób modelowo zbliżony do samego sprawozdania. W tym celu stworzono edytor o strukturze sprawozdania gdzie poszczególne komórki zamiast danych zawierają odpowiadające im wyrażenia mapujące.

Moduł pozwala zatem na łatwe przetworzenie danych o wstępnie przygotowanej strukturze przez mało zaawansowanego użytkownika, jak również szybkie, bardziej złożone przetwarzanie dużych ekstraktów ze źródłowych baz danych o dowolnej strukturze na średniej klasy komputerach biurowych.

Technologia

Aplikacja została zrealizowana w Javie 6. Aplikacja została oparta o kontener Spring Framework. Wspierane systemy bazodanowe to Oracle 9i i DerbyDB. Do mapowania relacyjno-obiektowego wykorzystany został Hibernate. Do parsowania wyrażeń mapujących użyto biblioteki ANTLR.