Time series data in a relational database. TimescaleDB and PipelineDB extensions for PostgreSQL
Extensions allow you to stay in the PostgreSQL ecosystem, use the usual means of backup, monitoring and other things, while getting functionality that is specific to temporal data and time series.
времени данные о характеристиках исследуемого процесса. Временные ряды состоят из двух элементов: 1. временная метка; 2. характеристики, называемые уровнями ряда.
ingest and complex queries. https://www.timescale.com https://github.com/timescale/timescaledb PipelineDB is a high-performance extension built to run SQL queries continuously on time-series data. https://www.pipelinedb.com https://github.com/pipelinedb/pipelinedb
performance • Highly available • Powered by PostgreSQL • Continuous aggregations • Efficient and sustainable • Joining streams on tables • Runs on PostgreSQL
day, count(*) AS trucks_exiting, sum(weight) / 1000 AS tonnage FROM vehicles INNER JOIN cities ON cities.name = 'Krasnodar' WHERE ST_Within(last_location, ST_Polygon(cities.geom, 4326)) AND NOT ST_Within(current_location, ST_Polygon(cities.geom, 4326)) GROUP BY day ORDER BY day DESC LIMIT 3; day | trucks_exiting | tonnage ------------------------+----------------+--------- 2019-06-24 00:00:00+00 | 5326 | 113082 2019-06-23 00:00:00+00 | 6051 | 133123 2019-06-22 00:00:00+00 | 3741 | 74820
period, last(c.closing_price, c.time) AS closing_price_btc, last(c.closing_price, c.time) * last(b.closing_price, c.time) filter (WHERE b.currency_code = 'USD') AS closing_price_usd FROM crypto_prices c JOIN btc_prices b ON time_bucket('1 day', c.time) = time_bucket('1 day', b.time) WHERE c.currency_code = 'ETH' GROUP BY period ORDER BY period DESC;
2.0) - Community (TSL) - Enterprise (Commercial) - Cloud Последние новости: - Over 1 million downloads in less than 18 months - Timescale has now raised over $31 million to build the foundational database - Timescale and MS Azure join forces to power IoT and time-series workloads
text, ab_group text, event_type varchar(1), cookie varchar(32) ); CREATE CONTINUOUS VIEW ab_test_monitor AS SELECT name, ab_group, sum(CASE WHEN event_type = 'v' THEN 1 ELSE 0 END) AS view_count, sum(CASE WHEN event_type = 'c' THEN 1 ELSE 0 END) AS conversion_count, count(DISTINCT cookie) AS uniques FROM ab_event_stream GROUP BY name, ab_group;
ab_group, event_type, cookie) SELECT round(random() * 2) AS name, round(random() * 4) AS ab_group, (CASE WHEN random() > 0.4 THEN 'v' ELSE 'c' END) AS event_type, md5(random()::text) AS cookie FROM generate_series(0, 100000); SELECT ab_group, uniques FROM ab_test_monitor; SELECT ab_group, view_count * 100 / (conversion_count + view_count) AS conversion_rate FROM ab_test_monitor;