Nativní podpora vlastních analytických funkcí v PostgreSQL - Špecht, Pavel; Pavel Špecht (České vysoké učení technické v Praze, 2020)
Hlavní téma práce spočívá v nalezení způsobu, jak vytvořit window funkce v procedurálním jazyce PL/pgSQL, který je součástí databázového systému PostgreSQL. Nejdříve je představen koncept agregačních a window funkcí doplněný o jejich rozdíly a společné vlastnosti. Ve zdrojových kódech procedurálního jazyku se jsou identifikovány části, pomocí kterých se obecně funkce zpracovávají. Znalosti interních mechanismů je následně využito při tvorbě rozhraní umožňující operace s window funkcemi. Využívá se zde spojení několika již existujících vzorů, které ve výsledku umožní předání objektu obsahujícího potřebné informace na místa, kde se window funkce vytváří. Pro práci s tímto objektem je připravena sada funkcí sloužící jako prostředník mezi interpretem jazyku PL/pgSQL a tělem vlastní window funkce. V závěrečné části práce se porovná rychlost zpracování dotazu funkce v jazyce PL/pgSQL s ostatními existujícími možnostmi, jak lze v systému PostgreSQL window funkci vytvořit. Více než dvojnásobná rychlost zpracování dotazu oproti "konkurenční" variantě indikuje nejen splnění jednoho z hlavních cílů, ale i konkurenceschopnost rozhraní. Pozitivní výsledky testů ukazují, že by mělo smysl rozhraní realizovat, neboť by bylo v praxi použitelné.

The main topic of this thesis can be considered as finding the way, how to create window functions in the procedural language PL/pgSQL, which is part of the database system PostgreSQL. Firstly, aggregate and window functions are described with their differences and common characteristics included. Secondly, key parts of the procedural language, responsible for function processing in general, are identified. The system knowledge allows the author to create interface managing window functions. Combination of several existing patterns provides access from the PL/pgSQL function body to the object, which bears necessary information. Set of functions, used as an intermediary between the PL/pgSQL interpreter and a window function body, is prepared to operate with the mentioned object. Lastly, interface creation is described along with performance comparison of custom window function based on SQL query with other existing possibilities of creating window function in PostgreSQL. More than twice faster query processing against "rival" option indicates a fulfilment of the thesis' goal. Moreover, a competitiveness of the interface was achieved. Promising test results imply the usability of possible interface.
Native support of custom analytics functions for PostgreSQL
Keywords: implementace rozhraní; window funkce; PL/pgSQL; PostgreSQL; procedurální jazyk; porovnání rychlostí zpracování dotazu; interface implementation; window functions; PL/pgSQL; PostgreSQL; procedural language; query performance comparison