TimescaleDB. Pavel Stěhule 2018

Podobné dokumenty
INDEXY JSOU GRUNT. Pavel Stěhule

PostgreSQL. Podpora dědičnosti Rozšiřitelnost vlastní datové typy. Univerzální nasazení ve vědecké sféře

PG 9.5 novinky ve vývoji aplikací

cstore_fdw column store pro PostgreSQL Prague PostgreSQL Developer Day 2015 Jan Holčapek

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Novinky v PostgreSQL 9.4. Tomáš Vondra, 2ndQuadrant

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

Operátory ROLLUP a CUBE

Optimalizace plnění a aktualizace velkých tabulek. Milan Rafaj, IBM

Administrace, Monitoring. Pavel Stěhule P2D2, Praha 2016

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

KIV/ZIS cvičení 5. Tomáš Potužák

O Apache Derby detailněji. Hynek Mlnařík

Použití databází na Webu

PostgreSQL jako platforma pro datové sklady

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

Analýza a modelování dat 6. přednáška. Helena Palovská

Optimalizace dotazů a databázové transakce v Oracle

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

Paralelní dotazy v PostgreSQL 9.6 (a 10.0)

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

SQL SQL-SELECT. Informační a znalostní systémy. Informační a znalostní systémy SQL- SELECT

Vkládání, aktualizace, mazání

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Ukládání a vyhledávání XML dat

Jak ušetřit místo a zároveň mít data snadno dostupná. David Turoň

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

Tabulka fotbalové ligy

RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague

Architektury databázových

Čteme EXPLAIN. CSPUG, Praha. Tomáš Vondra Czech and Slovak PostgreSQL Users Group

Temporální databáze. Jan Kolárik Miroslav Macík

IDS optimalizátor. Ing. Jan Musil, IBM ČR Community of Practice for

Databázové systémy I

Dotazovací jazyk pro řazená data

Materializované pohledy

Databázové systémy I

8. Zpracování dotazu. J. Zendulka: Databázové systémy 8 Zpracování dotazu 1

J. Zendulka: Databázové systémy 8 Zpracování dotazu Podstata optimalizace zpracování dotazu

37. Indexování a optimalizace dotazů v relačních databázích, datové struktury, jejich výhody a nevýhody

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Vzorové příklady SQL. Tabulka: Kniha CREATE TABLE kniha (id INTEGER, název VARCHAR(50), PRIMARY KEY (id))

Databázové systémy Cvičení 5.3

Virtual Private Database (VPD) Jaroslav Kotrč

Kapitola 6: Omezení integrity. Omezení domény

Verzování a publikace dat na webu za pomoci PostgreSQL

Optimalizace SQL dotazů

Návrh a prototypová implementace databáze pro

Databáze I. Přednáška 4

Systémy řízení proudů dat

Úvod do databázových systémů

Databázové systémy Cvičení 5

Kapitola 4: SQL. Základní struktura

Dotazovací jazyky I. Datová krychle. Soběslav Benda

B Organizace databáze na fyzické úrovni u serveru Oracle

Databázové systémy. Cvičení 6: SQL

Healtcheck. databáze ORCL běžící na serveru db.tomas-solar.com pro

SQL tříhodnotová logika

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

XML databáze. Přednáška pro kurz PB138 Moderní značkovací jazyky Ing. Petr Adámek

Přehled systému Microsoft SQL Server. Komu je kniha určena Struktura knihy Nejvhodnější výchozí bod pro čtení knihy Konvence a struktura knihy

Databázové a informační systémy

CSPUG 2011-květen. GridSQL a pg-pool II. Vratislav Beneš benes@optisolutions.cz

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL)

Michal Krátký, Miroslav Beneš

Úvod do databázových systémů

5. POČÍTAČOVÉ CVIČENÍ

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

Dotazování v relačním modelu a SQL

Jazyk SQL databáze SQLite. připravil ing. petr polách

Databáze SQL SELECT. David Hoksza

Úvod do databázových systémů

Tvorba informačních systémů

Použití PostgreSQL v. P2D Martin Swiech

6. blok část B Vnořené dotazy

8.2 Používání a tvorba databází

IB111 Úvod do programování skrze Python

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Databázové systémy Cvičení 5.2

Databázové systémy úvod

KAPITOLA 1 Představení platformy Microsoft SQL Server 2008

Úvod do databázových systémů 3. cvičení

Maturitní témata z předmětu PROGRAMOVÉ VYBAVENÍ pro šk. rok 2012/2013

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Informační systémy ve zdravotnictví. 8. cvičení

04 - Databázové systémy

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

Databáze I. 5. přednáška. Helena Palovská

Spark SQL, Spark Streaming. Jan Hučín

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Databázové a informační systémy Jana Šarmanová

Přizpůsobení JSTL pro Google App Engine Datastore

6. Fyzická (interní) úroveň databázového systému

Monitoring výkonu PostgreSQL

PostgreSQL návrh a implementace náročných databázových aplikací

Úvod do databázových systémů

Transkript:

TimescaleDB Pavel Stěhule 2018

O výkonu rozhodují Algoritmy Datové struktury 80-90 léta - vize univerzálních SQL databází Po roce 2000 - specializované databáze

Relační SQL databáze Běžně optimalizována na 70/30 SELECT/UPDATE operací Obecně navržené stejné algoritmy, stejný způsob uložení se používají pro socioekonomické systémy i pro logy, naměřená data, atd. Základní datové struktury jsou halda a index (explicitně seřazená data). Nebere se v potaz, že některá data jsou přirozeně řazená (není to zaručeno). Běžné funkce jsou pro optimalizátor black box - a to ať zákaznické nebo vestavěné

Relační SQL databáze SELECT * FROM X WHERE EXTRACT(YEAR FROM d) = 2017 SELECT * FROM X WHERE d >= 2017-01-01 AND d < 2018-01-01 Funkce nemají defnovanou sémantiku. Nesleduje se monotónnost funkce. Naopak některé operátory ji defnovanou mají.

Time series data (časové řady) Relativně bežná velkoobjemová data snadno se pořizují (automaticky, sondy) 100% přírůstková možnost komprimace, případně aproximace jednoduché úlohy často spojené s vizualizací velké objemy - přírůstky v řádech MB/sec

Time series databases TSDB Optimalizované pro uložení časových řad NoSQL Velice rychlé dohledání dat za určité období Rychlý zápis Kompaktní formát (velké možnosti komprimace

Time series databases InfuxDB Graphite Druid Prometheus {{Grafana}} - vizualizace??? TimescaleDB????

TimescaleDB Extenze do Postgresu limitováno vlastnostmi Postgresu k dispozici funkcionalita Postgresu Rozšiřuje partitioning směrem k time series db Modifkuje optimalizátor - optimalizátor pozná některé funkce a některé vzory Mike Freedman (CTO, spoluzakladatel)

TimescaleDB partitioning Partition je defnována časovým obdobím. Partitions jsou vytvářené automaticky a vkládání do partitions je také automatické. Vše je pro uživatele transparentní. Pohodlná funkce pro odstranění partitions v závislosti na stáří záznamů. Podpora Nd partitioningu - možnost separace dat podle dalších atributů (dimenzí). Partitioning začne být aktivní po vytvoření tzv. hypertabulky. Levný pohodlný partitioning - menší tabulky -> menší indexy -> rychlejší aktualizace indexů.

TimescaleDB shared_preload_libraries = 'timescaledb' CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE; CREATE TABLE xx( c1 TIMESTAMP NOT NULL, c2 INTEGER,... ); SELECT create_hypertable('xx', 'c1', 'c2', 2, create_default_indexes=>false);

TimescaleDB optimalizace SELECT date_trunc('day', pickup_datetime) as day, COUNT(*) FROM rides GROUP BY day ORDER BY day LIMIT 5; Pro PG špatně optimalizovatelné bez funkcionálního indexu nad date_trunc() Další index ale znamená zpomalení INSERTu

Agregace v PostgreSQL HashAgg - průběžně se aktualizuje hash tabulka s mezivýsledky -- HASH blokuje optimalizaci LIMITu GroupAgg - vždy se počítá jedna konkrétní skupina - vyžaduje seřazená data -- sort blokuje optimalizaci LIMITu

TimescaleDB optimalizace dotazu Víme, že partitions podle času jsou ve správném pořadí. Víme, že funkce date_trunc je monotónní - pokud je vstup ve správném pořadí, tak i výstup je ve správném pořadí Pokud máme data pro agregaci správně seřazená, tak už je nemusíme řadit a můžeme použít v tuto chvíli lacinou a nejrychlejší metodu GroupAgg GroupAgg je možné efektivně zastavit LIMITem

Optimalizace klauzule LIMIT Často používaná klauzule.. LIMIT 10 Někdy může zrychlit provedení dotazu rychlým stopnutím výpočtu Nepomůže, když je nutné data dříve seřadit nebo provést hashagg (pak je nutné zpracovat všechna data).

Limit -> Sort -> HashAggregate -> Seq Scan on rides PostgreSQL

TimescaleDB Limit -> GroupAggregate -> Result Output: (date_trunc('day'::text, rides.pickup_datetime)) -> Merge Append -> Index Only Scan Backward using rides_p... -> Index Only Scan Backward using _hyper_1_1_chunk_rides.. -> Index Only Scan Backward using _hyper_1_2_chunk_rides.. -> Index Only Scan Backward using _hyper_1_3_chunk_rides_p..

TimescaleDB Jednoduché řešení, které nemá velkou režii (CPU, pracnost, naučení) a pro určitý charakter dat prokazatelně zrychlí operace. Kompatibilní s PG. Zatím cca rok a půl vývoje, a zdá se to použitelné (nezasahuje citlivé vnitřnosti PostgreSQL). Velký prostor pro interní vývoj + poroste s PG. Plánované funkce v PostgreSQL (custom storages, clustering) jsou přínosem i pro TimescaleDB. Těžko porovnatelné s nativními time series databázemi (implementovanými v GO a s vlastním optimalizovaným storage). Může být stejné rychlé nebo rychlejší než jednodušší TSDB a pro řadu úloh dostatečně rychlé.

Bonus pro Postgres Open Source - GitHub Motivace pro custom storage nebo alespoň pro insert only storage Další vývojáři se znalostmi vnitřností Postgresu Motivace pro rozvoj extenzí - nové callbacky (planner, storage) Možná některé fígle by mohly být interně v PG