TigerData logo
TigerData logo
  • Product

    Product

    Tiger Cloud

    Robust elastic cloud platform for startups and enterprises

    TimescaleDB Enterprise

    Self-managed TimescaleDB for on-prem, edge and private cloud

    Open source

    TimescaleDB

    Time-series, real-time analytics and events on Postgres

    Search

    Vector and keyword search on Postgres

  • Industry

    Data Centers

    Energy & Utilities

    Oil & Gas Operations

    Smart Manufacturing

    Crypto

  • Docs
  • Pricing
  • Developer Hub

    Changelog

    Benchmarks

    Blog

    Community

    Customer Stories

    Events

    Support

    Integrations

    Launch Hub

  • Company

    About

    TigerData logo

    Timescale

    Partners

    Security

    Careers

Contact usStart a free trial
Home
Time Series Forecasting with PostgreSQL: Methods, SQL Examples, and When to Use PythonThe Best Time-Series Databases Compared (2026)Time Series Anomaly Detection: Methods, SQL, and Real-Time ImplementationAWS Timestream Alternatives: Your Migration Options After LiveAnalyticsWhat Is Temporal Data?Time-Series Database: What It Is, How It Works, and When You Need OneIs Your Data Time Series? Data Types Supported by PostgreSQL and TimescaleUnderstanding Database Workloads: Variable, Bursty, and Uniform PatternsTime-Series Analysis and Forecasting With Python What Are Open-Source Time-Series Databases—Understanding Your OptionsStationary Time-Series AnalysisAlternatives to TimescaleWhy Consider Using PostgreSQL for Time-Series Data?Time-Series Analysis in RWhat Is a Time Series and How Is It Used?How to Work With Time Series in Python?Tools for Working With Time-Series Analysis in PythonGuide to Time-Series Analysis in PythonUnderstanding Autoregressive Time-Series ModelingCreating a Fast Time-Series Graph With Postgres Materialized Views
What Is DCIM Software, and What Database Does It Use?Data Center Power Monitoring: The Database Layer Behind PUE, PDU, and Sustainability MetricsPrometheus Long-Term Storage: Thanos, Mimir, VictoriaMetrics, and PostgreSQL Compared
PostgreSQL vs. Cassandra: The Decision Framework for Time-Series and Write-Heavy WorkloadsUnderstanding PostgreSQLOptimizing Your Database: A Deep Dive into PostgreSQL Data TypesUnderstanding FROM in PostgreSQL (With Examples)How to Address ‘Error: Could Not Resize Shared Memory Segment’ Understanding FILTER in PostgreSQL (With Examples)How to Install PostgreSQL on MacOSUnderstanding GROUP BY in PostgreSQL (With Examples)Understanding LIMIT in PostgreSQL (With Examples)Understanding PostgreSQL FunctionsUnderstanding ORDER BY in PostgreSQL (With Examples)PostgreSQL Mathematical Functions: Enhancing Coding EfficiencyUnderstanding PostgreSQL WITHIN GROUPUnderstanding WINDOW in PostgreSQL (With Examples)Using PostgreSQL String Functions for Improved Data AnalysisUnderstanding DISTINCT in PostgreSQL (With Examples)PostgreSQL Joins : A SummaryUnderstanding PostgreSQL Date and Time FunctionsWhat Is a PostgreSQL Cross Join?Understanding ACID Compliance Understanding PostgreSQL Conditional FunctionsStructured vs. Semi-Structured vs. Unstructured Data in PostgreSQLUnderstanding percentile_cont() and percentile_disc() in PostgreSQL5 Common Connection Errors in PostgreSQL and How to Solve ThemData Processing With PostgreSQL Window FunctionsPostgreSQL Join Type TheoryA Guide to PostgreSQL ViewsData Partitioning: What It Is and Why It MattersUnderstanding PostgreSQL Array FunctionsUnderstanding PostgreSQL's COALESCE FunctionUnderstanding the rank() and dense_rank() Functions in PostgreSQLWhat Is a PostgreSQL Left Join? And a Right Join?Strategies for Improving Postgres JOIN PerformanceUnderstanding Foreign Keys in PostgreSQLUnderstanding PostgreSQL User-Defined FunctionsUnderstanding SQL Aggregate FunctionsUsing PostgreSQL UPDATE With JOINHow to Install PostgreSQL on LinuxUnderstanding HAVING in PostgreSQL (With Examples)How to Fix No Partition of Relation Found for Row in Postgres DatabasesHow to Fix Transaction ID Wraparound ExhaustionUnderstanding WHERE in PostgreSQL (With Examples)Understanding OFFSET in PostgreSQL (With Examples)What Is a PostgreSQL Inner Join?Understanding PostgreSQL SELECTWhat Is Data Compression and How Does It Work?What Is Data Transformation, and Why Is It Important?What Characters Are Allowed in PostgreSQL Strings?Understanding the Postgres string_agg FunctionWhat Is a PostgreSQL Full Outer Join?Self-Hosted or Cloud Database? A Countryside Reflection on Infrastructure ChoicesUnderstanding the Postgres extract() Function
AWS Timestream for InfluxDB Alternative: When You Need to Look FurtherHow to Migrate from AWS Timestream to PostgreSQL: A Technical GuideHow to Choose a Database: A Decision Framework for Modern ApplicationsPostgreSQL Performance Tuning: Key ParametersA Guide to Scaling PostgreSQLHandling Large Objects in PostgresGuide to PostgreSQL PerformanceDetermining the Optimal Postgres Partition SizeNavigating Growing PostgreSQL Tables With Partitioning (and More)SQL/JSON Data Model and JSON in SQL: A PostgreSQL PerspectiveHow to Use PostgreSQL for Data TransformationPostgreSQL Performance Tuning: Designing and Implementing Your Database SchemaPostgreSQL Performance Tuning: Optimizing Database IndexesWhen to Consider Postgres PartitioningDesigning Your Database Schema: Wide vs. Narrow Postgres TablesBest Practices for Time-Series Data Modeling: Single or Multiple Partitioned Table(s) a.k.a. Hypertables What Is a PostgreSQL Temporary View?PostgreSQL Performance Tuning: How to Size Your DatabaseHow to Compute Standard Deviation With PostgreSQLRecursive Query in SQL: What It Is, and How to Write OneHow to Query JSON Metadata in PostgreSQLHow to Query JSONB in PostgreSQLHow to Reduce Bloat in Large PostgreSQL TablesBest Practices for (Time-)Series Metadata Tables A Guide to Data Analysis on PostgreSQLGuide to PostgreSQL SecurityOptimizing Array Queries With GIN Indexes in PostgreSQLPg_partman vs. Hypertables for Postgres PartitioningTop PostgreSQL Drivers for PythonAn Intro to Data Modeling on PostgreSQLGuide to PostgreSQL Database OperationsUnderstanding PostgreSQL TablespacesWhat Is Audit Logging and How to Enable It in PostgreSQLGuide to Postgres Data ManagementHow to Index JSONB Columns in PostgreSQLHow to Monitor and Optimize PostgreSQL Index PerformanceA Guide to pg_restore (and pg_restore Example)Explaining PostgreSQL EXPLAINA PostgreSQL Database Replication GuideHow PostgreSQL Data Aggregation WorksHow to Use Psycopg2: The PostgreSQL Adapter for PythonBuilding a Scalable DatabaseGuide to PostgreSQL Database Design
PostgreSQL Compression: Every Option, When To Use Each, and What To ExpectBest Practices for Postgres Data ManagementHow to Store Video in PostgreSQL Using BYTEABest Practices for Postgres PerformanceHow to Design Your PostgreSQL Database: Two Schema ExamplesBest Practices for Scaling PostgreSQLHow to Handle High-Cardinality Data in PostgreSQLBest Practices for PostgreSQL AggregationBest Practices for Postgres Database ReplicationHow to Use a Common Table Expression (CTE) in SQLBest Practices for Postgres SecurityBest Practices for PostgreSQL Database OperationsBest Practices for PostgreSQL Data AnalysisTesting Postgres Ingest: INSERT vs. Batch INSERT vs. COPYHow to Manage Your Data With Data Retention PoliciesHow to Use PostgreSQL for Data Normalization
PostgreSQL Extensions: amcheckPostgreSQL Extensions: Turning PostgreSQL Into a Vector Database With pgvectorPostgreSQL Extensions: Unlocking Multidimensional Points With Cube PostgreSQL Extensions: hstorePostgreSQL Extensions: ltreePostgreSQL Extensions: Secure Your Time-Series Data With pgcryptoPostgreSQL Extensions: pg_prewarmPostgreSQL Extensions: pgRoutingPostgreSQL Extensions: pg_stat_statementsPostgreSQL Extensions: Database Testing With pgTAPPostgreSQL Extensions: Install pg_trgm for Data MatchingPostgreSQL Extensions: PL/pgSQLPostgreSQL Extensions: Using PostGIS and Timescale for Advanced Geospatial InsightsPostgreSQL Extensions: Intro to uuid-ossp
What Is ClickHouse and How Does It Compare to PostgreSQL and TimescaleDB for Time Series?Timescale vs. Amazon RDS PostgreSQL: Up to 350x Faster Queries, 44 % Faster Ingest, 95 % Storage Savings for Time-Series DataWhat We Learned From Benchmarking Amazon Aurora PostgreSQL ServerlessTimescaleDB vs. Amazon Timestream: 6,000x Higher Inserts, 5-175x Faster Queries, 150-220x CheaperHow to Store Time-Series Data in MongoDB and Why That’s a Bad IdeaPostgreSQL + TimescaleDB: 1,000x Faster Queries, 90 % Data Compression, and Much MoreEye or the Tiger: Benchmarking Cassandra vs. TimescaleDB for Time-Series Data
Smart Grid Data Platform: Architecting for SCADA, AMI, PMU, and DERMS Data at ScaleDigital Twin Architecture: The Database and Data Model Behind a Digital TwinCAN Bus Data Logger: Decoding DBC and J1939 Signals into PostgresPredictive Maintenance Database Architecture: Storing and Querying Sensor Data for Failure PredictionPhysical AI Telemetry: Database Architecture for Autonomous-Vehicle FleetsPlant Historian: What It Captures and Where the Analytics Layer BeginsManufacturing Analytics Database: Architecture for Real-Time Production DataRobot Fleet Telemetry: Database Architecture for AMR, Industrial Robot, and Service Robot DataData Center Monitoring: What Database Stores Your Telemetry?Fleet Telemetry Database: How to Store and Query Vehicle Sensor Data at ScaleEV Charging Management System: Architecture, OCPP Data, and the Right DatabaseIIoT Database Requirements: Six Things Your Database Must DoWater Utilities Database: How to Store and Query SCADA, AMI, and Quality Data at ScaleWhat Is an Edge Database? On-Device Storage, Sync Patterns, and Choosing the Right StackA Beginner’s Guide to IIoT and Industry 4.0Data Historian vs. Time-Series Database: How to Choose and When to SwitchWhat Is a Data Historian?The Best Databases for IoT in 2026: A Practical ComparisonHow Hopthru Powers Real-Time Transit Analytics From a 1 TB TableUnderstanding IoT (Internet of Things)Storing IoT Data: 8 Reasons Why You Should Use PostgreSQLHow to Simulate a Basic IoT Sensor Dataset on PostgreSQLFrom Ingest to Insights in Milliseconds: Everactive's Tech Transformation With TimescaleHow Ndustrial Is Providing Fast Real-Time Queries and Safely Storing Client Data With 97 % CompressionWhy You Should Use PostgreSQL for Industrial IoT Data Migrating a Low-Code IoT Platform Storing 20M Records/DayHow United Manufacturing Hub Is Introducing Open Source to ManufacturingBuilding IoT Pipelines for Faster Analytics With IoT CoreVisualizing IoT Data at Scale With Hopara and TimescaleDB
A Brief History of AI: How Did We Get Here, and What's Next?A Beginner’s Guide to Vector EmbeddingsPostgreSQL as a Vector Database: A Pgvector TutorialUsing Pgvector With PythonHow to Choose a Vector DatabaseVector Databases Are the Wrong AbstractionUnderstanding DiskANNA Guide to Cosine SimilarityStreaming DiskANN: How We Made PostgreSQL as Fast as Pinecone for Vector DataImplementing Cosine Similarity in PythonVector Database Basics: HNSWVector Database Options for AWSVector Store vs. Vector Database: Understanding the ConnectionPgvector vs. Pinecone: Vector Database Performance and Cost ComparisonHow to Build LLM Applications With Pgvector Vector Store in LangChainHow to Implement RAG With Amazon Bedrock and LangChainRAG Is More Than Just Vector SearchRefining Vector Search Queries With Time Filters in Pgvector: A TutorialUnderstanding Semantic SearchVector Search vs Semantic SearchHNSW vs. DiskANNWhen Should You Use Full-Text Search vs. Vector Search?Building AI Agents with Persistent Memory: A Unified Database ApproachWhat Is Vector Search? Text-to-SQL: A Developer’s Zero-to-Hero GuideNearest Neighbor Indexes: What Are IVFFlat Indexes in Pgvector and How Do They WorkPostgreSQL Hybrid Search Using Pgvector and CohereBuilding an AI Image Gallery With OpenAI CLIP, Claude Sonnet 3.5, and Pgvector
Understanding OLTPUnderstanding OLAP: What It Is, How It Differs From OLTP, and Running It on PostgreSQLColumnar Databases vs. Row-Oriented Databases: Which to Choose?How to Choose an OLAP DatabaseHow to Choose a Real-Time Analytics DatabaseData Analytics vs. Real-Time Analytics: How to Pick Your Database (and Why It Should Be PostgreSQL)PostgreSQL as a Real-Time Analytics DatabaseWhat Is the Best Database for Real-Time AnalyticsHow to Build an IoT Pipeline for Real-Time Analytics in PostgreSQL
Alternatives to RDSWhy Is RDS so Expensive? Understanding RDS Pricing and CostsEstimating RDS CostsHow to Migrate From AWS RDS for PostgreSQL to TimescaleAmazon Aurora vs. RDS: Understanding the Difference
5 InfluxDB Alternatives for Your Time-Series Data8 Reasons to Choose Timescale as Your InfluxDB Alternative InfluxQL, Flux, and SQL: Which Query Language Is Best? (With Cheatsheet)What InfluxDB Got WrongTimescaleDB vs. InfluxDB: Purpose Built Differently for Time-Series Data
Time-Series Downsampling: The Complete Guide to Tiered Data Resolution in SQLContinuous Aggregates: Incremental Materialized Views for Time-Series DataHow to Migrate Your Data to Timescale (3 Ways)Is Postgres Partitioning Really That Hard? An Introduction To HypertablesComplete Guide: Migrating from MongoDB to Tiger Data (Step-by-Step)Postgres TOAST vs. Timescale CompressionBuilding Python Apps With PostgreSQL: A Developer's GuideMore Time-Series Data Analysis, Fewer Lines of Code: Meet HyperfunctionsPostgreSQL Materialized Views and Where to Find Them5 Ways to Monitor Your PostgreSQL DatabaseTimescale Tips: Testing Your Chunk SizeData Visualization in PostgreSQL With Apache Superset
Postgres cheat sheet
HomeTime-series basicsData Center & Infrastructure TelemetryPostgres basicsPostgres guidesPostgres best practicesPostgres extensions
Home
Time Series Forecasting with PostgreSQL: Methods, SQL Examples, and When to Use PythonThe Best Time-Series Databases Compared (2026)Time Series Anomaly Detection: Methods, SQL, and Real-Time ImplementationAWS Timestream Alternatives: Your Migration Options After LiveAnalyticsWhat Is Temporal Data?Time-Series Database: What It Is, How It Works, and When You Need OneIs Your Data Time Series? Data Types Supported by PostgreSQL and TimescaleUnderstanding Database Workloads: Variable, Bursty, and Uniform PatternsTime-Series Analysis and Forecasting With Python What Are Open-Source Time-Series Databases—Understanding Your OptionsStationary Time-Series AnalysisAlternatives to TimescaleWhy Consider Using PostgreSQL for Time-Series Data?Time-Series Analysis in RWhat Is a Time Series and How Is It Used?How to Work With Time Series in Python?Tools for Working With Time-Series Analysis in PythonGuide to Time-Series Analysis in PythonUnderstanding Autoregressive Time-Series ModelingCreating a Fast Time-Series Graph With Postgres Materialized Views
What Is DCIM Software, and What Database Does It Use?Data Center Power Monitoring: The Database Layer Behind PUE, PDU, and Sustainability MetricsPrometheus Long-Term Storage: Thanos, Mimir, VictoriaMetrics, and PostgreSQL Compared
PostgreSQL vs. Cassandra: The Decision Framework for Time-Series and Write-Heavy WorkloadsUnderstanding PostgreSQLOptimizing Your Database: A Deep Dive into PostgreSQL Data TypesUnderstanding FROM in PostgreSQL (With Examples)How to Address ‘Error: Could Not Resize Shared Memory Segment’ Understanding FILTER in PostgreSQL (With Examples)How to Install PostgreSQL on MacOSUnderstanding GROUP BY in PostgreSQL (With Examples)Understanding LIMIT in PostgreSQL (With Examples)Understanding PostgreSQL FunctionsUnderstanding ORDER BY in PostgreSQL (With Examples)PostgreSQL Mathematical Functions: Enhancing Coding EfficiencyUnderstanding PostgreSQL WITHIN GROUPUnderstanding WINDOW in PostgreSQL (With Examples)Using PostgreSQL String Functions for Improved Data AnalysisUnderstanding DISTINCT in PostgreSQL (With Examples)PostgreSQL Joins : A SummaryUnderstanding PostgreSQL Date and Time FunctionsWhat Is a PostgreSQL Cross Join?Understanding ACID Compliance Understanding PostgreSQL Conditional FunctionsStructured vs. Semi-Structured vs. Unstructured Data in PostgreSQLUnderstanding percentile_cont() and percentile_disc() in PostgreSQL5 Common Connection Errors in PostgreSQL and How to Solve ThemData Processing With PostgreSQL Window FunctionsPostgreSQL Join Type TheoryA Guide to PostgreSQL ViewsData Partitioning: What It Is and Why It MattersUnderstanding PostgreSQL Array FunctionsUnderstanding PostgreSQL's COALESCE FunctionUnderstanding the rank() and dense_rank() Functions in PostgreSQLWhat Is a PostgreSQL Left Join? And a Right Join?Strategies for Improving Postgres JOIN PerformanceUnderstanding Foreign Keys in PostgreSQLUnderstanding PostgreSQL User-Defined FunctionsUnderstanding SQL Aggregate FunctionsUsing PostgreSQL UPDATE With JOINHow to Install PostgreSQL on LinuxUnderstanding HAVING in PostgreSQL (With Examples)How to Fix No Partition of Relation Found for Row in Postgres DatabasesHow to Fix Transaction ID Wraparound ExhaustionUnderstanding WHERE in PostgreSQL (With Examples)Understanding OFFSET in PostgreSQL (With Examples)What Is a PostgreSQL Inner Join?Understanding PostgreSQL SELECTWhat Is Data Compression and How Does It Work?What Is Data Transformation, and Why Is It Important?What Characters Are Allowed in PostgreSQL Strings?Understanding the Postgres string_agg FunctionWhat Is a PostgreSQL Full Outer Join?Self-Hosted or Cloud Database? A Countryside Reflection on Infrastructure ChoicesUnderstanding the Postgres extract() Function
AWS Timestream for InfluxDB Alternative: When You Need to Look FurtherHow to Migrate from AWS Timestream to PostgreSQL: A Technical GuideHow to Choose a Database: A Decision Framework for Modern ApplicationsPostgreSQL Performance Tuning: Key ParametersA Guide to Scaling PostgreSQLHandling Large Objects in PostgresGuide to PostgreSQL PerformanceDetermining the Optimal Postgres Partition SizeNavigating Growing PostgreSQL Tables With Partitioning (and More)SQL/JSON Data Model and JSON in SQL: A PostgreSQL PerspectiveHow to Use PostgreSQL for Data TransformationPostgreSQL Performance Tuning: Designing and Implementing Your Database SchemaPostgreSQL Performance Tuning: Optimizing Database IndexesWhen to Consider Postgres PartitioningDesigning Your Database Schema: Wide vs. Narrow Postgres TablesBest Practices for Time-Series Data Modeling: Single or Multiple Partitioned Table(s) a.k.a. Hypertables What Is a PostgreSQL Temporary View?PostgreSQL Performance Tuning: How to Size Your DatabaseHow to Compute Standard Deviation With PostgreSQLRecursive Query in SQL: What It Is, and How to Write OneHow to Query JSON Metadata in PostgreSQLHow to Query JSONB in PostgreSQLHow to Reduce Bloat in Large PostgreSQL TablesBest Practices for (Time-)Series Metadata Tables A Guide to Data Analysis on PostgreSQLGuide to PostgreSQL SecurityOptimizing Array Queries With GIN Indexes in PostgreSQLPg_partman vs. Hypertables for Postgres PartitioningTop PostgreSQL Drivers for PythonAn Intro to Data Modeling on PostgreSQLGuide to PostgreSQL Database OperationsUnderstanding PostgreSQL TablespacesWhat Is Audit Logging and How to Enable It in PostgreSQLGuide to Postgres Data ManagementHow to Index JSONB Columns in PostgreSQLHow to Monitor and Optimize PostgreSQL Index PerformanceA Guide to pg_restore (and pg_restore Example)Explaining PostgreSQL EXPLAINA PostgreSQL Database Replication GuideHow PostgreSQL Data Aggregation WorksHow to Use Psycopg2: The PostgreSQL Adapter for PythonBuilding a Scalable DatabaseGuide to PostgreSQL Database Design
PostgreSQL Compression: Every Option, When To Use Each, and What To ExpectBest Practices for Postgres Data ManagementHow to Store Video in PostgreSQL Using BYTEABest Practices for Postgres PerformanceHow to Design Your PostgreSQL Database: Two Schema ExamplesBest Practices for Scaling PostgreSQLHow to Handle High-Cardinality Data in PostgreSQLBest Practices for PostgreSQL AggregationBest Practices for Postgres Database ReplicationHow to Use a Common Table Expression (CTE) in SQLBest Practices for Postgres SecurityBest Practices for PostgreSQL Database OperationsBest Practices for PostgreSQL Data AnalysisTesting Postgres Ingest: INSERT vs. Batch INSERT vs. COPYHow to Manage Your Data With Data Retention PoliciesHow to Use PostgreSQL for Data Normalization
PostgreSQL Extensions: amcheckPostgreSQL Extensions: Turning PostgreSQL Into a Vector Database With pgvectorPostgreSQL Extensions: Unlocking Multidimensional Points With Cube PostgreSQL Extensions: hstorePostgreSQL Extensions: ltreePostgreSQL Extensions: Secure Your Time-Series Data With pgcryptoPostgreSQL Extensions: pg_prewarmPostgreSQL Extensions: pgRoutingPostgreSQL Extensions: pg_stat_statementsPostgreSQL Extensions: Database Testing With pgTAPPostgreSQL Extensions: Install pg_trgm for Data MatchingPostgreSQL Extensions: PL/pgSQLPostgreSQL Extensions: Using PostGIS and Timescale for Advanced Geospatial InsightsPostgreSQL Extensions: Intro to uuid-ossp
What Is ClickHouse and How Does It Compare to PostgreSQL and TimescaleDB for Time Series?Timescale vs. Amazon RDS PostgreSQL: Up to 350x Faster Queries, 44 % Faster Ingest, 95 % Storage Savings for Time-Series DataWhat We Learned From Benchmarking Amazon Aurora PostgreSQL ServerlessTimescaleDB vs. Amazon Timestream: 6,000x Higher Inserts, 5-175x Faster Queries, 150-220x CheaperHow to Store Time-Series Data in MongoDB and Why That’s a Bad IdeaPostgreSQL + TimescaleDB: 1,000x Faster Queries, 90 % Data Compression, and Much MoreEye or the Tiger: Benchmarking Cassandra vs. TimescaleDB for Time-Series Data
Smart Grid Data Platform: Architecting for SCADA, AMI, PMU, and DERMS Data at ScaleDigital Twin Architecture: The Database and Data Model Behind a Digital TwinCAN Bus Data Logger: Decoding DBC and J1939 Signals into PostgresPredictive Maintenance Database Architecture: Storing and Querying Sensor Data for Failure PredictionPhysical AI Telemetry: Database Architecture for Autonomous-Vehicle FleetsPlant Historian: What It Captures and Where the Analytics Layer BeginsManufacturing Analytics Database: Architecture for Real-Time Production DataRobot Fleet Telemetry: Database Architecture for AMR, Industrial Robot, and Service Robot DataData Center Monitoring: What Database Stores Your Telemetry?Fleet Telemetry Database: How to Store and Query Vehicle Sensor Data at ScaleEV Charging Management System: Architecture, OCPP Data, and the Right DatabaseIIoT Database Requirements: Six Things Your Database Must DoWater Utilities Database: How to Store and Query SCADA, AMI, and Quality Data at ScaleWhat Is an Edge Database? On-Device Storage, Sync Patterns, and Choosing the Right StackA Beginner’s Guide to IIoT and Industry 4.0Data Historian vs. Time-Series Database: How to Choose and When to SwitchWhat Is a Data Historian?The Best Databases for IoT in 2026: A Practical ComparisonHow Hopthru Powers Real-Time Transit Analytics From a 1 TB TableUnderstanding IoT (Internet of Things)Storing IoT Data: 8 Reasons Why You Should Use PostgreSQLHow to Simulate a Basic IoT Sensor Dataset on PostgreSQLFrom Ingest to Insights in Milliseconds: Everactive's Tech Transformation With TimescaleHow Ndustrial Is Providing Fast Real-Time Queries and Safely Storing Client Data With 97 % CompressionWhy You Should Use PostgreSQL for Industrial IoT Data Migrating a Low-Code IoT Platform Storing 20M Records/DayHow United Manufacturing Hub Is Introducing Open Source to ManufacturingBuilding IoT Pipelines for Faster Analytics With IoT CoreVisualizing IoT Data at Scale With Hopara and TimescaleDB
A Brief History of AI: How Did We Get Here, and What's Next?A Beginner’s Guide to Vector EmbeddingsPostgreSQL as a Vector Database: A Pgvector TutorialUsing Pgvector With PythonHow to Choose a Vector DatabaseVector Databases Are the Wrong AbstractionUnderstanding DiskANNA Guide to Cosine SimilarityStreaming DiskANN: How We Made PostgreSQL as Fast as Pinecone for Vector DataImplementing Cosine Similarity in PythonVector Database Basics: HNSWVector Database Options for AWSVector Store vs. Vector Database: Understanding the ConnectionPgvector vs. Pinecone: Vector Database Performance and Cost ComparisonHow to Build LLM Applications With Pgvector Vector Store in LangChainHow to Implement RAG With Amazon Bedrock and LangChainRAG Is More Than Just Vector SearchRefining Vector Search Queries With Time Filters in Pgvector: A TutorialUnderstanding Semantic SearchVector Search vs Semantic SearchHNSW vs. DiskANNWhen Should You Use Full-Text Search vs. Vector Search?Building AI Agents with Persistent Memory: A Unified Database ApproachWhat Is Vector Search? Text-to-SQL: A Developer’s Zero-to-Hero GuideNearest Neighbor Indexes: What Are IVFFlat Indexes in Pgvector and How Do They WorkPostgreSQL Hybrid Search Using Pgvector and CohereBuilding an AI Image Gallery With OpenAI CLIP, Claude Sonnet 3.5, and Pgvector
Understanding OLTPUnderstanding OLAP: What It Is, How It Differs From OLTP, and Running It on PostgreSQLColumnar Databases vs. Row-Oriented Databases: Which to Choose?How to Choose an OLAP DatabaseHow to Choose a Real-Time Analytics DatabaseData Analytics vs. Real-Time Analytics: How to Pick Your Database (and Why It Should Be PostgreSQL)PostgreSQL as a Real-Time Analytics DatabaseWhat Is the Best Database for Real-Time AnalyticsHow to Build an IoT Pipeline for Real-Time Analytics in PostgreSQL
Alternatives to RDSWhy Is RDS so Expensive? Understanding RDS Pricing and CostsEstimating RDS CostsHow to Migrate From AWS RDS for PostgreSQL to TimescaleAmazon Aurora vs. RDS: Understanding the Difference
5 InfluxDB Alternatives for Your Time-Series Data8 Reasons to Choose Timescale as Your InfluxDB Alternative InfluxQL, Flux, and SQL: Which Query Language Is Best? (With Cheatsheet)What InfluxDB Got WrongTimescaleDB vs. InfluxDB: Purpose Built Differently for Time-Series Data
Time-Series Downsampling: The Complete Guide to Tiered Data Resolution in SQLContinuous Aggregates: Incremental Materialized Views for Time-Series DataHow to Migrate Your Data to Timescale (3 Ways)Is Postgres Partitioning Really That Hard? An Introduction To HypertablesComplete Guide: Migrating from MongoDB to Tiger Data (Step-by-Step)Postgres TOAST vs. Timescale CompressionBuilding Python Apps With PostgreSQL: A Developer's GuideMore Time-Series Data Analysis, Fewer Lines of Code: Meet HyperfunctionsPostgreSQL Materialized Views and Where to Find Them5 Ways to Monitor Your PostgreSQL DatabaseTimescale Tips: Testing Your Chunk SizeData Visualization in PostgreSQL With Apache Superset
Postgres cheat sheet
Tiger Data

Products

  • TimescaleDB
  • Tiger Cloud
  • TimescaleDB Enterprise
  • Postgres Search Stack

Industry

  • Data Centers
  • Energy & Utilities
  • Oil & Gas Operations
  • Smart Manufacturing
  • Crypto

Support

  • Cloud Status
  • Support
  • Security
  • Terms of Service
  • Code Of Conduct

Learn

  • Documentation
  • Blog
  • Tutorials
  • Changelog
  • Success Stories

Company

  • About
  • Contact Us
  • Careers
  • Newsroom
  • Brand
  • Events

Products

  • TimescaleDB
  • Tiger Cloud
  • TimescaleDB Enterprise
  • Postgres Search Stack

Industry

  • Data Centers
  • Energy & Utilities
  • Oil & Gas Operations
  • Smart Manufacturing
  • Crypto

Support

  • Cloud Status
  • Support
  • Security
  • Terms of Service
  • Code Of Conduct

Learn

  • Documentation
  • Blog
  • Tutorials
  • Changelog
  • Success Stories

Company

  • About
  • Contact Us
  • Careers
  • Newsroom
  • Brand
  • Events
Privacy preferencesLegalPrivacySitemap

Subscribe to the Tiger Data newsletter

Gold Partner with Inductive Automation — Ignition

2026 (c) Timescale, Inc., d/b/a Tiger Data.
All rights reserved.

Tiger Data
GOLD PARTNER WITHINDUCTIVE AUTOMATION

2026 (c) Timescale, Inc., d/b/a Tiger Data.
All rights reserved.

Privacy preferencesLegalPrivacySitemap

By Tiger Data Team

Updated at Jul 20, 2026

Table of contents

    Physical AI Telemetry: Database Architecture for Autonomous-Vehicle Fleets

     Physical AI Telemetry: A Database Architecture for Autonomous-Vehicle Fleets

    By Tiger Data Team

    Updated at Jul 20, 2026

    Introduction

    "Physical AI" gets used two ways right now: as a real technical category and as a hype-cycle label slapped on anything with a motor and a model. Both are true at once, and it's worth saying that plainly before making any claim about it.

    The skepticism is fair. But autonomous-vehicle fleets are already running commercial operations at meaningful scale, not lab demos. Waymo alone has passed tens of millions of paid robotaxi rides. That's a real deployment footprint, whatever you think of the term describing it.

    This page is about one narrow question inside that category: the database architecture for the structured telemetry an autonomous-vehicle or robotaxi fleet produces. Vehicle state, health, disengagement events, mission and trip data. It is not about the raw sensor and perception stack, which is a different problem with a different answer.

    One more thing upfront: Tiger Data sells a database, so this page has a stake in the answer. The argument here is where a time-series database fits in an AV data stack, and just as importantly, where it doesn't. Tiger Data's Great Models Aren't Enough for Physical AI makes the broader case that real-world Physical AI deployment is gated by data, safety, and operations, not model quality alone. This page picks up the data half of that argument and gives it a schema.

    The line between raw perception data and operational telemetry

    Raw perception data, camera frames, LiDAR point clouds, radar returns, is a data-lake problem. So are full rosbag2 or MCAP recordings kept for simulation replay and model training, and the scenario and validation datasets (OpenSCENARIO, OpenDRIVE) that ADAS validation tooling consumes. Tiger Data does not solve for any of that, and this page isn't going to pretend otherwise.

    The scale involved is not abstract. Public reporting on large AV fleet operations puts a single autonomous vehicle's raw sensor output at tens of terabytes per day. That's the data-lake side of this problem, and it's enormous by any measure. It is not Tiger Data's claim to make.

    What's left over is smaller and shaped differently: vehicle state and health channels, disengagement and safety-driver-intervention events, mission and trip metadata and location, and the fleet-wide operational KPIs computed from all of it. That slice is discrete, timestamped, and structured, and it's what the rest of this page covers.

    Here's the rule of thumb to apply on your own: if it's a continuous stream of raw sensor bytes headed for a model or a replay tool, it's data-lake-shaped. If it's a discrete, timestamped, structured fact about vehicle or fleet state, it's time-series-shaped.

    Autoware, ROS 2, and the telemetry storage gap

    Autoware is the concrete example this page argues from, not an abstract "AV company." It's an open-source, ROS 2-based, Tier4-founded autonomous-driving stack, and it's a working reference for where the storage question actually shows up in a driving stack.

    The gap is documented, not theoretical. GitHub issue ros2/rosbag2 #1739 is developers on the ROS 2 project explicitly asking for a queryable time-series storage backend instead of the file-based default recorder. That request has been open since 2024.

    The storage format itself is mid-transition. rosbag2 has historically defaulted to SQLite3, and Autoware's own published sample bags still ship as SQLite3 .db3 files. MCAP is available as a rosbag2 storage plugin and is increasingly adopted for new recordings. Call it SQLite3-backed, increasingly MCAP-based, rather than treating SQLite3 as the unqualified current default.

    Neither format closes the gap GitHub issue #1739 describes. SQLite3 and MCAP are both file-based recording formats built for full-fidelity playback and simulation, not a queryable operational store for the structured telemetry slice. Tiger Data's robot fleet telemetry guide covers this storage gap in depth for AMRs and industrial robots on generic ROS 2 topics; the same ROS 2 storage gap documented for robot fleets applies directly to Autoware-based AV stacks. What's specific to AV is the layer sitting on top of those generic ROS 2 topics: Autoware's planning, control, and localization state, and the AV-specific events covered below.

    What's actually time-series-shaped in an autonomous-vehicle fleet

    Four data types make up the operational telemetry slice. Each is timestamped, append-only, and queried by time range in practice: vehicle state and health telemetry, disengagement and safety-driver-intervention events, mission and trip telemetry, and fleet-wide operational KPIs.

    Vehicle state and health telemetry

    Most AV fleets run on EV platforms and share the same health channels covered on Tiger Data's fleet telemetry database guide for human-driven fleets: battery state of charge and state of health, tire pressure, brake wear, thermal telemetry. That guide's EV and OBD-II schema pattern applies here without modification, so it's not re-derived below.

    A compact hypertable covers the core signals:

    CREATE TABLE vehicle_state ( time TIMESTAMPTZ NOT NULL, vehicle_id TEXT NOT NULL, battery_soc DOUBLE PRECISION, battery_soh DOUBLE PRECISION, tire_pressure DOUBLE PRECISION, brake_wear_pct DOUBLE PRECISION ); SELECT create_hypertable('vehicle_state', by_range('time'));

    A time-bounded query against it looks like any other fleet telemetry query:

    SELECT vehicle_id, time, battery_soc, brake_wear_pct FROM vehicle_state WHERE time > NOW() - INTERVAL '24 hours' ORDER BY vehicle_id, time;

    Disengagement and safety-driver intervention events

    This is the single most AV-specific data type on this page, and the clearest differentiator against both sibling telemetry profiles. Human-driven fleets have no equivalent concept. Robot fleets have fault and task-status events, but nothing regulatory tied to a human taking over from an autonomous system.

    A disengagement is any point where a safety driver or remote operator takes control from the autonomous system, whether planned (a test protocol checkpoint) or unplanned (a system limitation or edge case the stack couldn't handle).

    Model it as an append-only event table, not a counter:

    -- disengagement_events uses a PostGIS geometry column, so enable PostGIS first: CREATE EXTENSION IF NOT EXISTS postgis; CREATE TABLE disengagement_events ( time TIMESTAMPTZ NOT NULL, vehicle_id TEXT NOT NULL, trigger_reason TEXT, -- 'planned_test', 'perception_limit', 'planner_fault', 'operator_override' duration_seconds INT, location GEOMETRY(Point, 4326) ); SELECT create_hypertable('disengagement_events', by_range('time'));

    Disengagement rate, disengagements per 1,000 miles or per operating hour, is one of the standard ways AV fleet operators and regulators track system maturity over time. That makes it a rollup, not just a log, and a continuous aggregate is the right tool for computing it without rescanning raw events on every query:

    CREATE MATERIALIZED VIEW disengagement_rate_daily WITH (timescaledb.continuous) AS SELECT time_bucket('1 day', time) AS day, vehicle_id, COUNT(*) AS disengagement_count FROM disengagement_events GROUP BY day, vehicle_id WITH NO DATA;

    Mission and trip telemetry

    Trip-level data covers mission start and end, route, pickup and dropoff events for robotaxi operations, and GPS or location data captured throughout the trip. The geospatial pattern is already established on Tiger Data's PostGIS and Timescale geospatial guide, including the GEOMETRY(Point, 4326) column type and spatial indexing needed for geofencing and trajectory queries. That pattern applies directly to trip and mission data and isn't re-derived here.

    Fleet-wide operational KPIs

    Fleet operators track rollup metrics across everything above: uptime, utilization, disengagement rate, energy consumption per mile, and average battery health trend across the fleet. None of these are single-table queries. A "disengagement rate this week vs. last week" dashboard needs to join event counts against mileage or operating hours pulled from mission telemetry, then group by vehicle or by fleet segment.

    That join-and-rollup pattern is a continuous-aggregate use case in the same way the disengagement rate rollup above is: pre-computed on a schedule, so a dashboard load reads a summary table instead of re-scanning raw event and state tables every time someone opens it. At fleet scale, hundreds of vehicles reporting state at 1 Hz plus a steady trickle of event rows, that difference is the gap between a dashboard that loads in milliseconds and one that times out. Tiger Data's documentation on continuous aggregates covers the mechanism in full.

    Physical AI telemetry vs. robot fleet telemetry vs. human-driven fleet telemetry

    Three sibling pages, three operator types, one underlying pattern. Here's how to tell which one is actually for you:

    Operator type

    Most distinctive time-series data

    Anchor page

    Human-driven fleets

    GPS, OBD-II, CAN bus

    Fleet Telemetry Database

    Robot / AMR fleets

    Battery, pose, mission/task status, fault codes

    Robot Fleet Telemetry

    AV / robotaxi fleets

    Vehicle state and health, plus disengagement events

    This page

    All three share the same underlying architecture: a narrow-row hypertable for continuous signals, standard relational tables for fleet metadata, and continuous aggregates for the rollups fleet operators actually look at. What's distinct about this page is disengagement events, which neither sibling profile has an equivalent for, and a sharper data-lake/time-series boundary, given how much raw perception data an AV fleet also produces alongside its structured telemetry.

    Decision framework

    Choose a time-series database (Tiger Data) for the operational telemetry slice if: you need to query vehicle state, health, disengagement events, or mission and trip data in real time or over historical windows, and you want SQL-native joins against fleet metadata.

    Choose a data lake or object storage, not a time-series database, if: you're storing raw camera, LiDAR, or radar streams, or full rosbag2/MCAP recordings for simulation replay and model training. That's not a workload a relational time-series database should take on.

    Use the robot fleet telemetry pattern instead if: your fleet is AMRs, industrial robots, or service robots rather than licensed, road-going autonomous vehicles.

    Use the fleet telemetry database pattern instead if: your vehicles have a human driver. The telemetry shape (GPS, OBD-II, CAN bus) is closely related but doesn't include disengagement events or an autonomy stack.

    Migrating to a queryable telemetry store

    Most teams arrive at this architecture from one of three starting points.

    From the ROS 2/rosbag2 default recorder alone. Teams that treated rosbag2 files as their only telemetry record hit the wall GitHub issue #1739 describes: no way to query vehicle state or disengagement history without replaying files. The fix isn't replacing rosbag2, which is still needed for full-fidelity recording. It's adding a queryable store for the structured slice alongside it.

    From ad hoc object-storage exports with no query layer. Teams dumping structured telemetry into flat files in the same bucket as raw sensor data typically hit this wall when they need a real-time operational dashboard, fleet uptime, disengagement rate, rather than periodic batch analysis.

    From a general-purpose NoSQL store. Teams outgrow a document store for disengagement or mission logs once they need relational joins against maintenance, quality, or trip-metadata tables. A document store handles a single disengagement record fine; it doesn't handle "join every disengagement this month to the vehicle's maintenance history and current software version" without application-side stitching. That's the same pattern covered in more depth on the sibling pages linked throughout this one.

    None of these migrations require giving up on rosbag2, MCAP, or object storage for the perception side. The queryable store sits alongside them, handling the slice of telemetry that fleet operations, safety teams, and regulators actually query day to day.

    FAQ

    What database should I use for autonomous vehicle or robotaxi fleet telemetry?

    A time-series database, such as Tiger Data on Tiger Cloud, for the structured telemetry slice: vehicle state, health, disengagement events, mission and trip data. Pair it with object storage or a data lake for raw sensor recordings.

    Isn't autonomous vehicle data all LiDAR and camera frames?

    Partly true. Raw perception data is enormous and is a real data-lake problem. But every AV fleet also produces a smaller, structured, timestamped slice, vehicle state, disengagement events, mission data. That's a time-series workload with its own architecture question.

    Can PostgreSQL or TimescaleDB store ROS 2 or Autoware telemetry data?

    Yes, for the structured and operational slice, not for raw rosbag2 or MCAP recordings, which stay file-based.

    What's the difference between AV fleet telemetry, robot fleet telemetry, and human-driven fleet telemetry?

    All three share a hypertable-plus-relational-metadata-plus-continuous-aggregates pattern. What differs is the data shape: disengagement events for AVs, fault and task-status events for robots, OBD-II and CAN bus signals for human-driven fleets.

    How do you store disengagement and safety-driver intervention events?

    As an append-only event table with a trigger reason, duration, and location per row, rolled up into a disengagement-rate continuous aggregate rather than recomputed from raw events on every query.

    Is 'Physical AI' just hype, or is there a real database architecture question underneath it?

    Both. The term gets used as a hype-cycle label as much as a technical category. But the underlying question, where structured AV telemetry lives separate from raw perception data, is real, and most current Physical AI content doesn't answer it.

    What is Autoware, and how does it relate to ROS 2?

    Autoware is an open-source, Tier4-founded autonomous-driving stack built on ROS 2, used here as a concrete example instead of an abstract AV company.

    Does ROS 2's rosbag2 use a queryable database format?

    No. rosbag2 has historically defaulted to SQLite3, with MCAP increasingly adopted as an alternative storage format, but both are file-based recording formats, not a queryable operational store.

    How much data does an autonomous vehicle actually generate?

    Public reporting on large AV fleet operations puts raw sensor output at tens of terabytes per vehicle per day. Almost none of that volume is the structured telemetry slice this page covers.

    How do you calculate fleet-wide disengagement rate from telemetry data?

    Roll up disengagement events by vehicle or fleet over a rolling mileage or time window using a continuous aggregate, rather than recomputing the rate from raw events on every dashboard load.

    Should raw sensor data (LiDAR, camera, radar) live in the same database as vehicle telemetry?

    No. Raw perception data belongs in object storage or a data lake built for that access pattern. Vehicle state, health, and event data belongs in a time-series database built for structured, timestamped queries.

    What's the difference between simulation/training data and operational fleet telemetry?

    Scenario and validation datasets and full rosbag2/MCAP recordings are used for simulation replay and model training and are data-lake-shaped. Live operational telemetry is time-series-shaped and queried in near-real-time by fleet operations.