Tato práce se zabývá výběrem vhodné databáze časových řad a implementací serverové aplikace, která vybranou databázi využívá. Cílem bylo především zjistit výhody a nevýhody time series databází a možnosti jejich využití místo stávajícího systému, který je postavený na relační SQL databázi. Konkrétně jsou v práci porovnány databáze InfluxDB, TimescaleDB a OpenTSDB. Při výběru byl pak kladen důraz hlavně na jednoduchost implementace požadovaných funkcí aplikace a možnosti dalšího rozšiřování. Výsledkem porovnání je výběr databáze TimescaleDB, založené na relační databázi PostgreSQL. Mezi její výhody patří zejména plná podpora jazyka SQL, díky kterému je možné většinu funkcionality aplikace realizovat přímo v databázi. Ostatní databáze časových řad nabízejí daleko menší flexibilitu a implementaci složitějších funkcí je tak třeba přenést do serverové aplikace. V ukázkové implementaci aplikace je proto kladen důraz na využití co nejvíce možností vybrané databáze. Samotná serverová aplikace tak má na starosti prakticky pouze ověřování uživatelů a jinak funguje jen jako proxy server, který zajišťuje správný formát dotazů. Všechny složitější funkce, jako je například agregace dat a další práce s měřeními probíhá automaticky přímo v databázi.
Anotace v angličtině
This thesis is focused on choosing an appropriate time series database and implementing a server application that uses the chosen database. The target was mainly to determine the pros and cons of time series databases and possibilities of using them instead of the current system, which uses a relational SQL database. Specifically, the databases compared in this work are InfluxDB, TimescaleDB, and OpenTSDB. During the selection, emphasis was placed mainly on the simplicity of implementation of the required functions of the application and the possibility of further expansion. The result of the comparison is the selection of the TimescaleDB database, based on the PostgreSQL relational database. Its advantages include mainly full SQL support, thanks to which it is possible to implement most of the application's functionality directly in the database. Other time series databases offer far less flexibility, so the implementation of more complex functions needs to be done in the server application. Therefore, in the example implementation of the application, emphasis is placed on using as many tools of the selected database as possible. The server application itself is thus responsible only for user authentication and otherwise acts only as a proxy server, which ensures the correct format of queries. All complex functions, such as data aggregation and other work with measurements, take place automatically directly in the database.
Klíčová slova
Databáze časových řad, internet věcí, API, SQL, serverová aplikace
Klíčová slova v angličtině
Time series database, internet of things, API, SQL, server application
Rozsah průvodní práce
40
Jazyk
CZ
Anotace
Tato práce se zabývá výběrem vhodné databáze časových řad a implementací serverové aplikace, která vybranou databázi využívá. Cílem bylo především zjistit výhody a nevýhody time series databází a možnosti jejich využití místo stávajícího systému, který je postavený na relační SQL databázi. Konkrétně jsou v práci porovnány databáze InfluxDB, TimescaleDB a OpenTSDB. Při výběru byl pak kladen důraz hlavně na jednoduchost implementace požadovaných funkcí aplikace a možnosti dalšího rozšiřování. Výsledkem porovnání je výběr databáze TimescaleDB, založené na relační databázi PostgreSQL. Mezi její výhody patří zejména plná podpora jazyka SQL, díky kterému je možné většinu funkcionality aplikace realizovat přímo v databázi. Ostatní databáze časových řad nabízejí daleko menší flexibilitu a implementaci složitějších funkcí je tak třeba přenést do serverové aplikace. V ukázkové implementaci aplikace je proto kladen důraz na využití co nejvíce možností vybrané databáze. Samotná serverová aplikace tak má na starosti prakticky pouze ověřování uživatelů a jinak funguje jen jako proxy server, který zajišťuje správný formát dotazů. Všechny složitější funkce, jako je například agregace dat a další práce s měřeními probíhá automaticky přímo v databázi.
Anotace v angličtině
This thesis is focused on choosing an appropriate time series database and implementing a server application that uses the chosen database. The target was mainly to determine the pros and cons of time series databases and possibilities of using them instead of the current system, which uses a relational SQL database. Specifically, the databases compared in this work are InfluxDB, TimescaleDB, and OpenTSDB. During the selection, emphasis was placed mainly on the simplicity of implementation of the required functions of the application and the possibility of further expansion. The result of the comparison is the selection of the TimescaleDB database, based on the PostgreSQL relational database. Its advantages include mainly full SQL support, thanks to which it is possible to implement most of the application's functionality directly in the database. Other time series databases offer far less flexibility, so the implementation of more complex functions needs to be done in the server application. Therefore, in the example implementation of the application, emphasis is placed on using as many tools of the selected database as possible. The server application itself is thus responsible only for user authentication and otherwise acts only as a proxy server, which ensures the correct format of queries. All complex functions, such as data aggregation and other work with measurements, take place automatically directly in the database.
Klíčová slova
Databáze časových řad, internet věcí, API, SQL, serverová aplikace
Klíčová slova v angličtině
Time series database, internet of things, API, SQL, server application
Zásady pro vypracování
Seznamte se s API stávající serverové aplikace.
Prozkoumejte možnosti databází časových řad. Vyberte nejvhodnější pro nahrazení nebo doplnění stávajícího řešení.
Navrhněte způsob, jak vybranou databázi integrovat do stávájícího API s minimem změn.
Navrhněte nové API, které z původního vychází, ale rozšiřuje ho o možnosti a výhody databází časových řad.
Vybrané řešení implementujte jako ukázkovou serverovou aplikaci.
Zásady pro vypracování
Seznamte se s API stávající serverové aplikace.
Prozkoumejte možnosti databází časových řad. Vyberte nejvhodnější pro nahrazení nebo doplnění stávajícího řešení.
Navrhněte způsob, jak vybranou databázi integrovat do stávájícího API s minimem změn.
Navrhněte nové API, které z původního vychází, ale rozšiřuje ho o možnosti a výhody databází časových řad.
Vybrané řešení implementujte jako ukázkovou serverovou aplikaci.
Seznam doporučené literatury
\renewcommand{\labelenumi}{[\theenumi]}
DUNNING, Ted a Ellen FRIEDMAN, 2014. Time Series Databases: New Ways to Store and Access Data. 1 edition. Sebastopol, CA: O?Reilly Media. ISBN 978-1-4919-1472-4.
ANON., nedatováno. Time Series Database (TSDB) Explained | InfluxDB. InfluxData [online] [cit. 2019-10-09]. Dostupné z: https://www.influxdata.com/time-series-database/
FREEDMAN, Mike, 2019. TimescaleDB vs. InfluxDB: Purpose built differently for time-series data. Timescale Blog [online] [cit. 2019-10-09]. Dostupné z: https://blog.timescale.com/blog/ timescaledb-vs-influxdb-for-time-series-data-timescale-influx-sql-nosql-36489299877/
Seznam doporučené literatury
\renewcommand{\labelenumi}{[\theenumi]}
DUNNING, Ted a Ellen FRIEDMAN, 2014. Time Series Databases: New Ways to Store and Access Data. 1 edition. Sebastopol, CA: O?Reilly Media. ISBN 978-1-4919-1472-4.
ANON., nedatováno. Time Series Database (TSDB) Explained | InfluxDB. InfluxData [online] [cit. 2019-10-09]. Dostupné z: https://www.influxdata.com/time-series-database/
FREEDMAN, Mike, 2019. TimescaleDB vs. InfluxDB: Purpose built differently for time-series data. Timescale Blog [online] [cit. 2019-10-09]. Dostupné z: https://blog.timescale.com/blog/ timescaledb-vs-influxdb-for-time-series-data-timescale-influx-sql-nosql-36489299877/
Přílohy volně vložené
1 CD-ROM
Přílohy vázané v práci
ilustrace, tabulky
Převzato z knihovny
Ano
Plný text práce
Přílohy
Posudek(y) oponenta
Hodnocení vedoucího
Záznam průběhu obhajoby
Průběh obhajoby je zveřejněn pouze přihlášenému uživateli.