From 1c70815ca19f59f768a179716b7bf646bcbb81fd Mon Sep 17 00:00:00 2001 From: Iain Date: Tue, 17 Sep 2024 11:45:15 +0200 Subject: [PATCH 01/25] feat: hyperstore page. --- use-timescale/hyperstore.md | 45 ++++++++++++++++++++++++++ use-timescale/page-index/page-index.js | 5 +++ 2 files changed, 50 insertions(+) create mode 100644 use-timescale/hyperstore.md diff --git a/use-timescale/hyperstore.md b/use-timescale/hyperstore.md new file mode 100644 index 0000000000..39adf0a843 --- /dev/null +++ b/use-timescale/hyperstore.md @@ -0,0 +1,45 @@ +--- +title: Hyperstore +excerpt: The Timescale hybrid row-columnar storage engine for real-time analytics, powered by time-series data +products: [cloud,] +keywords: [hyperstore, hypertable, compression, row-columnar storage] +--- + +# Hyperstore + +Hyperstore is the Timescale hybrid row-columnar storage engine, designed specifically for +real-time analytics and powered by time-series data. The advantage of hyperstore is its ability +to seamlessly switch between row-oriented and column-oriented storage. This flexibility enables +Timescale Cloud to deliver the best of both worlds, solving the key challenges in real-time analytics: + +- High ingest throughput +- Low-latency ingestion +- Fast query performance +- Efficient handling of data updates and late-arriving data +- Streamlined data management + +Hyperstore’s hybrid approach combines the benefits of row-oriented and column-oriented formats +in each Timescale Cloud service: + +- **Fast ingest with Rowstore**: new data is initially written to the rowstore, it is optimized for + high-speed inserts and updates. This process ensures that real-time applications easily handle + rapid streams of incoming data. Mutability—upserts, updates, and deletes happen seamlessly. + +- **Efficient analytics with Columnstore**: as the data _cools_ and becomes more suited for + analytics, it is automatically migrated to the columnstore. Your data is compressed into small + batches and organized for efficient, large-scale queries. This columnar format enables for + fast scanning and aggregation, optimizing performance for analytical workloads while also + saving significant storage space. + +- **Full mutability with transactional semantics**: regardless of where data is stored, + hyperstore provides full ACID support. Like in a vanilla Postgres database, inserts and updates + to the rowstore and columnstore are always consistent, and available to queries as soon as they are + completed. + +![Hyperstore workflow](https://assets.timescale.com/docs/images/hyperstore-overview.png) + +Currently, much of this functionality is made available and documented under [compression][compression]. +However, we are actively updating our APIs and documentation to fully integrate these features under the +hyperstore umbrella. + +[compression]: /use-timescale/:currentVersion:/compression/ diff --git a/use-timescale/page-index/page-index.js b/use-timescale/page-index/page-index.js index 494e25f468..12867c896d 100644 --- a/use-timescale/page-index/page-index.js +++ b/use-timescale/page-index/page-index.js @@ -397,6 +397,11 @@ module.exports = [ }, ], }, + { + title: "Hyperstore", + href: "hyperstore", + excerpt: "The Timescale hybrid row-columnar storage engine for real-time analytics, powered by time-series data", + }, { title: "Hypertables", href: "hypertables", From 27affe2b4d20f18cdd5dc66ce55bab50b78ca321 Mon Sep 17 00:00:00 2001 From: Iain Date: Tue, 17 Sep 2024 12:27:25 +0200 Subject: [PATCH 02/25] feat: make link with compression more obvious. --- use-timescale/hyperstore.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/use-timescale/hyperstore.md b/use-timescale/hyperstore.md index 39adf0a843..824ed4fbd7 100644 --- a/use-timescale/hyperstore.md +++ b/use-timescale/hyperstore.md @@ -18,6 +18,9 @@ Timescale Cloud to deliver the best of both worlds, solving the key challenges i - Efficient handling of data updates and late-arriving data - Streamlined data management +Currently, much of this functionality is available as [compression][compression]. However, we are actively +updating our APIs and docs so you can more easily integrate these features under the hyperstore umbrella. + Hyperstore’s hybrid approach combines the benefits of row-oriented and column-oriented formats in each Timescale Cloud service: @@ -38,8 +41,5 @@ in each Timescale Cloud service: ![Hyperstore workflow](https://assets.timescale.com/docs/images/hyperstore-overview.png) -Currently, much of this functionality is made available and documented under [compression][compression]. -However, we are actively updating our APIs and documentation to fully integrate these features under the -hyperstore umbrella. [compression]: /use-timescale/:currentVersion:/compression/ From 1ab7908736157fbadd8f1c842401756a0a0ce53b Mon Sep 17 00:00:00 2001 From: Iain Date: Tue, 17 Sep 2024 12:36:36 +0200 Subject: [PATCH 03/25] feat: make link with compression more obvious. --- use-timescale/hyperstore.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/use-timescale/hyperstore.md b/use-timescale/hyperstore.md index 824ed4fbd7..5ede223a0a 100644 --- a/use-timescale/hyperstore.md +++ b/use-timescale/hyperstore.md @@ -19,7 +19,7 @@ Timescale Cloud to deliver the best of both worlds, solving the key challenges i - Streamlined data management Currently, much of this functionality is available as [compression][compression]. However, we are actively -updating our APIs and docs so you can more easily integrate these features under the hyperstore umbrella. +updating our APIs and docs so you can more easily integrate the following features under the hyperstore umbrella. Hyperstore’s hybrid approach combines the benefits of row-oriented and column-oriented formats in each Timescale Cloud service: From 7338f3c1824d9c8003d559999dca4e4c3a6b8cf5 Mon Sep 17 00:00:00 2001 From: Ramon Guiu Date: Fri, 27 Sep 2024 12:13:53 +0200 Subject: [PATCH 04/25] Update hyperstore.md Hyperstore -> hypercore Signed-off-by: Ramon Guiu --- use-timescale/hyperstore.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/use-timescale/hyperstore.md b/use-timescale/hyperstore.md index 5ede223a0a..b9628a9e8b 100644 --- a/use-timescale/hyperstore.md +++ b/use-timescale/hyperstore.md @@ -1,14 +1,14 @@ --- -title: Hyperstore +title: Hypercore excerpt: The Timescale hybrid row-columnar storage engine for real-time analytics, powered by time-series data products: [cloud,] -keywords: [hyperstore, hypertable, compression, row-columnar storage] +keywords: [hyperscore, hypertable, compression, row-columnar storage, hyperstore] --- -# Hyperstore +# Hypercore -Hyperstore is the Timescale hybrid row-columnar storage engine, designed specifically for -real-time analytics and powered by time-series data. The advantage of hyperstore is its ability +Hypercore is the Timescale hybrid row-columnar storage engine, designed specifically for +real-time analytics and powered by time-series data. The advantage of hypercore is its ability to seamlessly switch between row-oriented and column-oriented storage. This flexibility enables Timescale Cloud to deliver the best of both worlds, solving the key challenges in real-time analytics: @@ -19,9 +19,9 @@ Timescale Cloud to deliver the best of both worlds, solving the key challenges i - Streamlined data management Currently, much of this functionality is available as [compression][compression]. However, we are actively -updating our APIs and docs so you can more easily integrate the following features under the hyperstore umbrella. +updating our APIs and docs so you can more easily integrate the following features under the hypercore umbrella. -Hyperstore’s hybrid approach combines the benefits of row-oriented and column-oriented formats +Hypercore’s hybrid approach combines the benefits of row-oriented and column-oriented formats in each Timescale Cloud service: - **Fast ingest with Rowstore**: new data is initially written to the rowstore, it is optimized for @@ -35,11 +35,11 @@ in each Timescale Cloud service: saving significant storage space. - **Full mutability with transactional semantics**: regardless of where data is stored, - hyperstore provides full ACID support. Like in a vanilla Postgres database, inserts and updates + hypercore provides full ACID support. Like in a vanilla Postgres database, inserts and updates to the rowstore and columnstore are always consistent, and available to queries as soon as they are completed. -![Hyperstore workflow](https://assets.timescale.com/docs/images/hyperstore-overview.png) +![Hypercore workflow](https://assets.timescale.com/docs/images/hypercore-overview.png) [compression]: /use-timescale/:currentVersion:/compression/ From e90a322f73699ba46eb8261477e15e5bdca9f2ef Mon Sep 17 00:00:00 2001 From: Ramon Guiu Date: Fri, 27 Sep 2024 12:14:50 +0200 Subject: [PATCH 05/25] Rename hyperstore.md to hypercore.md Signed-off-by: Ramon Guiu --- use-timescale/{hyperstore.md => hypercore.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename use-timescale/{hyperstore.md => hypercore.md} (100%) diff --git a/use-timescale/hyperstore.md b/use-timescale/hypercore.md similarity index 100% rename from use-timescale/hyperstore.md rename to use-timescale/hypercore.md From 61da0c7254ae6aa64fd371f26d018557bdd3685f Mon Sep 17 00:00:00 2001 From: Ramon Guiu Date: Fri, 27 Sep 2024 12:15:46 +0200 Subject: [PATCH 06/25] Update page-index.js hyperstore -> hypercore Signed-off-by: Ramon Guiu --- use-timescale/page-index/page-index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/use-timescale/page-index/page-index.js b/use-timescale/page-index/page-index.js index 12867c896d..3a70260caf 100644 --- a/use-timescale/page-index/page-index.js +++ b/use-timescale/page-index/page-index.js @@ -398,8 +398,8 @@ module.exports = [ ], }, { - title: "Hyperstore", - href: "hyperstore", + title: "Hypercore", + href: "hypercore", excerpt: "The Timescale hybrid row-columnar storage engine for real-time analytics, powered by time-series data", }, { From 63afb9f1660d3a01f0be1bdcff9e394f2e0d4626 Mon Sep 17 00:00:00 2001 From: Iain Cox Date: Fri, 27 Sep 2024 12:09:06 +0100 Subject: [PATCH 07/25] Update use-timescale/hypercore.md Signed-off-by: Iain Cox --- use-timescale/hypercore.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/use-timescale/hypercore.md b/use-timescale/hypercore.md index b9628a9e8b..dc0aed2996 100644 --- a/use-timescale/hypercore.md +++ b/use-timescale/hypercore.md @@ -2,7 +2,7 @@ title: Hypercore excerpt: The Timescale hybrid row-columnar storage engine for real-time analytics, powered by time-series data products: [cloud,] -keywords: [hyperscore, hypertable, compression, row-columnar storage, hyperstore] +keywords: [hyperscore, hypertable, compression, row-columnar storage, hypercore] --- # Hypercore From 8a6923136f921e1dcb859a9e8b94b6e184c5aa8e Mon Sep 17 00:00:00 2001 From: Iain Date: Fri, 27 Sep 2024 16:52:25 +0100 Subject: [PATCH 08/25] feat: add hyperstore back. --- use-timescale/hypercore.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/use-timescale/hypercore.md b/use-timescale/hypercore.md index dc0aed2996..282d581fd4 100644 --- a/use-timescale/hypercore.md +++ b/use-timescale/hypercore.md @@ -2,7 +2,7 @@ title: Hypercore excerpt: The Timescale hybrid row-columnar storage engine for real-time analytics, powered by time-series data products: [cloud,] -keywords: [hyperscore, hypertable, compression, row-columnar storage, hypercore] +keywords: [hyperscore, hypertable, compression, row-columnar storage, hypercore, hyperstore] --- # Hypercore From 7b85ce6e3df00a10f66b92d395793b5f326d934d Mon Sep 17 00:00:00 2001 From: Iain Cox Date: Thu, 3 Oct 2024 14:03:24 +0200 Subject: [PATCH 09/25] Update use-timescale/hypercore.md Co-authored-by: atovpeko <114177030+atovpeko@users.noreply.github.com> Signed-off-by: Iain Cox --- use-timescale/hypercore.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/use-timescale/hypercore.md b/use-timescale/hypercore.md index 282d581fd4..c6098592b0 100644 --- a/use-timescale/hypercore.md +++ b/use-timescale/hypercore.md @@ -24,7 +24,7 @@ updating our APIs and docs so you can more easily integrate the following featur Hypercore’s hybrid approach combines the benefits of row-oriented and column-oriented formats in each Timescale Cloud service: -- **Fast ingest with Rowstore**: new data is initially written to the rowstore, it is optimized for +- **Fast ingest with Rowstore**: new data is initially written to the rowstore, which is optimized for high-speed inserts and updates. This process ensures that real-time applications easily handle rapid streams of incoming data. Mutability—upserts, updates, and deletes happen seamlessly. From 39da244b30fed9379ec4d7416f23850aeb13b044 Mon Sep 17 00:00:00 2001 From: Iain Date: Thu, 3 Oct 2024 14:04:58 +0200 Subject: [PATCH 10/25] chore: update on review. --- use-timescale/hypercore.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/use-timescale/hypercore.md b/use-timescale/hypercore.md index c6098592b0..fffd809845 100644 --- a/use-timescale/hypercore.md +++ b/use-timescale/hypercore.md @@ -24,11 +24,11 @@ updating our APIs and docs so you can more easily integrate the following featur Hypercore’s hybrid approach combines the benefits of row-oriented and column-oriented formats in each Timescale Cloud service: -- **Fast ingest with Rowstore**: new data is initially written to the rowstore, which is optimized for +- **Fast ingest with rowstore**: new data is initially written to the rowstore, which is optimized for high-speed inserts and updates. This process ensures that real-time applications easily handle rapid streams of incoming data. Mutability—upserts, updates, and deletes happen seamlessly. -- **Efficient analytics with Columnstore**: as the data _cools_ and becomes more suited for +- **Efficient analytics with columnstore**: as the data _cools_ and becomes more suited for analytics, it is automatically migrated to the columnstore. Your data is compressed into small batches and organized for efficient, large-scale queries. This columnar format enables for fast scanning and aggregation, optimizing performance for analytical workloads while also From 5092a530c19bcd50c3bb322125e0b70b65dc68bf Mon Sep 17 00:00:00 2001 From: Iain Cox Date: Tue, 1 Oct 2024 10:17:16 +0200 Subject: [PATCH 11/25] chore: update troubleshooting info for DISTINCT. (#3461) * chore: update troubleshooting info for DISTINCT. --- _partials/_caggs-function-support.md | 41 ++++++++++++++++++++++++-- _troubleshooting/caggs-queries-fail.md | 26 +++++----------- 2 files changed, 46 insertions(+), 21 deletions(-) diff --git a/_partials/_caggs-function-support.md b/_partials/_caggs-function-support.md index 676eac27ea..b7b460970e 100644 --- a/_partials/_caggs-function-support.md +++ b/_partials/_caggs-function-support.md @@ -1,12 +1,49 @@ -This table summarizes aggregate function support in continuous aggregates: + +The following table summarizes the aggregate functions supported in continuous aggregates: |Function, clause, or feature|TimescaleDB 2.6 and earlier|TimescaleDB 2.7, 2.8, and 2.9|TimescaleDB 2.10 and later| |-|-|-|-| |Parallelizable aggregate functions|✅|✅|✅| -|Non-parallelizable aggregate functions|❌|✅|✅| +|[non-parallelizable SQL aggregates][postgres-parallel-agg]|❌|✅|✅| |`ORDER BY`|❌|✅|✅| |Ordered-set aggregates|❌|✅|✅| |Hypothetical-set aggregates|❌|✅|✅| |`DISTINCT` in aggregate functions|❌|✅|✅| |`FILTER` in aggregate functions|❌|✅|✅| |`FROM` clause supports `JOINS`|❌|❌|✅| + + +DISTINCT works in aggregate functions not in the query definition. For example, for the table: + +```sql +CREATE TABLE public.candle( +symbol_id uuid NOT NULL, +symbol text NOT NULL, +"time" timestamp with time zone NOT NULL, +open double precision NOT NULL, +high double precision NOT NULL, +low double precision NOT NULL, +close double precision NOT NULL, +volume double precision NOT NULL +); + +``` +- The following works: + ```sql + CREATE MATERIALIZED VIEW candles_start_end + WITH (timescaledb.continuous) AS + SELECT time_bucket('1 hour', "time"), COUNT(DISTINCT symbol), first(time, time) as first_candle, last(time, time) as last_candle + FROM candle + GROUP BY 1; + ``` +- This does not: + ```sql + CREATE MATERIALIZED VIEW candles_start_end + WITH (timescaledb.continuous) AS + SELECT DISTINCT ON (symbol) + symbol,symbol_id, first(time, time) as first_candle, last(time, time) as last_candle + FROM candle + GROUP BY symbol_id; + ``` + +[postgres-parallel-agg]: https://www.postgresql.org/docs/current/parallel-plans.html#PARALLEL-AGGREGATION diff --git a/_troubleshooting/caggs-queries-fail.md b/_troubleshooting/caggs-queries-fail.md index 2f668a431d..3c2c5f4494 100644 --- a/_troubleshooting/caggs-queries-fail.md +++ b/_troubleshooting/caggs-queries-fail.md @@ -3,11 +3,6 @@ title: Queries fail when defining continuous aggregates but work on regular tabl section: troubleshooting products: [cloud, mst, self_hosted] topics: [continuous aggregates] -errors: - - language: sql - message: |- - ERROR: invalid continuous aggregate view - SQL state: 0A000 apis: - [continuous aggregates, CREATE MATERIALIZED VIEW (Continuous Aggregate)] keywords: [continuous aggregates] @@ -16,22 +11,15 @@ tags: [continuous aggregates, query] import CaggsFunctionSupport from 'versionContent/_partials/_caggs-function-support.mdx'; - - -Continuous aggregates don't work on all queries. If you are using a function -that continuous aggregates do not support, you see the error above. +Continuous aggregates do not work on all queries. For example, TimescaleDB does not support window functions on +continuous aggregates. If you use an unsupported function, you see the following error: -TimescaleDB doesn't support window functions on continuous aggregates. -In versions earlier than 2.7, it doesn't support any -[non-parallelizable SQL aggregates][postgres-parallel-agg]. +```sql + ERROR: invalid continuous aggregate view + SQL state: 0A000 +``` + [postgres-parallel-agg]: https://www.postgresql.org/docs/current/parallel-plans.html#PARALLEL-AGGREGATION From 75619b7b2970cbc68737a2fcb5342d1f08fa8b07 Mon Sep 17 00:00:00 2001 From: Iain Cox Date: Wed, 2 Oct 2024 16:05:07 +0200 Subject: [PATCH 12/25] fix: revert structure. (#3471) * fix: revert structure. --- mlc_config.json | 6 + use-timescale/page-index/page-index.js | 1204 ++++++++++++------------ 2 files changed, 607 insertions(+), 603 deletions(-) diff --git a/mlc_config.json b/mlc_config.json index 2c1d6c7c87..dd840f21b2 100644 --- a/mlc_config.json +++ b/mlc_config.json @@ -13,6 +13,12 @@ { "pattern": "^https://console.aws.amazon.com/rds/home#databases" }, + { + "pattern": "^https?://dbeaver.io/" + }, + { + "pattern": "^https?://dbeaver.io/download/" + }, { "pattern": "^https?://localhost" }, diff --git a/use-timescale/page-index/page-index.js b/use-timescale/page-index/page-index.js index 5bc21908fe..8e67ff5f0b 100644 --- a/use-timescale/page-index/page-index.js +++ b/use-timescale/page-index/page-index.js @@ -8,31 +8,25 @@ module.exports = [ "How to connect to Timescale, administer, and configure the database.", children: [ { - title: "About Timescale Cloud services", + title: "Timescale Cloud regions", + href: "regions", + excerpt: "Timescale AWS regions", + }, + { + title: "Timescale Cloud services", href: "services", excerpt: "About Timescale Cloud services", children: [ { - title: "About services", + title: "Services overview", href: "service-overview", excerpt: "Timescale services overview", }, - { - title: "Connection pooling", - href: "connection-pooling", - excerpt: - "Using a connection pool with your Timescale services", - }, { title: "Dynamic PostgreSQL", href: "dynamic-postgresql", excerpt: "Dynamic PostgreSQL overview", }, - { - title: "Manually change resources", - href: "change-resources", - excerpt: "Manually adjust your service resources", - }, { title: "Service explorer", href: "service-explorer", @@ -44,6 +38,17 @@ module.exports = [ excerpt: "Timescale services operations, Service management tab", }, + { + title: "Manually change resources", + href: "change-resources", + excerpt: "Manually adjust your service resources", + }, + { + title: "Connection pooling", + href: "connection-pooling", + excerpt: + "Using a connection pool with your Timescale services", + }, { title: "Troubleshooting Timescale services", href: "troubleshooting", @@ -52,74 +57,76 @@ module.exports = [ ], }, { - title: "Alerting", - href: "alerting", - excerpt: "Configure alerting within Timescale", - }, - { - title: "Backup, restore, and PITR", - href: "backup-restore", + title: "User management", + href: "members", + excerpt: "User management in Timescale Cloud", children: [ { - title: "Backup and restore", - href: "backup-restore-cloud", - excerpt: "Timescale backup and restore", + title: "Members list", + href: "members-list", + excerpt: "Timescale members list", }, { - title: "Point-in-time recovery", - href: "point-in-time-recovery", - excerpt: "PITR on Timescale services" - } - ] + title: "Project Ownership", + href: "project-ownership", + excerpt: "Timescale project ownership", + }, + ], }, { - title: "Compression", - href: "compression", + title: "Write data", + href: "write-data", children: [ { - title: "About compression", - href: "about-compression", - excerpt: "Learn about how compression works", + title: "About writing data", + href: "about-writing-data", + excerpt: "Write data into hypertables", }, { - title: "About compression methods", - href: "compression-methods", - excerpt: "Learn about the different compression methods", + title: "Insert data", + href: "insert", + excerpt: "Insert data into hypertables", }, { - title: "Backfill historical data", - href: "backfill-historical-data", - excerpt: "Backfill historical data to compressed chunks", + title: "Update data", + href: "update", + excerpt: "Update data in hypertables", }, { - title: "Compression design", - href: "compression-design", - excerpt: "The design of TimescaleDB compression", + title: "Upsert data", + href: "upsert", + excerpt: "Upsert data into hypertables", }, { - title: "Decompress chunks", - href: "decompress-chunks", - excerpt: "Decompress data chunks", + title: "Delete data", + href: "delete", + excerpt: "Delete data from hypertables", }, + ], + }, + { + title: "Query data", + href: "query-data", + children: [ { - title: "Enable a compression policy", - href: "compression-policy", - excerpt: "Create a compression policy on a hypertable", + title: "About querying data", + href: "about-query-data", + excerpt: "Learn how to query data in Timescale", }, { - title: "Manual compression", - href: "manual-compression", - excerpt: "Compress data chunks", + title: "SELECT data", + href: "select", + excerpt: "Select data in hypertables", }, { - title: "Modify compressed data", - href: "modify-compressed-data", - excerpt: "Insert and modify data in compressed chunks", + title: "Perform DISTINCT queries with SkipScan", + href: "skipscan", + excerpt: "Make DISTINCT queries faster with SkipScan", }, { - title: "Modify a schema", - href: "modify-a-schema", - excerpt: "Change the data schema in compressed chunks", + title: "Perform advanced analytic queries", + href: "advanced-analytic-queries", + excerpt: "Use advanced analytics queries", }, { title: "Troubleshooting", @@ -129,328 +136,213 @@ module.exports = [ ], }, { - title: "Configuration", - href: "configuration", - excerpt: "Configure your Timescale Cloud service", + title: "Time buckets", + href: "time-buckets", + excerpt: "Aggregate data by time interval with time buckets", children: [ { - title: "About Configuration", - href: "about-configuration", - excerpt: - "Overview of configuration options and methods for PostgreSQL and Timescale", + title: "About time buckets", + href: "about-time-buckets", + excerpt: "Learn how time buckets work in Timescale.", }, { - title: "Advanced parameters", - href: "advanced-parameters", + title: "Use time buckets to group time-series data", + href: "use-time-buckets", excerpt: - "Configure advanced database parameters for your Timescale service", - }, - { - title: "Customize configuration", - href: "customize-configuration", - excerpt: "Customize your Timescale database configuration", + "How to group time series data with the time_bucket function.", }, { - title: "Troubleshooting", + title: "Troubleshoot problems with time buckets", href: "troubleshooting", type: "placeholder", }, ], }, { - title: "Continuous aggregates", - href: "continuous-aggregates", + title: "Hypertables", + href: "hypertables", children: [ { - title: "About continuous aggregates", - href: "about-continuous-aggregates", - excerpt: "About continuous aggregates", - }, - { - title: "Compress continuous aggregates", - href: "compression-on-continuous-aggregates", - excerpt: "Compress continuous aggregates", - }, - { - title: "Create a continuous aggregate", - href: "create-a-continuous-aggregate", - excerpt: "Create continuous aggregates", - }, - { - title: "Create an index on a continuous aggregate", - href: "create-index", - excerpt: - "Manage automatic index creation and manually create additional indexes", - }, - { - title: "Drop data from continuous aggregates", - href: "drop-data", - excerpt: "Drop data from continuous aggregates", + title: "About hypertables", + href: "about-hypertables", + excerpt: "Learn about hypertables in Timescale", }, { - title: "Hierarchical continuous aggregates", - href: "hierarchical-continuous-aggregates", + title: "Create hypertables", + href: "create", + excerpt: "Create hypertables", }, { - title: "Manage materialized hypertables", - href: "materialized-hypertables", - excerpt: "Manage materialized hypertables in continuous aggregates", + title: "Change hypertable chunk intervals", + href: "change-chunk-intervals", + excerpt: "Change and view chunk time intervals for a hypertable", }, { - title: "Migrate a continuous aggregate to the new form", - href: "migrate", - excerpt: - "Migrate old continuous aggregates to the new form introduced in Timescale 2.7", + title: "Alter hypertables", + href: "alter", + excerpt: "Alter hypertables", }, { - title: "Real time aggregates", - href: "real-time-aggregates", - excerpt: "Manage real time aggregates in continuous aggregates", + title: "Create unique indexes on hypertables", + href: "hypertables-and-unique-indexes", + excerpt: "Create hypertables with unique indexes", }, { - title: "Refresh policies for continuous aggregates", - href: "refresh-policies", - excerpt: "Manage refresh policies for continuous aggregates", + title: "Improve query performance", + href: "improve-query-performance", + excerpt: "Skip chunks", }, { - title: "Time in continuous aggregates", - href: "time", - excerpt: "Manage time in continuous aggregates", + title: "Drop hypertables", + href: "drop", + excerpt: "Drop hypertables", }, { - title: "Troubleshoot continuous aggregates", + title: "Troubleshoot hypertables", href: "troubleshooting", type: "placeholder", - excerpt: "Troubleshoot continuous aggregates", + excerpt: "Troubleshooting and error fixes for hypertables", }, ], }, { - href: "data-retention", - excerpt: "Drop data by time value either automatically or manually", + title: "Schema management", + href: "schema-management", children: [ { - title: "About data retention", - href: "about-data-retention", - excerpt: "Learn about data retention in Timescale", + title: "About schemas", + href: "about-schemas", + excerpt: "About hypertable schemas", }, { - title: "About data retention with continuous aggregates", - href: "data-retention-with-continuous-aggregates", - excerpt: "Using data retention policies with continuous aggregates", + title: "About indexing", + href: "about-indexing", + excerpt: "About schema indexes", }, { - title: "Create a retention policy", - href: "create-a-retention-policy", - excerpt: "Create a data retention policy", + title: "About tablespaces", + href: "about-tablespaces", + excerpt: "About schema tablespaces", }, { - title: "Manually drop chunks", - href: "manually-drop-chunks", - excerpt: "Manually drop chunks", + title: "About constraints", + href: "about-constraints", + excerpt: "About schema constraints", }, { - title: "Troubleshooting data retention", - href: "troubleshooting", - type: "placeholder", - excerpt: "Troubleshoot data retention", + title: "Alter hypertables", + href: "alter", + excerpt: "Change the schema of a hypertable", }, - ], - }, - { - title: "High availability and read replication", - href: "ha-replicas", - excerpt: "Timescale high availability and read replication", - children: [ { - title: "Manage high availability", - href: "high-availability", - excerpt: "Set up HA replicas on Timescale for high availability", + title: "Index", + href: "indexing", + excerpt: "Create an index on a hypertable", }, { - title: "Manage read replication", - href: "read-scaling", - excerpt: "Understand how read scaling works in Timescale", + title: "Triggers", + href: "triggers", + excerpt: "Create triggers on a hypertable", + }, + { + title: "JSON", + href: "json", + excerpt: "Using JSON data types in a hypertable", + }, + { + title: "Troubleshoot schema management", + href: "troubleshooting", + type: "placeholder", }, ], }, { - title: "Hyperfunctions", - href: "hyperfunctions", - pageComponents: ["featured-cards"], - featuredChildren: [ - "/use-timescale/:currentVersion:/hyperfunctions/function-pipelines", - "/use-timescale/:currentVersion:/hyperfunctions/approx-count-distincts", - "/use-timescale/:currentVersion:/hyperfunctions/stats-aggs", - "/use-timescale/:currentVersion:/hyperfunctions/gapfilling-interpolation", - "/use-timescale/:currentVersion:/hyperfunctions/percentile-approx", - "/use-timescale/:currentVersion:/hyperfunctions/counter-aggregation", - "/use-timescale/:currentVersion:/hyperfunctions/time-weighted-averages", - ], + title: "Compression", + href: "compression", children: [ { - title: "About hyperfunctions", - href: "about-hyperfunctions", - excerpt: - "Learn about Timescale hyperfunctions for additional analysis", + title: "About compression", + href: "about-compression", + excerpt: "Learn about how compression works", }, { - title: "Approximate count distincts", - href: "approx-count-distincts", - type: "directory", - excerpt: "Count the number of unique values in a dataset", - children: [ - { - title: "Hyperloglog", - href: "hyperloglog", - tags: ["hyperfunctions", "toolkit", "query", "timescaledb"], - excerpt: "Learn about the hyperloglog hyperfunction", - }, - ], + title: "Compression design", + href: "compression-design", + excerpt: "The design of TimescaleDB compression", }, { - title: "Counter aggregation", - href: "counter-aggregation", - type: "directory", - excerpt: "Calculate statistics from gauges and counters", - children: [ - { - title: "Counter aggregates", - href: "counter-aggs", - excerpt: "Learn about the counter aggregate hyperfunction", - }, - ], + title: "About compression methods", + href: "compression-methods", + excerpt: "Learn about the different compression methods", }, { - title: "Function pipelines", - href: "function-pipelines", - excerpt: - "Use functional programming to simplify complex SQL queries", + title: "Enable a compression policy", + href: "compression-policy", + excerpt: "Create a compression policy on a hypertable", }, { - title: "Gapfilling and interpolation", - href: "gapfilling-interpolation", - type: "directory", - excerpt: "Fill in data collected at irregular time intervals", - children: [ - { - title: "Last observation carried forward", - href: "locf", - excerpt: "Learn about the locf hyperfunction", - }, - { - title: "Time bucket gapfill", - href: "time-bucket-gapfill", - excerpt: - "Learn about the time bucket gapfillling hyperfunction", - }, - ], + title: "Manual compression", + href: "manual-compression", + excerpt: "Compress data chunks", }, { - title: "Heartbeat aggregation", - href: "heartbeat-agg", - excerpt: - "Build a model of system health from a series of health check timestamps", + title: "Modify compressed data", + href: "modify-compressed-data", + excerpt: "Insert and modify data in compressed chunks", }, { - title: "Percentile approximation", - href: "percentile-approx", - type: "directory", - excerpt: "Calculate percentiles", - children: [ - { - title: "Approximate percentile", - href: "approximate-percentile", - excerpt: "Learn about the approximate percentile hyperfunction", - }, - { - title: "Advanced aggregation methods", - href: "advanced-agg", - excerpt: - "Learn about advanced aggregation methods for hyperfunctions", - }, - ], + title: "Decompress chunks", + href: "decompress-chunks", + excerpt: "Decompress data chunks", }, { - title: "Statistical aggregates", - href: "stats-aggs", - excerpt: - "Calculate descriptive statistics and models, including averages, standard deviation, linear regression, and more", + title: "Backfill historical data", + href: "backfill-historical-data", + excerpt: "Backfill historical data to compressed chunks", }, { - title: "Time-weighted averages", - href: "time-weighted-averages", - type: "directory", - excerpt: "Calculate time-weighted averages", - children: [ - { - title: "Time-weighted averages", - href: "time-weighted-average", - excerpt: "Learn about the time-weighted averages hyperfunction", - }, - ], + title: "Modify a schema", + href: "modify-a-schema", + excerpt: "Change the data schema in compressed chunks", }, { - title: "Troubleshoot hyperfunctions", + title: "Troubleshooting", href: "troubleshooting", type: "placeholder", }, ], }, { - title: "Hypercore", - href: "hypercore", - excerpt: "The Timescale hybrid row-columnar storage engine for real-time analytics, powered by time-series data", - }, - { - title: "Hypertables", - href: "hypertables", + title: "Configuration", + href: "configuration", + excerpt: "Configure your Timescale Cloud service", children: [ { - title: "About hypertables", - href: "about-hypertables", - excerpt: "Learn about hypertables in Timescale", - }, - { - title: "Alter hypertables", - href: "alter", - excerpt: "Alter hypertables", - }, - { - title: "Change hypertable chunk intervals", - href: "change-chunk-intervals", - excerpt: "Change and view chunk time intervals for a hypertable", - }, - { - title: "Create hypertables", - href: "create", - excerpt: "Create hypertables", - }, - { - title: "Create unique indexes on hypertables", - href: "hypertables-and-unique-indexes", - excerpt: "Create hypertables with unique indexes", + title: "About Configuration", + href: "about-configuration", + excerpt: + "Overview of configuration options and methods for PostgreSQL and Timescale", }, { - title: "Drop hypertables", - href: "drop", - excerpt: "Drop hypertables", + title: "Customize configuration", + href: "customize-configuration", + excerpt: "Customize your Timescale database configuration", }, { - title: "Improve query performance", - href: "improve-query-performance", - excerpt: "Skip chunks", + title: "Advanced parameters", + href: "advanced-parameters", + excerpt: + "Configure advanced database parameters for your Timescale service", }, { - title: "Troubleshoot hypertables", + title: "Troubleshooting", href: "troubleshooting", type: "placeholder", - excerpt: "Troubleshooting and error fixes for hypertables", }, ], }, { - title: "Ingest data using third-party tools", + title: "Ingest data from other sources", href: "ingest-data", children: [ { @@ -483,399 +375,391 @@ module.exports = [ ], }, { - title: "Integrate tooling with Timescale Cloud", - href: "integrations", - excerpt: "Integrate third-party solutions with Timescale Cloud", + title: "Continuous aggregates", + href: "continuous-aggregates", children: [ { - title: "Configuration and deployment", - href: "config-deploy", - excerpt: "Integrate your Timescale account with third-party configuration and deployment solutions", - children: - [ - { - title: "Terraform", - href: "terraform", - excerpt: "Manage your Timescale services via Terraform", - }, - ] + title: "About continuous aggregates", + href: "about-continuous-aggregates", + excerpt: "About continuous aggregates", }, { - title: "Data ingestion", - href: "data-ingest", - excerpt: "Integrate your Timescale database with third-party data and ingestion solutions", - children: - [ - { - title: "Telegraf", - href: "telegraf", - excerpt: "Use Telegraf with Timescale", - }, - ] + title: "Create a continuous aggregate", + href: "create-a-continuous-aggregate", + excerpt: "Create continuous aggregates", }, { - title: "Observability and alerting", - href: "observability-alerting", - excerpt: "Integrate your Timescale database with third-party observability and alerting solutions", - children: - [ - { - title: "Grafana", - href: "grafana", - excerpt: "Use Grafana with Timescale", - children: - [ - { - title: "Create a Grafana dashboard and panel", - href: "create-dashboard-and-panel", - excerpt: "Create a Grafana dashboard and panel to display your Timescale data", - }, - { - title: "Installing Grafana", - href: "installation", - excerpt: "Installing Grafana and connecting it to your Timescale service" - }, - { - title: "Use Grafana to visualize geospatial data", - href: "geospatial-dashboards", - excerpt: "Use Grafana to visualize geospatial data in Timescale", - }, - ] - }, - { - title: "Tableau", - href: "tableau", - excerpt: "Use Tableau with Timescale", - }, - ] + title: "Hierarchical continuous aggregates", + href: "hierarchical-continuous-aggregates", }, { - title: "Query and administration", - href: "query-admin", - excerpt: "Integrate your Timescale database with third-party query and administration solutions", - children: - [ - { - title: "About connecting to Timescale", - href: "about-connecting", - excerpt: "Learn about using connecting to your Timescale database", - }, - { - title: "About psql", - href: "about-psql", - excerpt: "Learn about using psql to connect to Timescale", - }, - { - title: "Connect using Azure Data Studio", - href: "azure-data-studio", - excerpt: "Install Azure Data Studio to connect to Timescale", - }, - { - title: "Connect using DBeaver", - href: "dbeaver", - excerpt: "Install DBeaver to connect to Timescale", - }, - { - title: "Connect using pgAdmin", - href: "pgadmin", - excerpt: "Install pgAdmin to connect to Timescale", - }, - { - title: "Connect using qStudio", - href: "qstudio", - excerpt: "Install qstudio to connect to Timescale", - }, - { - title: "Install psql", - href: "psql", - excerpt: "Install psql to connect to Timescale", - }, - { - title: "Troubleshooting Timescale connections", - href: "troubleshooting", - type: "placeholder", - }, - ] + title: "Refresh policies for continuous aggregates", + href: "refresh-policies", + excerpt: "Manage refresh policies for continuous aggregates", }, - ], - }, - { - title: "Maintenance and upgrades", - href: "upgrades", - excerpt: "Keep your Timescale Cloud service up-to-date", - }, - { - title: "Metrics and logging", - href: "metrics-logging", - excerpt: "Timescale metrics and logging", - children: [ { - title: "Export to Prometheus", - href: "metrics-to-prometheus", + title: "Create an index on a continuous aggregate", + href: "create-index", excerpt: - "Export telemetry data to Prometheus", + "Manage automatic index creation and manually create additional indexes", }, { - title: "Insights", - href: "insights", - excerpt: "Query-level performance insights", + title: "Time in continuous aggregates", + href: "time", + excerpt: "Manage time in continuous aggregates", }, { - title: "Service metrics", - href: "service-metrics", - excerpt: "Timescale services metrics", + title: "Drop data from continuous aggregates", + href: "drop-data", + excerpt: "Drop data from continuous aggregates", }, { - title: "Service logs", - href: "service-logs", - excerpt: "Timescale services logs", + title: "Manage materialized hypertables", + href: "materialized-hypertables", + excerpt: "Manage materialized hypertables in continuous aggregates", }, { - title: "Third-party monitoring for Timescale Cloud Services", - href: "integrations", - excerpt: - "Export telemetry data to a third-party monitoring service", + title: "Real time aggregates", + href: "real-time-aggregates", + excerpt: "Manage real time aggregates in continuous aggregates", }, - ], - }, - { - title: "PostgreSQL extensions", - href: "extensions", - excerpt: "Timescale PostgreSQL extensions", - children: [ { - title: "pgcrypto extension", - href: "pgcrypto", - excerpt: "Using the pgcrypto PostgreSQL extension", + title: "Compress continuous aggregates", + href: "compression-on-continuous-aggregates", + excerpt: "Compress continuous aggregates", }, { - title: "pgvector extension", - href: "pgvector", - excerpt: "Using the pgvector PostgreSQL extension", + title: "Migrate a continuous aggregate to the new form", + href: "migrate", + excerpt: + "Migrate old continuous aggregates to the new form introduced in Timescale 2.7", }, { - title: "postgis extension", - href: "postgis", - excerpt: "Using the postgis PostgreSQL extension", + title: "Troubleshoot continuous aggregates", + href: "troubleshooting", + type: "placeholder", + excerpt: "Troubleshoot continuous aggregates", }, - ] + ], }, { - title: "Query data", - href: "query-data", + title: "Alerting", + href: "alerting", + excerpt: "Configure alerting within Timescale", + }, + { + title: "Data retention", + href: "data-retention", + excerpt: "Drop data by time value either automatically or manually", children: [ { - title: "About querying data", - href: "about-query-data", - excerpt: "Learn how to query data in Timescale", + title: "About data retention", + href: "about-data-retention", + excerpt: "Learn about data retention in Timescale", }, { - title: "Perform DISTINCT queries with SkipScan", - href: "skipscan", - excerpt: "Make DISTINCT queries faster with SkipScan", + title: "About data retention with continuous aggregates", + href: "data-retention-with-continuous-aggregates", + excerpt: "Using data retention policies with continuous aggregates", }, { - title: "Perform advanced analytic queries", - href: "advanced-analytic-queries", - excerpt: "Use advanced analytics queries", + title: "Create a retention policy", + href: "create-a-retention-policy", + excerpt: "Create a data retention policy", }, { - title: "SELECT data", - href: "select", - excerpt: "Select data in hypertables", + title: "Manually drop chunks", + href: "manually-drop-chunks", + excerpt: "Manually drop chunks", }, { - title: "Troubleshooting", + title: "Troubleshooting data retention", href: "troubleshooting", type: "placeholder", + excerpt: "Troubleshoot data retention", }, ], }, { - title: "Schema management", - href: "schema-management", + title: "Tiered storage", + href: "data-tiering", + excerpt: "Save on storage costs by tiering older data to a low-cost bottomless object storage tier", children: [ { - title: "About constraints", - href: "about-constraints", - excerpt: "About schema constraints", + title: "About the object storage tier", + href: "about-data-tiering", + excerpt: + "Learn how the object storage tier helps you save on storage costs", }, { - title: "About indexing", - href: "about-indexing", - excerpt: "About schema indexes", + title: "Tour of tiered storage", + href: "tour-data-tiering", + excerpt: + "A quick tour of tiered storage", }, { - title: "About schemas", - href: "about-schemas", - excerpt: "About hypertable schemas", + title: "Enabling the object storage tier", + href: "enabling-data-tiering", + excerpt: + "How to enable the object storage tier", }, { - title: "About tablespaces", - href: "about-tablespaces", - excerpt: "About schema tablespaces", + title: "Manually tier data", + href: "manual-tier-chunk", + excerpt: + "How to manually tier data to the object storage tier", }, { - title: "Alter hypertables", - href: "alter", - excerpt: "Change the schema of a hypertable", + title: "Creating tiering policies", + href: "creating-data-tiering-policy", + excerpt: + "How to create a tiering policy", }, { - title: "Index", - href: "indexing", - excerpt: "Create an index on a hypertable", + title: "Querying tiered data", + href: "querying-tiered-data", + excerpt: + "How to query tiered data", }, { - title: "JSON", - href: "json", - excerpt: "Using JSON data types in a hypertable", + title: "Manually untier data", + href: "untier-data", + excerpt: "How to manualy untier data from the object storage tier", }, { - title: "Triggers", - href: "triggers", - excerpt: "Create triggers on a hypertable", + title: "Replicas and forks with tiered data", + href: "tiered-data-replicas-forks", + excerpt: + "How tiered data works on replicas and forks", }, { - title: "Troubleshoot schema management", + title: "Troubleshooting", href: "troubleshooting", type: "placeholder", }, ], }, { - title: "Security", - href: "security", - excerpt: "Learn how your Timescale instance is secured", + title: "VPC Peering and AWS PrivateLink", + href: "vpc", + excerpt: "Secure your Timescale Service with VPC Peering and AWS PrivateLink", + }, + { + title: "Hyperfunctions", + href: "hyperfunctions", + pageComponents: ["featured-cards"], + featuredChildren: [ + "/use-timescale/:currentVersion:/hyperfunctions/function-pipelines", + "/use-timescale/:currentVersion:/hyperfunctions/approx-count-distincts", + "/use-timescale/:currentVersion:/hyperfunctions/stats-aggs", + "/use-timescale/:currentVersion:/hyperfunctions/gapfilling-interpolation", + "/use-timescale/:currentVersion:/hyperfunctions/percentile-approx", + "/use-timescale/:currentVersion:/hyperfunctions/counter-aggregation", + "/use-timescale/:currentVersion:/hyperfunctions/time-weighted-averages", + ], children: [ { - title: "About security in Timescale Cloud", - href: "overview", - excerpt: "Get an overview of Timescale security", + title: "About hyperfunctions", + href: "about-hyperfunctions", + excerpt: + "Learn about Timescale hyperfunctions for additional analysis", }, { - title: "Client credentials", - href: "client-credentials", - excerpt: "Client credentials to programmatically access your Timescale account", + title: "Function pipelines", + href: "function-pipelines", + excerpt: + "Use functional programming to simplify complex SQL queries", }, { - title: "Connect with a stricter SSL mode", - href: "strict-ssl", + title: "Approximate count distincts", + href: "approx-count-distincts", + type: "directory", + excerpt: "Count the number of unique values in a dataset", + children: [ + { + title: "Hyperloglog", + href: "hyperloglog", + tags: ["hyperfunctions", "toolkit", "query", "timescaledb"], + excerpt: "Learn about the hyperloglog hyperfunction", + }, + ], + }, + { + title: "Statistical aggregates", + href: "stats-aggs", excerpt: - "Connect to Timescale with a stricter SSL mode of verify-ca or verify-full", + "Calculate descriptive statistics and models, including averages, standard deviation, linear regression, and more", }, { - title: "Multi-factor Authentication", - href: "multi-factor-authentication", - excerpt: "Multi-factor authentication for your Timescale account", + title: "Gapfilling and interpolation", + href: "gapfilling-interpolation", + type: "directory", + excerpt: "Fill in data collected at irregular time intervals", + children: [ + { + title: "Time bucket gapfill", + href: "time-bucket-gapfill", + excerpt: + "Learn about the time bucket gapfillling hyperfunction", + }, + { + title: "Last observation carried forward", + href: "locf", + excerpt: "Learn about the locf hyperfunction", + }, + ], }, { - title: "Read only role", - href: "read-only-role", - excerpt: "Create a read-only role to access your database", + title: "Percentile approximation", + href: "percentile-approx", + type: "directory", + excerpt: "Calculate percentiles", + children: [ + { + title: "Approximate percentile", + href: "approximate-percentile", + excerpt: "Learn about the approximate percentile hyperfunction", + }, + { + title: "Advanced aggregation methods", + href: "advanced-agg", + excerpt: + "Learn about advanced aggregation methods for hyperfunctions", + }, + ], }, { - title: "SAML authentication", - href: "saml", - excerpt: "SAML / SSO authentication for your Timescale account", + title: "Counter aggregation", + href: "counter-aggregation", + type: "directory", + excerpt: "Calculate statistics from gauges and counters", + children: [ + { + title: "Counter aggregates", + href: "counter-aggs", + excerpt: "Learn about the counter aggregate hyperfunction", + }, + ], + }, + { + title: "Time-weighted averages", + href: "time-weighted-averages", + type: "directory", + excerpt: "Calculate time-weighted averages", + children: [ + { + title: "Time-weighted averages", + href: "time-weighted-average", + excerpt: "Learn about the time-weighted averages hyperfunction", + }, + ], + }, + { + title: "Heartbeat aggregation", + href: "heartbeat-agg", + excerpt: + "Build a model of system health from a series of health check timestamps", + }, + { + title: "Troubleshoot hyperfunctions", + href: "troubleshooting", + type: "placeholder", }, ], }, { - title: "Tiered storage", - href: "data-tiering", - excerpt: "Save on storage costs by tiering older data to a low-cost bottomless object storage tier", + title: "Metrics and logging", + href: "metrics-logging", + excerpt: "Timescale metrics and logging", children: [ { - title: "About the object storage tier", - href: "about-data-tiering", - excerpt: - "Learn how the object storage tier helps you save on storage costs", + title: "Service metrics", + href: "service-metrics", + excerpt: "Timescale services metrics", }, { - title: "Creating tiering policies", - href: "creating-data-tiering-policy", - excerpt: - "How to create a tiering policy", + title: "Service logs", + href: "service-logs", + excerpt: "Timescale services logs", }, { - title: "Enabling the object storage tier", - href: "enabling-data-tiering", - excerpt: - "How to enable the object storage tier", + title: "Insights", + href: "insights", + excerpt: "Query-level performance insights", }, { - title: "Manually tier data", - href: "manual-tier-chunk", + title: "Third-party monitoring for Timescale Cloud Services", + href: "integrations", excerpt: - "How to manually tier data to the object storage tier", - }, - { - title: "Manually untier data", - href: "untier-data", - excerpt: "How to manualy untier data from the object storage tier", + "Export telemetry data to a third-party monitoring service", }, { - title: "Querying tiered data", - href: "querying-tiered-data", + title: "Export to Prometheus", + href: "metrics-to-prometheus", excerpt: - "How to query tiered data", + "Export telemetry data to Prometheus", }, + ], + }, + { + title: "High availability and read replication", + href: "ha-replicas", + excerpt: "Timescale high availability and read replication", + children: [ { - title: "Replicas and forks with tiered data", - href: "tiered-data-replicas-forks", - excerpt: - "How tiered data works on replicas and forks", + title: "Manage high availability", + href: "high-availability", + excerpt: "Set up HA replicas on Timescale for high availability", }, { - title: "Tour of tiered storage", - href: "tour-data-tiering", - excerpt: - "A quick tour of tiered storage", + title: "Manage read replication", + href: "read-scaling", + excerpt: "Understand how read scaling works in Timescale", }, - { - title: "Troubleshooting", - href: "troubleshooting", - type: "placeholder", - }, ], }, { - title: "Time buckets", - href: "time-buckets", - excerpt: "Aggregate data by time interval with time buckets", + title: "Maintenance and upgrades", + href: "upgrades", + excerpt: "Keep your Timescale Cloud service up-to-date", + }, + { + title: "PostgreSQL extensions", + href: "extensions", + excerpt: "Timescale PostgreSQL extensions", children: [ { - title: "About time buckets", - href: "about-time-buckets", - excerpt: "Learn how time buckets work in Timescale.", + title: "pgvector extension", + href: "pgvector", + excerpt: "Using the pgvector PostgreSQL extension", }, { - title: "Troubleshoot problems with time buckets", - href: "troubleshooting", - type: "placeholder", + title: "pgcrypto extension", + href: "pgcrypto", + excerpt: "Using the pgcrypto PostgreSQL extension", }, { - title: "Use time buckets to group time-series data", - href: "use-time-buckets", - excerpt: - "How to group time series data with the time_bucket function.", + title: "postgis extension", + href: "postgis", + excerpt: "Using the postgis PostgreSQL extension", }, - ], - }, - { - title: "Timescale Cloud regions", - href: "regions", - excerpt: "Timescale AWS regions", - }, - { - title: "Timescale limitations", - href: "limitations", - excerpt: "Current limitations of Timescale features", + ] }, { - title: "Troubleshoot Timescale", - href: "troubleshoot-timescaledb", - excerpt: "Troubleshooting Timescale", + title: "Backup, restore, and PITR", + href: "backup-restore", + children: [ + { + title: "Backup and restore", + href: "backup-restore-cloud", + excerpt: "Timescale backup and restore", + }, + { + title: "Point-in-time recovery", + href: "point-in-time-recovery", + excerpt: "PITR on Timescale services" + } + ] }, { title: "User-defined actions", @@ -886,11 +770,6 @@ module.exports = [ href: "about-user-defined-actions", excerpt: "Learn about user-defined actions", }, - { - title: "Alter and delete a user-defined action", - href: "alter-and-delete", - excerpt: "Edit and delete user-defined actions", - }, { title: "Create and register a user-defined action", href: "create-and-register", @@ -902,9 +781,9 @@ module.exports = [ excerpt: "Test and debug user-defined actions", }, { - title: "Troubleshooting", - href: "troubleshooting", - type: "placeholder", + title: "Alter and delete a user-defined action", + href: "alter-and-delete", + excerpt: "Edit and delete user-defined actions", }, { title: "Use an action for generic retention", @@ -922,60 +801,179 @@ module.exports = [ href: "example-downsample-and-compress", excerpt: "Example user-defined action for downsample and compress", }, + { + title: "Troubleshooting", + href: "troubleshooting", + type: "placeholder", + }, ], }, { - title: "User management", - href: "members", - excerpt: "User management in Timescale Cloud", + title: "Timescale Cloud integrations", + href: "integrations", + excerpt: "Integrate third-party solutions with Timescale Cloud", children: [ { - title: "Members list", - href: "members-list", - excerpt: "Timescale members list", + title: "Query and administration", + href: "query-admin", + excerpt: "Integrate your Timescale database with third-party query and administration solutions", + children: + [ + { + title: "About connecting to Timescale", + href: "about-connecting", + excerpt: "Learn about using connecting to your Timescale database", + }, + { + title: "About psql", + href: "about-psql", + excerpt: "Learn about using psql to connect to Timescale", + }, + { + title: "Install psql", + href: "psql", + excerpt: "Install psql to connect to Timescale", + }, + { + title: "Connect using Azure Data Studio", + href: "azure-data-studio", + excerpt: "Install Azure Data Studio to connect to Timescale", + }, + { + title: "Connect using DBeaver", + href: "dbeaver", + excerpt: "Install DBeaver to connect to Timescale", + }, + { + title: "Connect using pgAdmin", + href: "pgadmin", + excerpt: "Install pgAdmin to connect to Timescale", + }, + { + title: "Connect using qStudio", + href: "qstudio", + excerpt: "Install qstudio to connect to Timescale", + }, + { + title: "Troubleshooting Timescale connections", + href: "troubleshooting", + type: "placeholder", + }, + ] }, { - title: "Project Ownership", - href: "project-ownership", - excerpt: "Timescale project ownership", + title: "Configuration and deployment", + href: "config-deploy", + excerpt: "Integrate your Timescale account with third-party configuration and deployment solutions", + children: + [ + { + title: "Terraform", + href: "terraform", + excerpt: "Manage your Timescale services via Terraform", + }, + ] + }, + { + title: "Observability and alerting", + href: "observability-alerting", + excerpt: "Integrate your Timescale database with third-party observability and alerting solutions", + children: + [ + { + title: "Grafana", + href: "grafana", + excerpt: "Use Grafana with Timescale", + children: + [ + { + title: "Installing Grafana", + href: "installation", + excerpt: "Installing Grafana and connecting it to your Timescale service" + }, + { + title: "Create a Grafana dashboard and panel", + href: "create-dashboard-and-panel", + excerpt: "Create a Grafana dashboard and panel to display your Timescale data", + }, + { + title: "Use Grafana to visualize geospatial data", + href: "geospatial-dashboards", + excerpt: "Use Grafana to visualize geospatial data in Timescale", + }, + ] + }, + { + title: "Tableau", + href: "tableau", + excerpt: "Use Tableau with Timescale", + }, + ] + }, + { + title: "Data ingestion", + href: "data-ingest", + excerpt: "Integrate your Timescale database with third-party data and ingestion solutions", + children: + [ + { + title: "Telegraf", + href: "telegraf", + excerpt: "Use Telegraf with Timescale", + }, + ] }, ], }, { - title: "VPC Peering and AWS PrivateLink", - href: "vpc", - excerpt: "Secure your Timescale Service with VPC Peering and AWS PrivateLink", - }, - { - href: "write-data", + title: "Security", + href: "security", + excerpt: "Learn how your Timescale instance is secured", children: [ { - title: "About writing data", - href: "about-writing-data", - excerpt: "Write data into hypertables", + title: "Security overview", + href: "overview", + excerpt: "Get an overview of Timescale security", }, { - title: "Delete data", - href: "delete", - excerpt: "Delete data from hypertables", + title: "SAML authentication", + href: "saml", + excerpt: "SAML / SSO authentication for your Timescale account", }, { - title: "Insert data", - href: "insert", - excerpt: "Insert data into hypertables", + title: "Multi-factor Authentication", + href: "multi-factor-authentication", + excerpt: "Multi-factor authentication for your Timescale account", }, { - title: "Update data", - href: "update", - excerpt: "Update data in hypertables", + title: "Client credentials", + href: "client-credentials", + excerpt: "Client credentials to programmatically access your Timescale account", }, { - title: "Upsert data", - href: "upsert", - excerpt: "Upsert data into hypertables", + title: "Read only role", + href: "read-only-role", + excerpt: "Create a read-only role to access your database", + }, + { + title: "Connect with a stricter SSL mode", + href: "strict-ssl", + excerpt: + "Connect to Timescale with a stricter SSL mode of verify-ca or verify-full", }, ], }, + { + title: "Timescale limitations", + href: "limitations", + excerpt: "Current limitations of Timescale features", + }, + { + title: "Troubleshoot Timescale", + href: "troubleshoot-timescaledb", + excerpt: "Troubleshooting Timescale", + }, + ], }, ]; From 6810b54c0ed142bbf40dc6bc4c3aa8495ed46e8d Mon Sep 17 00:00:00 2001 From: Iain Date: Tue, 17 Sep 2024 11:45:15 +0200 Subject: [PATCH 13/25] feat: hyperstore page. --- use-timescale/hyperstore.md | 45 +++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 use-timescale/hyperstore.md diff --git a/use-timescale/hyperstore.md b/use-timescale/hyperstore.md new file mode 100644 index 0000000000..39adf0a843 --- /dev/null +++ b/use-timescale/hyperstore.md @@ -0,0 +1,45 @@ +--- +title: Hyperstore +excerpt: The Timescale hybrid row-columnar storage engine for real-time analytics, powered by time-series data +products: [cloud,] +keywords: [hyperstore, hypertable, compression, row-columnar storage] +--- + +# Hyperstore + +Hyperstore is the Timescale hybrid row-columnar storage engine, designed specifically for +real-time analytics and powered by time-series data. The advantage of hyperstore is its ability +to seamlessly switch between row-oriented and column-oriented storage. This flexibility enables +Timescale Cloud to deliver the best of both worlds, solving the key challenges in real-time analytics: + +- High ingest throughput +- Low-latency ingestion +- Fast query performance +- Efficient handling of data updates and late-arriving data +- Streamlined data management + +Hyperstore’s hybrid approach combines the benefits of row-oriented and column-oriented formats +in each Timescale Cloud service: + +- **Fast ingest with Rowstore**: new data is initially written to the rowstore, it is optimized for + high-speed inserts and updates. This process ensures that real-time applications easily handle + rapid streams of incoming data. Mutability—upserts, updates, and deletes happen seamlessly. + +- **Efficient analytics with Columnstore**: as the data _cools_ and becomes more suited for + analytics, it is automatically migrated to the columnstore. Your data is compressed into small + batches and organized for efficient, large-scale queries. This columnar format enables for + fast scanning and aggregation, optimizing performance for analytical workloads while also + saving significant storage space. + +- **Full mutability with transactional semantics**: regardless of where data is stored, + hyperstore provides full ACID support. Like in a vanilla Postgres database, inserts and updates + to the rowstore and columnstore are always consistent, and available to queries as soon as they are + completed. + +![Hyperstore workflow](https://assets.timescale.com/docs/images/hyperstore-overview.png) + +Currently, much of this functionality is made available and documented under [compression][compression]. +However, we are actively updating our APIs and documentation to fully integrate these features under the +hyperstore umbrella. + +[compression]: /use-timescale/:currentVersion:/compression/ From c595d77c97321258e30833934816b74d68b24714 Mon Sep 17 00:00:00 2001 From: Iain Date: Thu, 3 Oct 2024 14:15:35 +0200 Subject: [PATCH 14/25] chore: merge updated folder structure. --- use-timescale/page-index/page-index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/use-timescale/page-index/page-index.js b/use-timescale/page-index/page-index.js index 8e67ff5f0b..c4f477a20f 100644 --- a/use-timescale/page-index/page-index.js +++ b/use-timescale/page-index/page-index.js @@ -544,6 +544,11 @@ module.exports = [ href: "vpc", excerpt: "Secure your Timescale Service with VPC Peering and AWS PrivateLink", }, + { + title: "Hypercore", + href: "hypercore", + excerpt: "The Timescale hybrid row-columnar storage engine for real-time analytics, powered by time-series data", + }, { title: "Hyperfunctions", href: "hyperfunctions", From 0ae6cc043d66eb00f41a103af2cbce94ec89f8ef Mon Sep 17 00:00:00 2001 From: Iain Cox Date: Wed, 2 Oct 2024 16:05:07 +0200 Subject: [PATCH 15/25] fix: revert structure. (#3471) * fix: revert structure. --- use-timescale/page-index/page-index.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/use-timescale/page-index/page-index.js b/use-timescale/page-index/page-index.js index c4f477a20f..8e67ff5f0b 100644 --- a/use-timescale/page-index/page-index.js +++ b/use-timescale/page-index/page-index.js @@ -544,11 +544,6 @@ module.exports = [ href: "vpc", excerpt: "Secure your Timescale Service with VPC Peering and AWS PrivateLink", }, - { - title: "Hypercore", - href: "hypercore", - excerpt: "The Timescale hybrid row-columnar storage engine for real-time analytics, powered by time-series data", - }, { title: "Hyperfunctions", href: "hyperfunctions", From 95a6e8f5d2c84646c36526a0feb2e4c0f3854e22 Mon Sep 17 00:00:00 2001 From: Eric Clymer Date: Fri, 4 Oct 2024 12:30:49 -0500 Subject: [PATCH 16/25] Update changelog.md (#3481) * Update changelog.md --------- Signed-off-by: Eric Clymer Signed-off-by: Iain Cox --- about/changelog.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/about/changelog.md b/about/changelog.md index 3b80f83367..02048cb70c 100644 --- a/about/changelog.md +++ b/about/changelog.md @@ -8,6 +8,12 @@ keywords: [changelog, upgrades, updates, releases] All the latest features and updates to Timescale products. +## CIDR & VPC Updates + + + +Timescale now supports multiple CIDRs on the customer VPC. Customers who want to take advantage of multiple CIDRs will need to recreate their peering. + ## 🤝 New modes in Timescale Console: Ops and Data mode, and Console based Parquet File Import From 298b6495a1ee70b8d8eeae47cdb9ab1938c9de18 Mon Sep 17 00:00:00 2001 From: Iain Cox Date: Mon, 7 Oct 2024 14:40:56 +0200 Subject: [PATCH 17/25] chore: update explanation for modes in Timescale Console. (#3474) * chore: update explanation for modes in Timescale Console. Co-authored-by: atovpeko <114177030+atovpeko@users.noreply.github.com> Co-authored-by: Rahil Sondhi --- _partials/_cloud-connect.md | 15 +++--- _partials/_create-hypertable.md | 2 +- _partials/_service-overview.md | 47 ++++++++++++++++++ getting-started/run-queries-from-console.md | 55 +++++++++++---------- getting-started/services.md | 19 ++++--- use-timescale/services/service-overview.md | 6 +-- 6 files changed, 96 insertions(+), 48 deletions(-) create mode 100644 _partials/_service-overview.md diff --git a/_partials/_cloud-connect.md b/_partials/_cloud-connect.md index 7bc7c0f978..6045abbf76 100644 --- a/_partials/_cloud-connect.md +++ b/_partials/_cloud-connect.md @@ -12,8 +12,8 @@ To connect to a service: 1. **Connect to your service** Use either: - - [Data][popsql] in Timescale Console: - 1. In [`Data` in Timescale Console][portal-data-mode], select a service and enter your password, then click `Connect`. + - [Data mode][popsql] in Timescale Console: + 1. In the [data mode][portal-data-mode] in Timescale Console, select a service and enter your password, then click **Connect**. You find your password in the config file you just downloaded. 2. Select a query to edit: @@ -21,7 +21,7 @@ To connect to a service: - [SQL editor][run-sqleditor] in Timescale Console: - In [`Ops` in Timescale Console][portal-ops-mode], select a service, then click `SQL editor`. + In the [ops mode][portal-ops-mode] in Timescale Console, select a service, then click **SQL editor**. ![Check service is running](https://assets.timescale.com/docs/images/ops-view-sql-editor.png) @@ -34,12 +34,13 @@ To connect to a service: psql "postgres://tsdbadmin:@:/tsdb?sslmode=require" `} /> - You can now run queries for this service. - + You can now run queries for this service. Quick recap. You: -- Manage your services in the [`Ops` in Timescale Console][portal-ops-mode] -- Manage your data in [`Data` in Timescale Console][portal-data-mode] +- Manage your services in the [ops mode][portal-ops-mode] in Timescale Console: add read replicas and enable + high-availability, configure compression, change parameters, and so on. +- Analyze your data in the [data mode][portal-data-mode] in Timescale Console: write queries with + autocomplete, save them in folders, share them, create charts/dashboards, and much more. - Store configuration and security information in your config file. diff --git a/_partials/_create-hypertable.md b/_partials/_create-hypertable.md index c338f12b70..ad34f0ba87 100644 --- a/_partials/_create-hypertable.md +++ b/_partials/_create-hypertable.md @@ -33,7 +33,7 @@ To create a hypertable: ```sql SELECT create_hypertable('stocks_real_time', by_range('time')); ``` - In `Data`, you see the result immediately: + In data mode, you see the result immediately: ![Data mode create hypertable](https://assets.timescale.com/docs/images/data-mode-create-hypertable.png) diff --git a/_partials/_service-overview.md b/_partials/_service-overview.md new file mode 100644 index 0000000000..202e4ca4b4 --- /dev/null +++ b/_partials/_service-overview.md @@ -0,0 +1,47 @@ +Each Timescale Cloud service is a single 100% PostgreSQL database with [usage-based storage][how-plans-work]. You +manage your services and interact with your data in Timescale Console using the following modes: + + + + + + + + + + + + + + + + + +
Ops modeData mode
+ Timescale Console ops mode + + Timescale Console data mode +
+You use the ops mode to: +
    +
  • Ensure data security with high availability and read replicas
  • +
  • Save money using compressed and tiered storage
  • +
  • Enable PostgreSQL extensions to add extra functionality
  • +
  • Increase security using VPCs
  • +
  • Perform day-to-day administration
  • +
+
+Powered by PopSQL, you use the data mode to: +
    +
  • Write queries with autocomplete
  • +
  • Visualize data with charts and dashboards
  • +
  • Schedule queries and dashboards for alerts or recurring reports
  • +
  • Share queries and dashboards
  • +
+
+ +[how-plans-work]: /about/:currentVersion:/pricing-and-account-management/#how-plans-work diff --git a/getting-started/run-queries-from-console.md b/getting-started/run-queries-from-console.md index 0dbcb9ad34..201d9fd9ed 100644 --- a/getting-started/run-queries-from-console.md +++ b/getting-started/run-queries-from-console.md @@ -1,6 +1,6 @@ --- title: Run your queries from Timescale Console -excerpt: Use Data mode or SQL editor to run SQL queries, create charts and dashboards, and collaborate with teammates. +excerpt: Use the data mode or SQL editor to run SQL queries, create charts and dashboards, and collaborate with teammates. keywords: [popsql, sql editor, chart, dashboard] layout_components: [next_prev_large] content_group: Getting started @@ -9,38 +9,42 @@ content_group: Getting started # Run your queries from Timescale Console As Timescale Cloud is based on PostgreSQL, you can use lots of [different tools][integrations] to -connect to your service and interact with your data. To securely manage your date from inside -Console, Timescale offers the following Cloud SQL editors: +connect to your service and interact with your data. -- [Data mode][run-popsql]: a comprehensive UI that you use to write queries, visualize data, - and share your results. -- [SQL editor][run-sqleditor]: a simple UI to run queries for each individual service. +In Timescale Console you can use the following ways to run SQL queries against your database: +- [Data mode][run-popsql]: a rich experience powered by PopSQL. You can write queries with + autocomplete, save them in folders, share them, create charts/dashboards, and much more. -If you prefer the command line to a Cloud SQL editor, use [psql][install-psql]. +- [SQL editor in Ops mode][run-sqleditor]: a simple SQL editor in Ops mode that lets you run ad-hoc ephemeral + queries. This is useful for quick one-off tasks like creating an index on a small table or + inspecting `pg_stat_statements`. + + +If you prefer the command line to the ops mode SQL editor in Timescale Console, use [psql][install-psql]. ## Data mode -You use `Data` in Timescale Console to write queries, visualize data, and share your results. +You use the data mode in Timescale Console to write queries, visualize data, and share your results. -![Screenshot of Data](https://assets.timescale.com/docs/images/data-mode-schema-chart.png) +![Screenshot of data mode](https://assets.timescale.com/docs/images/data-mode-schema-chart.png) Available features are: -- **Real-time collaboration**: work with your team directly in the Data query editor with live presence and multiple +- **Real-time collaboration**: work with your team directly in the data mode query editor with live presence and multiple cursors. - **[Schema browser](https://docs.popsql.com/docs/schema)**: understand the structure of your database and see usage data on tables and columns. - **Autocomplete**: get suggestions as you type your queries. - **[Version history](https://docs.popsql.com/docs/version-history)**: access previous versions of a query from the built-in revision history, or connect to a git repo. -- **[Charts](https://docs.popsql.com/docs/creating-charts)**: visualize data from inside your SQL editor rather than switch to Sheets or Excel. +- **[Charts](https://docs.popsql.com/docs/creating-charts)**: visualize data from inside the UI rather than switch to Sheets or Excel. - **[Schedules](https://docs.popsql.com/docs/scheduled-queries)**: automatically refresh queries and dashboards to create push alerts. - **[Query variables](https://docs.popsql.com/docs/query-variables)**: use Liquid to parameterize your queries or use `if` statements. - **Cross platform**: works from [Timescale Console][portal-data-mode] or download the [desktop](https://popsql.com/download) app for macOS, Windows, and Linux. - **Easy connection**: to Timescale Cloud, PostgreSQL, Redshift, Snowflake, BigQuery, MySQL, SQL Server, [and more](https://popsql.com/connections). -### Connect to your Timescale Cloud service in Data mode +### Connect to your Timescale Cloud service in the data mode @@ -54,7 +58,7 @@ To connect to a service: 1. **Connect to your service** - 1. In [`Data` in Timescale Console][portal-data-mode], select a service and enter your password, then click `Connect`. + 1. In the [data mode][portal-data-mode] in Timescale Console, select a service and enter your password, then click **Connect**. ![Select a connection](https://assets.timescale.com/docs/images/data-mode-connections.png) @@ -68,14 +72,14 @@ To connect to a service: Quick recap. You: -- Manage your services in the [`Ops` in Timescale Console][portal-ops-mode] -- Manage your data in [`Data` in Timescale Console][portal-data-mode] +- Manage your services in the [ops mode in Timescale Console][portal-ops-mode] +- Manage your data in the [data mode in Timescale Console][portal-data-mode] - Store configuration and security information in your config file. -Now you have used Data mode in Timescale Console, see how to easily do the following: +Now you have used the data mode in Timescale Console, see how to easily do the following: - [Write a query](https://docs.popsql.com/docs/writing-a-query) - [Share a query with your @@ -100,12 +104,12 @@ If your Timescale Service runs inside a VPC, do one of the following to enable a - When you configure the connection in PopSQL, under `Advanced Options`, enable `Connect over SSH` - Add PopSQL's static IPs (`23.20.131.72, 54.211.234.135`) to your allowlist -#### What happens if another member of my Timescale project Data mode? +#### What happens if another member of my Timescale project uses data mode? -The number of Data mode seats you are allocated depends on your +The number of data mode seats you are allocated depends on your [Pricing Plan][pricing-plan-features]. -#### Will using Data mode affect the performance of my Timescale Cloud service? +#### Will using the data mode affect the performance of my Timescale Cloud service? There are a few factors to consider: @@ -121,11 +125,11 @@ a [read replica][readreplica] and send analytical queries there. If you'd like to prevent write operations such as insert or update. Instead of using the `tsdbadmin` superuser, create a read-only user for your service and -use that in Data mode. +use that in the data mode. -## SQL editor +## Ops mode SQL editor SQL editor is an integrated secure UI that you use to run queries and see the results for an Timescale Cloud service. @@ -135,7 +139,7 @@ for an Timescale Cloud service. To enable or disable SQL editor in your service, click `Operations` > `Service management`, then update the setting for SQL editor. -### Run queries from Console with SQL editor +### Run queries from the ops mode in Timescale Console @@ -143,7 +147,7 @@ To use SQL editor with Timescale: 1. **Open SQL editor from Timescale Console** - In [`Ops` in Timescale Console][portal-ops-mode], select a service, then click `SQL editor`. + In the [ops mode][portal-ops-mode] in Timescale Console, select a service, then click **SQL editor**. ![Check service is running](https://assets.timescale.com/docs/images/ops-view-sql-editor.png) @@ -156,9 +160,8 @@ To use SQL editor with Timescale: ## Cloud SQL editor licenses -* **SQL editor**: free for anyone with a [Timescale Cloud account][create-cloud-account]. -* **Data mode with Timescale Cloud**: the number of Cloud SQL editor seats you are allocated depends on your - [Pricing Plan][pricing-plan-features]. +* **SQL editor in the ops mode**: free for anyone with a [Timescale Cloud account][create-cloud-account]. +* **Data mode**: the number of seats you are allocated depends on your [Pricing Plan][pricing-plan-features]. * **PopSQL standalone**: there is a free plan available to everyone, as well as paid plans. See [PopSQL Pricing](https://popsql.com/pricing) for full details. diff --git a/getting-started/services.md b/getting-started/services.md index 1b0a16ec8d..35a929309a 100644 --- a/getting-started/services.md +++ b/getting-started/services.md @@ -9,25 +9,24 @@ content_group: Getting started import Install from "versionContent/_partials/_cloud-installation.mdx"; import Connect from "versionContent/_partials/_cloud-connect.mdx"; import CreateAHypertable from "versionContent/_partials/_create-hypertable.mdx"; +import ServiceOverview from "versionContent/_partials/_service-overview.mdx"; # Create your first Timescale service -You use Timescale Console to create and manage `Ops` for your Timescale Cloud services, and securely manage -`Data` in your services. - -![Timescle Console overview](https://assets.timescale.com/docs/images/console-overview.png) - -Each service is a single 100% PostgreSQL database with [usage-based storage][how-plans-work]. - Timescale Cloud offers the following PostgreSQL optimized database services: - **Time-series and Analytics**: a Timescale DB instance optimized for your [time-series and analytics][what-is-time-series] workloads. - **Dynamic PostgreSQL**: for all other workloads. A PostgreSQL instance with a [dynamic compute range][what-is-dynamic-postgres] aligned to your business needs. +- **Vector and AI**: for apps that require fast search on vector embeddings and metadata, like semantic search, image + search, RAG and Agents. Powered by Timescale Vector and available on Time-series and Dynamic PostgreSQL services. + + -This section shows you how to create a service, then connect to it using either a secure Cloud SQL -editor in Timescale Console, or command line tools. +This section shows you how to create a service, connect to it, create a standard PostgreSQL table, then +convert it into a [Hypertable][hypertables]. Anything you can do with regular PostgreSQL tables, you can +do with hypertables, just with better performance and improved an user experience for time-series data. @@ -74,4 +73,4 @@ And that is it, you are up and running. Enjoy developing with Timescale. [create-service]: https://console.cloud.timescale.com/dashboard/create_services [what-is-time-series]: https://www.timescale.com/blog/what-is-a-time-series-database/#what-is-a-time-series-database [what-is-dynamic-postgres]: https://www.timescale.com/dynamic-postgresql -[how-plans-work]: /about/:currentVersion:/pricing-and-account-management/#how-plans-work +[hypertables]: /use-timescale/:currentVersion:/hypertables/about-hypertables/#hypertable-partitioning diff --git a/use-timescale/services/service-overview.md b/use-timescale/services/service-overview.md index f5b41c0fa8..00d64a52fc 100644 --- a/use-timescale/services/service-overview.md +++ b/use-timescale/services/service-overview.md @@ -8,13 +8,11 @@ cloud_ui: path: - [services, :serviceId, overview] --- +import ServiceOverview from "versionContent/_partials/_service-overview.mdx"; # About services -You use Timescale Console to create and manage `Ops` for your Timescale Cloud services, and securely manage -`Data` in your services. - -![Timescle Console overview](https://assets.timescale.com/docs/images/console-overview.png) + When you log into your [Timescale account][cloud-login], you see the Project overview. Click a service to view run-time data and connection information. From f5e19d191a92858071d12e7766e51901c3c66c48 Mon Sep 17 00:00:00 2001 From: Iain Cox Date: Tue, 8 Oct 2024 14:51:54 +0200 Subject: [PATCH 18/25] =?UTF-8?q?chore:=20update=20docs=20with=20info=20ab?= =?UTF-8?q?out=20multiple=20CIDR=20blocks=20and=20changes=20t=E2=80=A6=20(?= =?UTF-8?q?#3479)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: update docs with info about multiple CIDR blocks, changes to pricing, and revalidate the procedure. --- use-timescale/vpc.md | 124 +++++++++++++++++++++++-------------------- 1 file changed, 65 insertions(+), 59 deletions(-) diff --git a/use-timescale/vpc.md b/use-timescale/vpc.md index 7f9d8c4be2..83f1396461 100644 --- a/use-timescale/vpc.md +++ b/use-timescale/vpc.md @@ -1,6 +1,6 @@ --- title: Virtual Private Cloud -excerpt: Use a Peering VPC and AWS PrivateLink to secure your Timescale Service +excerpt: Use a Peering VPC and AWS PrivateLink to secure your $SERVICE_LONG products: [cloud] keywords: [PrivateLink, AWS, vpc, services, operations, ] tags: [aws] @@ -9,36 +9,35 @@ cloud_ui: - [services, :serviceId, operations, vpc] --- -# Secure your Timescale Service with VPC Peering and AWS PrivateLink +# Secure your $CLOUD_LONG services with VPC Peering and AWS PrivateLink -You use Virtual Private Cloud (VPC) peering to ensure that your Timescale Services are +You use Virtual Private Cloud ($VPC) peering to ensure that your $CLOUD_LONG services are only accessible through your secured AWS infrastructure. This reduces the potential attack vector surface and improves security. -The data isolation architecture that ensures a highly secure connection between your apps and Timescale: +The data isolation architecture that ensures a highly secure connection between your apps and +$CLOUD_LONG: The AWS Security Groups dashboard -Your apps run inside your AWS Customer VPC, your Timescale Services always run -inside the secure Timescale VPC. You control secure communication between apps in -your VPC and your Timescale Services using a dedicated Peering VPC. The AWS PrivateLink connecting -Timescale VPC to the dedicated Peering VPC gives the same level of protection as using a direct AWS PrivateLink connection. -It only enables communication to be initiated from your Customer VPC to Timescale Services running -in the Timescale VPC. Timescale cannot initiate communication with your VPC. +Your apps run inside your AWS Customer VPC, your services always run +inside the secure $CLOUD_LONG $VPC. You control secure communication between apps in +your VPC and your services using a dedicated Peering VPC. The AWS PrivateLink connecting +$CLOUD_LONG $VPC to the dedicated Peering VPC gives the same level of protection as using a direct +AWS PrivateLink connection. It only enables communication to be initiated from your Customer VPC +to services running in the $CLOUD_LONG $VPC. $CLOUD_LONG cannot initiate communication with your VPC. To configure this secure connection, you first create the Peering VPC with -AWS PrivateLink in Timescale. After you have accepted and configured the +AWS PrivateLink in $CONSOLE. After you have accepted and configured the peering connection to your Customer VPC, you use AWS Security Groups to restrict the services in your Customer VPC that are visible to the Peering VPC. -The last step is to attach individual Timescale Services to the Peering -VPC. - -You can run three VPCs in each project, and each Timescale VPC can have as -many peering connections as you need. If you need more VPCs click `Support` -in Timescale Console and ask for a quota increase. +The last step is to attach individual services to the Peering VPC. +The number of VPCs you can attach to your project depends on your [pricing plan][pricing-plans]. If you +need more VPCs either contact contact [support@timescale.com](mailto:support@timescale.com) or change your +pricing plan in $CONSOLE. Each $CLOUD_LONG VPC can have as many peering connections as you need. ## Prerequisites @@ -48,51 +47,56 @@ In order to set up VPC peering you need the following permissions in your AWS ac * Configure route table rules * Configure security group and firewall rules -## Set up a secured connection between Timescale and AWS +## Set up a secured connection between $CLOUD_LONG and AWS -To connect to a Timescale Service using VPC peering, your apps and infrastructure must be already +To connect to a $SERVICE_LONG using VPC peering, your apps and infrastructure must be already running in an Amazon Web Services (AWS) VPC. You can peer your VPC from any AWS region. -However, your Timescale VPC must be within one of the [Cloud-supported regions][tsc-regions]. +However, your $CLOUD_LONG $VPC must be within one of the [Cloud-supported regions][tsc-regions]. -The stages to create a secured connection between Timescale Services and your AWS infrastructure are: +The stages to create a secured connection between $CLOUD_LONG services and your AWS infrastructure are: -1. [Create a Peering VPC in Timescale][aws-vpc-setup-vpc] +1. [Create a Peering VPC in $CONSOLE][aws-vpc-setup-vpc] 1. [Complete the VPC connection in your AWS][aws-vpc-complete] 1. [Set up security groups in your AWS][aws-vpc-security-groups] 1. [Attach a Timescale Service to the Peering VPC][aws-vpc-connect-vpcs] -### Create a Peering VPC in Timescale +### Create a Peering VPC in $CONSOLE Create the VPC and the peering connection that enables you to securely route traffic -between Timescale and your own VPC in a logically isolated virtual network. +between $CLOUD_LONG and your own VPC in a logically isolated virtual network. -1. In [Timescale Console > VPC][console-vpc], click `Create VPC`. +1. In [$CONSOLE > VPC][console-vpc], click `New VPC`. + + The number of VPCs you can attach to your project depends on your [pricing plan][pricing-plans]. If you + need more VPCs either contact contact [support@timescale.com](mailto:support@timescale.com) or change + your pricing plan in $CONSOLE. Each $CLOUD_LONG VPC can have as many peering connections as you need. + 1. Choose your region and IP range, then click `Create VPC`. - Create a new Timescale VPC + ![Create a new VPC in $CLOUD_LONG](https://assets.timescale.com/docs/images/tsc-vpc-create.png) 1. For as many peering connections as you need: 1. In the `VPC Peering` column, click `Add`. 2. Enter information about your existing AWS VPC, then click `Add Connection`. - Create a new Timescale VPC + ![Create a new $CLOUD_LONG $VPC](https://assets.timescale.com/docs/images/tsc-vpc-add-peering.png) -Timescale sends a peering request to your AWS account so you can +$CLOUD_LONG sends a peering request to your AWS account so you can [complete the VPC connection in AWS][aws-vpc-complete]. ### Complete the VPC connection in AWS -When you receive the Timescale peering request in AWS, edit your routing table to match -the `IP Range` and `CIDR block` between your AWS and Timescale VPCs. +When you receive the $CLOUD_LONG peering request in AWS, edit your routing table to match +the `IP Range` and `CIDR block` between your AWS and $CLOUD_LONG VPCs. + +When you peer a VPC with multiple CIDRs, all CIDRs are added to the $CLOUD_LONG rules automatically. +After you have finished peering, further changes in your VPC's CIDRs are not detected automatically. +If you need to refresh the CIDRs, please recreate the peering connection. The request acceptance process is an important safety mechanism. Do not accept a peering request from an unknown account. @@ -100,7 +104,7 @@ peering request from an unknown account. 1. In [AWS > VPC Dashboard > Peering connections][aws-dashboard], select the peering connection - request from Timescale. + request from $CLOUD_LONG. Copy the peering connection ID to the clipboard. The connection request starts with `pcx-`. @@ -108,9 +112,7 @@ peering request from an unknown account. that corresponds to your VPC. 1. In `Routes`, click `Edit routes`. You see the list of existing Destinations. - Create a new VPC route + ![Create a new VPC route](https://assets.timescale.com/docs/images/tsc-vpc-add-route.png). If you do not already have a destination that corresponds to the `IP range / CIDR block` of your Timescale VPC: @@ -120,7 +122,7 @@ peering request from an unknown account. * `Target`: the peering connection ID you copied to your clipboard. 2. Click `Save changes`. -Network traffic is secured between your AWS account and Timescale for this project. +Network traffic is secured between your AWS account and $CLOUD_LONG for this project. ### Set up security groups in AWS @@ -130,12 +132,13 @@ You can associate a VPC with one or more security groups and each instance in yo VPC may belong to a different set of security groups. The security group choices for your VPC are: -* Create a security group to use for your Timescale VPC only. +* Create a security group to use for your $CLOUD_LONG VPC only. * Associate your VPC with an existing security group. * Do nothing, your VPC is automatically associated with the default one. -To create a security group specific to your Timescale VPC: + +To create a security group specific to your $CLOUD_LONG VPC: 1. [AWS > VPC Dashboard > Security Groups][aws-security-groups], click `Create security group`. @@ -152,57 +155,59 @@ To create a security group specific to your Timescale VPC: * `Protocol`: `TCP` * `Port range`: `5432` * `Destination`: `Custom` - * `Info`: the CIDR block of your Timescale VPC. + * `Info`: the CIDR block of your $CLOUD_LONG VPC. 1. Click `Add rule`, then click `Create security group`. -### Attach a Timescale Service to the Peering VPC +### Attach a $CLOUD_LONG service to the Peering VPC -Now that Timescale is communicating securely with your AWS infrastructure, you can attach -one or more Timescale Services to the VPC. +Now that $CLOUD_LONG is communicating securely with your AWS infrastructure, you can attach +one or more services to the VPC. -After you attach a Timescale Service to a VPC, you can only access it through the peered +After you attach a $SERVICE_SHORT to a VPC, you can only access it through the peered AWS VPC. It is no longer accessible using the public internet. -1. In [Timescale Console > Services][console-services] select the Service you want to +1. In [$CONSOLE > Services][console-services] select the $SERVICE_SHORT you want to connect to the VPC. 1. Click `Operations` > `VPC`. 1. Select the VPC, then click `Attach VPC`. -And that is it, your Timescale Service is now securely communicating with your AWS +And that is it, your $SERVICE_SHORT is now securely communicating with your AWS account inside a VPC. -## Migrate a Timescale Service between VPCs +## Migrate a $CLOUD_LONG $SERVICE_SHORT between VPCs -To ensure that your applications continue to run without interruption, you keep -Timescale Services attached to the VPC. However, you can change the VPC your -Timescale Service is attached to, or disconnect from a VPC and enable access to the -Timescale Service from the public internet. +To ensure that your applications continue to run without interruption, you keep +$SERVICE_SHORT attached to the VPC. However, you can change the VPC your +$SERVICE_SHORT is attached to, or disconnect from a VPC and enable access to the +$SERVICE_SHORT from the public internet. -Timescale uses a different DNS for Timescale Services that are attached to a VPC. -When you migrate a Timescale Service between public access and a VPC, you need + +$CLOUD_LONG uses a different DNS for services that are attached to a VPC. +When you migrate a $SERVICE_SHORT between public access and a VPC, you need to update your connection string. + -1. In [Timescale Console > Services][console-services] select the Service to migrate. +1. In [$CONSOLE > Services][console-services] select the $SERVICE_SHORT to migrate. - If you don't have a Timescale Service, [create a new one][create-service]. + If you don't have a $SERVICE_SHORT, [create a new one][create-service]. 1. Click `Operations` > `VPC`. 1. Select the VPC, then click `Attach VPC`. Migration takes a few minutes to complete and requires a change to DNS settings for the -Service. The Service is not accessible during this time. If you receive a DNS error, allow +Service. The $SERVICE_SHORT is not accessible during this time. If you receive a DNS error, allow some time for DNS propagation. [aws-dashboard]: https://console.aws.amazon.com/vpc/home#PeeringConnections: @@ -214,10 +219,11 @@ some time for DNS propagation. [tsc-regions]: /use-timescale/:currentVersion:/regions/ -[aws-vpc-setup-vpc]: /use-timescale/:currentVersion:/vpc/#create-a-peering-vpc-in-timescale +[aws-vpc-setup-vpc]: /use-timescale/:currentVersion:/vpc/#create-a-peering-vpc-in-timescale-console [aws-vpc-complete]: /use-timescale/:currentVersion:/vpc/#complete-the-vpc-connection-in-aws [aws-vpc-security-groups]: /use-timescale/:currentVersion:/vpc/#set-up-security-groups-in-aws [aws-vpc-connect-vpcs]: /use-timescale/:currentVersion:/vpc/#attach-a-timescale-service-to-the-peering-vpc [create-service]: /getting-started/:currentVersion:/services/#create-a-timescale-cloud-service +[pricing-plans]: /about/:currentVersion:/pricing-and-account-management/ From 2fa7771a0267143d8557e53f2c401e7e369535c7 Mon Sep 17 00:00:00 2001 From: atovpeko <114177030+atovpeko@users.noreply.github.com> Date: Tue, 8 Oct 2024 20:21:11 +0500 Subject: [PATCH 19/25] Update PostgreSQL version (#3477) Co-authored-by: Iain Cox --- self-hosted/upgrades/upgrade-pg.md | 25 +++++++++++++------------ use-timescale/upgrades.md | 2 +- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/self-hosted/upgrades/upgrade-pg.md b/self-hosted/upgrades/upgrade-pg.md index 6d6d37e282..ba9e265ba3 100644 --- a/self-hosted/upgrades/upgrade-pg.md +++ b/self-hosted/upgrades/upgrade-pg.md @@ -22,19 +22,20 @@ TimescaleDB supports these PostgreSQL releases. If you are not running a compatible PostgreSQL version, make sure you upgrade PostgreSQL before you upgrade TimescaleDB: -||PostgreSQL 16|PostgreSQL 15|PostgreSQL 14|PostgreSQL 13|PostgreSQL 12|PostgreSQL 11|PostgreSQL 10|PostgreSQL 9.6| +||PostgreSQL 17|PostgreSQL 16|PostgreSQL 15|PostgreSQL 14|PostgreSQL 13|PostgreSQL 12|PostgreSQL 11|PostgreSQL 10|PostgreSQL 9.6| |-|-|-|-|-|-|-|-|-| -|TimescaleDB 2.16 and higher|✅|✅|✅|❌|❌|❌|❌|❌| -|TimescaleDB 2.15 and higher|✅|✅|✅|✅|❌|❌|❌|❌| -|TimescaleDB 2.14 and higher|✅|✅|✅|✅|❌|❌|❌|❌| -|TimescaleDB 2.13 and higher|✅|✅|✅|✅|❌|❌|❌|❌| -|TimescaleDB 2.12 and higher|❌|✅|✅|✅|❌|❌|❌|❌| -|TimescaleDB 2.10 and higher|❌|✅|✅|✅|✅|❌|❌|❌| -|TimescaleDB 2.5 to 2.9|❌|❌|✅|✅|✅|❌|❌|❌| -|TimescaleDB 2.4|❌|❌|❌|✅|✅|❌|❌|❌| -|TimescaleDB 2.1 to 2.3|❌|❌|❌|✅|✅|✅|❌|❌| -|TimescaleDB 2.0|❌|❌|❌|❌|✅|✅|❌|❌ -|TimescaleDB 1.7|❌|❌|❌|❌|✅|✅|✅|✅| +|TimescaleDB 2.17 and higher|✅|✅|✅|✅|❌|❌|❌|❌|❌| +|TimescaleDB 2.16 and higher|❌|✅|✅|✅|✅|❌|❌|❌|❌|❌| +|TimescaleDB 2.15 and higher|❌|✅|✅|✅|✅|✅|❌|❌|❌|❌| +|TimescaleDB 2.14 and higher|❌|✅|✅|✅|✅|✅|❌|❌|❌|❌| +|TimescaleDB 2.13 and higher|❌|✅|✅|✅|✅|❌|❌|❌|❌| +|TimescaleDB 2.12 and higher|❌|❌|✅|✅|✅|❌|❌|❌|❌| +|TimescaleDB 2.10 and higher|❌|❌|✅|✅|✅|✅|❌|❌|❌| +|TimescaleDB 2.5 to 2.9|❌|❌|❌|✅|✅|✅|❌|❌|❌| +|TimescaleDB 2.4|❌|❌|❌|❌|✅|✅|❌|❌|❌| +|TimescaleDB 2.1 to 2.3|❌|❌|❌|❌|✅|✅|✅|❌|❌| +|TimescaleDB 2.0|❌|❌|❌|❌|❌|✅|✅|❌|❌ +|TimescaleDB 1.7|❌|❌|❌|❌|❌|✅|✅|✅|✅| You need to upgrade PostgreSQL and TimescaleDB in two separate steps. This is so that you can make sure each upgrade completes properly. For example, if you are diff --git a/use-timescale/upgrades.md b/use-timescale/upgrades.md index 20f361556a..bff4a8b494 100644 --- a/use-timescale/upgrades.md +++ b/use-timescale/upgrades.md @@ -119,7 +119,7 @@ can plan accordingly. However, in some cases, we might not be able to do so. ## Upgrade to a new PostgreSQL version -Timescale currently supports PostgreSQL 14, 15, and 16. You can see +Timescale currently supports PostgreSQL 14, 15, 16, and 17. You can see your PostgreSQL and Timescale versions from the Timescale service overview page. From e179286cf95252ba4d41c69702721644a94d78de Mon Sep 17 00:00:00 2001 From: atovpeko <114177030+atovpeko@users.noreply.github.com> Date: Tue, 8 Oct 2024 20:26:21 +0500 Subject: [PATCH 20/25] foreign key constraint update (#3492) Co-authored-by: Iain Cox --- api/create_hypertable.md | 3 +-- use-timescale/limitations.md | 2 +- use-timescale/schema-management/about-constraints.md | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/api/create_hypertable.md b/api/create_hypertable.md index 9950a8f06c..6d6592707b 100644 --- a/api/create_hypertable.md +++ b/api/create_hypertable.md @@ -61,8 +61,7 @@ in the table. It can also run into deadlock if foreign key constraints exist to other tables. When converting a normal SQL table to a hypertable, pay attention to how you handle -constraints. A hypertable can contain foreign keys to normal SQL table columns, -but the reverse is not allowed. UNIQUE and PRIMARY constraints must include the +constraints. A hypertable can contain foreign keys to normal SQL table columns and vice versa. However, this does not work between hypertables. UNIQUE and PRIMARY constraints must include the partitioning key. The deadlock is likely to happen when concurrent transactions simultaneously try diff --git a/use-timescale/limitations.md b/use-timescale/limitations.md index 4f68b25871..48891f186a 100644 --- a/use-timescale/limitations.md +++ b/use-timescale/limitations.md @@ -14,12 +14,12 @@ hypertables. ## Hypertable limitations -* Foreign key constraints referencing a hypertable are not supported. * Time dimensions (columns) used for partitioning cannot have NULL values. * Unique indexes must include all columns that are partitioning dimensions. * `UPDATE` statements that move values between partitions (chunks) are not supported. This includes upserts (`INSERT ... ON CONFLICT UPDATE`). +* Foreign key constraints from a hypertable referencing another hypertable are not supported. ## Distributed hypertable limitations diff --git a/use-timescale/schema-management/about-constraints.md b/use-timescale/schema-management/about-constraints.md index 430caf0e7f..927fbf0ea2 100644 --- a/use-timescale/schema-management/about-constraints.md +++ b/use-timescale/schema-management/about-constraints.md @@ -13,7 +13,7 @@ delete constraints on your hypertables, the constraints are propagated to the underlying chunks, and to any indexes. Hypertables support all standard PostgreSQL constraint types, except for -foreign key constraints on other tables that reference values in a hypertable. +foreign key constraints from a hypertable referencing another hypertable. For example, you can create a table that only allows positive device IDs, and non-null temperature readings. You can also check that time values for all From 55742b7711eda0af4ad06bfb5a7ca5aca2e6795a Mon Sep 17 00:00:00 2001 From: Vineeth Pothulapati Date: Wed, 9 Oct 2024 12:48:49 +0530 Subject: [PATCH 21/25] Remove live-migration reference to docker image URL (#3493) * Remove reference to docker website The live-migration documentation serves as our primary resource, with the first line highlighting live-migration. Additionally, since there's no specific content for live-migration on Docker Hub, we should avoid referencing the Docker image page. Signed-off-by: Vineeth Pothulapati * Update live-migration.md Signed-off-by: Vineeth Pothulapati --------- Signed-off-by: Vineeth Pothulapati --- migrate/live-migration.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/migrate/live-migration.md b/migrate/live-migration.md index 85d29daf87..135146bf2c 100644 --- a/migrate/live-migration.md +++ b/migrate/live-migration.md @@ -21,13 +21,10 @@ import Troubleshooting from "versionContent/_partials/_migrate_live_migrate_faq_ # Live migration -You use the [live-migration][live-migration-docker-image] Docker image to move 100GB-10TB+ of data to a Timescale Cloud service -seamlessly with only a few minutes downtime. +Live-migration is an end-to-end solution that copies the database schema and data to +your target Timescale Cloud service, then replicates the database activity in your source database to the target service in real-time. Live-migration uses the PostgreSQL logical decoding functionality and leverages [pgcopydb]. -[Live-migration][live-migration-docker-image] is an end-to-end solution that copies the database schema and data to -your target Timescale Cloud service, then replicates the database activity in your source database -to the target service in real-time. Live-migration uses the PostgreSQL logical decoding -functionality and leverages [pgcopydb]. +You use the live-migration Docker image to move 100GB-10TB+ of data to a Timescale Cloud service seamlessly with only a few minutes downtime. Best practice is to use live-migration when: - Modifying your application logic to perform dual writes is a significant effort. @@ -144,4 +141,3 @@ This section shows you how to workaround issues frequently seen issues using Liv [FAQ]: /migrate/:currentVersion:/troubleshooting [pgcopydb]: https://github.com/dimitri/pgcopydb [install-docker]: https://docs.docker.com/engine/install/ -[live-migration-docker-image]: https://hub.docker.com/r/timescale/live-migration From ec1c2d949076c9babdcc6f8a7026dec62e4b1966 Mon Sep 17 00:00:00 2001 From: atovpeko <114177030+atovpeko@users.noreply.github.com> Date: Wed, 9 Oct 2024 12:59:32 +0500 Subject: [PATCH 22/25] Timestamp vs timestamptz explanation (#3491) Clarified the use of timestamp/timestamptz for partitioning hypertables --- api/dimension_info.md | 6 +++++- use-timescale/hypertables/create.md | 5 +---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/api/dimension_info.md b/api/dimension_info.md index 3a58f00c80..3278703b2c 100644 --- a/api/dimension_info.md +++ b/api/dimension_info.md @@ -53,7 +53,7 @@ Creates a by-range dimension builder that can be used with ### Returns -A *dimension builder*, which is an which is an opaque type +A *dimension builder*, which is an opaque type `_timescaledb_internal.dimension_info`, holding the dimension information. @@ -65,6 +65,10 @@ The `partition_interval` should be specified as follows: `DATE`, this length should be specified either as an `INTERVAL` type or an integer value in *microseconds*. + + While both `timestamp` and `timestamptz` data types are supported for partitioning columns, best practice is to use `timestamptz`. [PostgreSQL timestamp](https://wiki.postgresql.org/wiki/Don't_Do_This#Don.27t_use_timestamp_.28without_time_zone.29) explains why using `timestamp` is discouraged. + + - If the column is some other integer type, this length should be an integer that reflects the column's underlying semantics (for example, the `partition_interval` should be given in milliseconds if this column diff --git a/use-timescale/hypertables/create.md b/use-timescale/hypertables/create.md index 12a95bd128..6c13915568 100644 --- a/use-timescale/hypertables/create.md +++ b/use-timescale/hypertables/create.md @@ -24,10 +24,7 @@ available](/api/:currentVersion:/hypertable/create_hypertable_old/). To create a hypertable, you need to create a standard PostgreSQL table, and then convert it into a hypertable. -Hypertables are intended for time-series data, so your table needs a column that -holds time values. This can be a timestamptz, date, or integer. Ensure that you -set the datatype for the `time` column as `timestamptz` and not `timestamp`. For -more information, see [PostgreSQL timestamp][postgresql-timestamp]. +Hypertables are designed for real-time analytics and typically partitioned by columns that hold time values. These can be of the `timestamptz`, `date`, or `integer` types. While `timestamp` is also supported, best practice is to use `timestamptz` instead. [PostgreSQL timestamp](https://wiki.postgresql.org/wiki/Don't_Do_This#Don.27t_use_timestamp_.28without_time_zone.29) explains why using `timestamp` is discouraged. From b979efc97e1917d2c603619304db781b6492fe21 Mon Sep 17 00:00:00 2001 From: Iain Cox Date: Wed, 9 Oct 2024 10:22:20 +0200 Subject: [PATCH 23/25] fix: automatic compression compresses chunks automatically :-). (#3489) --- use-timescale/compression/manual-compression.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/use-timescale/compression/manual-compression.md b/use-timescale/compression/manual-compression.md index 95cceedfa4..280c1b622f 100644 --- a/use-timescale/compression/manual-compression.md +++ b/use-timescale/compression/manual-compression.md @@ -7,9 +7,8 @@ keywords: [compression, hypertables] # Manually compress chunks -In most cases, an [automated compression policy][add_compression_policy] is sufficient to manually compress your chunks. However, if you -want more control over compression, you can also manually compress specific -chunks. +In most cases, an [automated compression policy][add_compression_policy] is sufficient to automatically compress your +chunks. However, if you want more control over compression, you can also manually compress specific chunks. Before you start, you need a list of chunks to compress. In this example, you use a hypertable called `example`, and compress chunks older than three days. From 236034c8a62bd5283da623aef36bf8026af918e9 Mon Sep 17 00:00:00 2001 From: Iain Date: Wed, 9 Oct 2024 11:19:28 +0200 Subject: [PATCH 24/25] chore: rebase. --- use-timescale/page-index/page-index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/use-timescale/page-index/page-index.js b/use-timescale/page-index/page-index.js index 8e67ff5f0b..9edd00813c 100644 --- a/use-timescale/page-index/page-index.js +++ b/use-timescale/page-index/page-index.js @@ -158,6 +158,11 @@ module.exports = [ }, ], }, + { + title: "Hypercore", + href: "hypercore", + excerpt: "The Timescale hybrid row-columnar storage engine for real-time analytics, powered by time-series data", + }, { title: "Hypertables", href: "hypertables", From 3b62ec71e9389978744c98fa01f341fcc3a6d8c0 Mon Sep 17 00:00:00 2001 From: Iain Date: Wed, 9 Oct 2024 11:20:03 +0200 Subject: [PATCH 25/25] chore: rebase. --- use-timescale/hyperstore.md | 45 ------------------------------------- 1 file changed, 45 deletions(-) delete mode 100644 use-timescale/hyperstore.md diff --git a/use-timescale/hyperstore.md b/use-timescale/hyperstore.md deleted file mode 100644 index 39adf0a843..0000000000 --- a/use-timescale/hyperstore.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Hyperstore -excerpt: The Timescale hybrid row-columnar storage engine for real-time analytics, powered by time-series data -products: [cloud,] -keywords: [hyperstore, hypertable, compression, row-columnar storage] ---- - -# Hyperstore - -Hyperstore is the Timescale hybrid row-columnar storage engine, designed specifically for -real-time analytics and powered by time-series data. The advantage of hyperstore is its ability -to seamlessly switch between row-oriented and column-oriented storage. This flexibility enables -Timescale Cloud to deliver the best of both worlds, solving the key challenges in real-time analytics: - -- High ingest throughput -- Low-latency ingestion -- Fast query performance -- Efficient handling of data updates and late-arriving data -- Streamlined data management - -Hyperstore’s hybrid approach combines the benefits of row-oriented and column-oriented formats -in each Timescale Cloud service: - -- **Fast ingest with Rowstore**: new data is initially written to the rowstore, it is optimized for - high-speed inserts and updates. This process ensures that real-time applications easily handle - rapid streams of incoming data. Mutability—upserts, updates, and deletes happen seamlessly. - -- **Efficient analytics with Columnstore**: as the data _cools_ and becomes more suited for - analytics, it is automatically migrated to the columnstore. Your data is compressed into small - batches and organized for efficient, large-scale queries. This columnar format enables for - fast scanning and aggregation, optimizing performance for analytical workloads while also - saving significant storage space. - -- **Full mutability with transactional semantics**: regardless of where data is stored, - hyperstore provides full ACID support. Like in a vanilla Postgres database, inserts and updates - to the rowstore and columnstore are always consistent, and available to queries as soon as they are - completed. - -![Hyperstore workflow](https://assets.timescale.com/docs/images/hyperstore-overview.png) - -Currently, much of this functionality is made available and documented under [compression][compression]. -However, we are actively updating our APIs and documentation to fully integrate these features under the -hyperstore umbrella. - -[compression]: /use-timescale/:currentVersion:/compression/