Optymalizacja warstwy dostępu do danych w aplikacjach korzystających z odwzorowań obiektowo-relacyjnych
Abstrakt (PL)
Współczesne aplikacje są budowane za pomocą obiektowych języków programowania. Do składowania danych trwałych najczęściej stosuje się jednak bazy danych o relacyjnym modelu danych, który istotnie różni się od obiektowego. Utrwalanie danych aplikacji w bazie danych wymaga więc niebanalnego odwzorowania obiektów. Chociaż takie odwzorowanie można zaprogramować od nowa na użytek danej aplikacji, warto jednak także rozważyć zastosowanie gotowych bibliotek do odwzorowania obiektowo-relacyjnego (ORM, Object-Relational Mapping).Funkcjonalność istniejących systemów ORM jest istotnie mniejsza niż dostępnych systemów zarządzania bazami danych (SZBD). Programista, który chce skorzystać z zaawansowanych funkcji SZBD, musi to zrobić z pominięciem warstwy ORM, co burzy architekturę aplikacji. Uważamy, że tak nie musi być.Celem niniejszej rozprawy doktorskiej jest zbadanie możliwości zaoferowania zaawansowanych funkcji systemów zarządzania bazami danych na poziomie warstwy odwzorowania obiektowo-relacyjnego. Cel ten został osiągnięty. Wykazaliśmy też, że ORM może realizować odpowiednią funkcjonalność nawet wtedy, gdy nie ma jej w użytkowanym SZBD. Zaawansowanąfunkcjonalnością SZBD rozważaną w niniejszej rozprawie jest realizacja zapytań rekurencyjnych zgodnych ze standardem SQL:1999. Przedstawiliśmy jej założenia, prototypową implementację oraz wyniki testów wydajnościowych.Do budowy prototypu wybrano Hibernate, tj. jedno z najpopularniejszych narzędzi ORM dla Javy.
Abstrakt (EN)
Contemporary applications are developed in object-oriented programming languages.However, persistent data storage is usually realized by databases with the relational data model that significantly differs from the object-oriented data model.Therefore, persisting application data in a database requires a non-trivial mapping. Although such a mapping can be coded from scratch for a given application, the usage of off-the-shelf object-relational mapping (ORM) libraries is worth consideration.The functionality of existing ORM middleware is notably smaller than the functionality of available database management systems (DBMS). An application programmer who wants to use sophisticated features of a DBMS is forced to bypass the ORM layer.This obviously ruins the architecture of the application.In our opinion it is not necessary.The goal of this thesis is to examine the possibility to offer advanced functions of database management systems at the level of object-relational mapping middleware.This goal has been reached.We have also shown that ORM layers can also offer a particular DBMS functionality even when the underlying DBMS does not support it.The advanced DBMS functionality considered in this thesis is the execution of SQL:1999 recursive queries.We have presented the concept of this feature, a prototype implementation and results of thorough performance evaluation.The prototype has been realized as an extension to Hibernate, i.e.\ probably the most popular object-relational mapping library for Java.