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

    Crypto

    Energy Telemetry

    Oil & Gas Operations

  • Docs
  • Pricing

    Pricing

    Enterprise Tier

  • Developer Hub

    Changelog

    Benchmarks

    Blog

    Community

    Customer Stories

    Events

    Support

    Integrations

    Launch Hub

  • Company

    Contact us

    About

    Timescale

    Partners

    Security

    Careers

Log InStart a free trial
Home
The 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
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
EV 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
Is Postgres Partitioning Really That Hard? An Introduction To HypertablesComplete Guide: Migrating from MongoDB to Tiger Data (Step-by-Step)How to Migrate Your Data to Timescale (3 Ways)Postgres TOAST vs. Timescale CompressionBuilding Python Apps With PostgreSQL: A Developer's GuideData Visualization in PostgreSQL With Apache SupersetMore 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 Size
Postgres cheat sheet
HomeTime series basicsPostgres basicsPostgres guidesPostgres best practicesPostgres extensionsBenchmarks
Home
The 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
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
EV 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
Is Postgres Partitioning Really That Hard? An Introduction To HypertablesComplete Guide: Migrating from MongoDB to Tiger Data (Step-by-Step)How to Migrate Your Data to Timescale (3 Ways)Postgres TOAST vs. Timescale CompressionBuilding Python Apps With PostgreSQL: A Developer's GuideData Visualization in PostgreSQL With Apache SupersetMore 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 Size
Postgres cheat sheet
TigerData logo

Products

Time-series and Analytics AI and Vector Enterprise Plan Cloud Status Support Security Cloud Terms of Service

Learn

Documentation Blog Tutorials Changelog Success Stories Time-series Database

Company

Contact Us Careers About Newsroom Brand Community Code Of Conduct Events

Subscribe to the Tiger Data Newsletter

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

Privacy preferences
LegalPrivacySitemap

By Tiger Data Team

Updated at May 8, 2026

Table of contents

    What Is an Edge Database? On-Device Storage, Sync Patterns, and Choosing the Right Stack

    Edge database

    By Tiger Data Team

    Updated at May 8, 2026

    An edge database is a database that runs at or near the data source rather than in a central cloud or data center. Instead of sending every sensor reading across a WAN connection, the device stores and queries data locally, then syncs to a central store when the architecture calls for it.

    When choosing a database for edge devices, the footprint, write pattern, and connectivity profile drive the decision more than raw query performance.

    Edge databases run on IoT gateway devices, industrial PLCs, embedded Linux systems, in-vehicle computers, smart meters, and factory floor servers. They are not running on Cloudflare edge nodes or CDN points of presence. That is a separate product category serving web developers, and this guide does not cover it.

    Three reasons edge placement matters: local query response without a WAN round trip (latency), continued operation during network outages (connectivity resilience), and aggregating data before upload rather than streaming every raw reading (bandwidth cost).

    "Edge database" describes a deployment pattern, not a database category. Relational, columnar, object-oriented, and time-series architectures can all serve as an edge database depending on the workload.

    Edge database vs. cloud database vs. traditional server database

    Characteristic

    Edge database

    Cloud / central database

    Location

    On-device, gateway, or factory floor server

    Managed data center or cloud region

    Latency

    Sub-millisecond local queries

    WAN round trip required

    Connectivity dependency

    Operates offline; syncs when connected

    Requires network access

    Storage capacity

    Limited by device hardware (MB to GB)

    Virtually unlimited with tiering

    Query capability

    Device-scoped analytics

    Fleet-wide aggregations, long history

    Typical role

    Local storage, buffering, pre-aggregation

    Long-term retention, cross-site analytics, dashboards

    Cloud databases like Tiger Cloud are not edge databases. They are the central store that edge databases sync into. A traditional on-prem rack server is central infrastructure, not an edge database. Edge means co-located with the sensors or machines generating data.

    Some vendors market distributed cloud products as "edge databases." For this guide, edge means at the data source, not in a regional availability zone.

    On-device edge database options: an honest comparison

    Most vendor guides skip this section because they want to pitch their own product as the edge solution.. Tiger Cloud runs at the cloud tier and receives data from edge databases; it does not replace them. That framing is what makes this comparison useful.

    Database

    Type

    Query language

    Typical footprint

    Best edge use case

    Limitations

    SQLite

    Embedded relational

    SQL

    Less than 1 MB

    Offline-first transactional data; device state and configuration

    Single-writer; not suited for concurrent high-throughput ingestion or time-series aggregations

    DuckDB

    Embedded OLAP / columnar

    SQL

    10-20 MB

    Local analytical aggregations before upload; time-series batch analysis

    Not optimized for concurrent high-frequency writes; no persistent server mode by default

    Embedded TimescaleDB (open-source extension)

    Time-series extension on PostgreSQL

    SQL

    100 MB+ (requires PostgreSQL runtime)

    Edge gateway servers with PostgreSQL installed; time-series features at the edge node

    Requires a PostgreSQL instance; not suitable for resource-constrained microcontrollers

    Apache IoTDB

    Time-series database with edge mode

    IoTDB-SQL

    50-100 MB

    Industrial IoT deployments wanting a single product spanning edge and cloud

    Proprietary query language; less integration with standard BI tooling and the PostgreSQL ecosystem

    ObjectBox

    Embedded object-oriented

    Object API

    Less than 1 MB

    Mobile IoT and Android/iOS edge devices; object graph storage

    Not SQL; limited analytical query support; stronger for mobile than for industrial time-series workloads

    SQLite is the most widely deployed embedded database in the world. Its single-writer model saturates under high concurrent sensor write rates, so use it for configuration, state management, and offline queuing rather than as the primary time-series store.

    DuckDB suits embedded analytical workloads where the goal is to compute local aggregations (1-minute averages, rollups) before upload rather than streaming raw readings. It is not designed for high-frequency concurrent writes, so it complements a write-optimized edge store rather than replacing one. Community signals from April-May 2026, including the Hacker News launches of new embedded engines (SlothDB, NeuG) explicitly positioning against DuckDB's columnar format, show the embedded analytics category is active and competitive.

    Embedded TimescaleDB runs the open-source TimescaleDB extension on a PostgreSQL instance at an edge gateway server, giving edge nodes hypertables, continuous aggregates, and columnstore compression. This is not a microcontroller solution; it requires a capable Linux gateway, typically 1-4 GB RAM.

    Apache IoTDB spans edge and cloud using a device-tree data model and IoTDB-SQL. Teams comfortable leaving the PostgreSQL ecosystem find it a strong fit for industrial IIoT. Teams already on PostgreSQL tooling typically choose embedded TimescaleDB instead because standard BI connectors and dbt work without adapters.

    ObjectBox fits Android and iOS edge applications at sub-1 MB footprint. Its object-oriented API is less suited to the analytical time-series queries common in industrial IoT.

    None of these replace the central time-series store. They reduce data volume traveling to the cloud, improve resilience during outages, and handle local processing. The next section covers how data moves from each of them to Tiger Cloud.

    Edge-to-cloud sync patterns

    Getting data from an edge database into a central store is where most architecture guides stop short. Three common patterns cover the majority of IIoT deployments. Tiger Cloud sits at the receiving end of each; it is not an edge runtime.

    Pattern 1: MQTT-based forwarding

    Sensors publish to an MQTT broker at or near the edge. A subscriber process forwards messages to the central database. The edge database may act as a local queue during connectivity gaps so no data is lost when the WAN link drops.

    MQTT over TLS is the standard for IoT security. Common brokers: HiveMQ, Mosquitto, AWS IoT Core, and EMQX. See the HiveMQ and TimescaleDB integration guide for a working broker-to-Tiger Cloud pattern.

    Takton's Sense Manufacturing platform shows this architecture in production. Each Sense device runs Linux-based firmware and monitors factory equipment using amp clamps on single- or three-phase power lines and three-axis accelerometers mounted to the machine body. Telemetry transmits every few seconds over Ethernet or Wi-Fi to an AWS MQTT broker using TLS. Tiger Cloud stores the time-series data using TimescaleDB hypertables for automatic partitioning; a separate PostgreSQL instance handles device registry and configuration. Development started in July 2025 and devices ran in customer facilities by September 2025, with machine monitoring costs up to 70% lower than the closest competitors. 

    WaterBridge, an oil and gas produced-water operator, uses Ignition SCADA at the edge and Chariot MQTT as the broker layer, with Tiger Cloud as the historian replacement, handling 10,000 data points per second. For a full MQTT-to-SQL pipeline implementation, see the MQTT sensor data ingestion guide.

    Pattern 2: Logical replication / WAL-based sync

    If the edge node runs PostgreSQL or embedded TimescaleDB, logical replication can stream changes to the central Tiger Cloud instance using PostgreSQL's write-ahead log. No custom sync code is required; the database handles change propagation automatically.

    This pattern fits when the edge has a full PostgreSQL runtime and edge/cloud schemas are compatible. It is less common in resource-constrained IoT environments but standard in industrial gateway setups. The trade-off: logical replication requires persistent connectivity. Intermittently connected devices need MQTT queuing or batch upload instead.

    For implementation depth, see Postgres logical replication best practices. For the relationship between edge nodes and SCADA historians, see SCADA data management at scale.

    Pattern 3: Batch upload / ETL

    The edge database accumulates data locally and uploads in periodic batches: every minute, every hour, or triggered by connectivity restoration. Simpler than MQTT streaming but introduces latency in central visibility.

    Best fit: remote field sites with intermittent connectivity (offshore platforms, satellite-connected sensors, rural installations) where near-real-time central visibility is not required. Common formats: CSV or Parquet exports to S3, direct SQL bulk inserts when connectivity is available, and AWS Greengrass batch forwarding.

    Choosing the right edge database stack

    Match your constraints to the right tool. Not every IoT deployment needs an edge database at all.

    Choose SQLite alone if:

    • You need offline-first transactional storage for device configuration, queuing, or state management

    • Write rates are low enough that the single-writer limit is not a constraint

    • You are not running local analytical queries; all analysis goes to the cloud

    • Your device has under 4 MB of available storage

    Choose DuckDB at the edge if:

    • You need local analytical aggregations before upload (computing 1-minute averages rather than streaming raw readings)

    • Your workload is write-heavy in batches and read-heavy for analytics

    • You have enough local storage to cache data between uploads (tens to hundreds of MB)

    • You want columnar compression to reduce upload payload size

    Choose embedded TimescaleDB on an edge gateway if:

    • Your edge gateway runs Linux with 1-4 GB RAM for a PostgreSQL runtime

    • You want time-series features at the edge node: hypertables, continuous aggregates, columnstore compression

    • Your team already knows PostgreSQL and wants the same tooling end to end

    • You need complex local queries or multi-sensor joins before forwarding data to Tiger Cloud

    Choose Apache IoTDB if:

    • You want a single time-series product spanning edge and cloud, and you are comfortable leaving the PostgreSQL ecosystem

    • The device-tree data model fits your asset hierarchy

    • Your team is comfortable with IoTDB-SQL and does not depend on standard PostgreSQL BI or ETL tooling

    Choose Tiger Cloud (or another managed PostgreSQL provider) as the central store (applies in all scenarios above):

    • Long-term retention with compression and fast analytical queries across all edge nodes

    • Dashboards and alerting spanning multiple sites

    • Edge devices that cannot hold months or years of data history

    Skip the local edge database layer entirely if:

    • Devices have reliable, low-latency network connectivity

    • Write volume does not saturate the WAN link

    • Local processing and offline resilience are not requirements

    Adding an edge database layer adds complexity: local schema management, sync code, and failure handling. Justify that complexity with a clear requirement. If connectivity is solid and write volumes are manageable, connecting directly to Tiger Cloud is simpler and correct.

    For a broader comparison at the central IoT tier, see choosing the right IoT database for your stack.

    Industry applications

    Manufacturing (smart factory). Takton's Sense Manufacturing platform monitors machine vibration and power draw on factory equipment using edge devices running Linux firmware. Data flows through MQTT to Tiger Cloud. Maintenance alerts are generated centrally from multi-sensor time-series data. See the Takton case study for the full stack. For broader IIoT context, see IIoT and Industry 4.0 fundamentals.

    Oil and gas (field telemetry). Flogistix by Flowco monitors gas compressor telemetry at remote field sites where connectivity is intermittent and data reliability is mission-critical. Tiger Data delivers 84% compression on stored data, 99% operational reliability, and 66% infrastructure cost reduction compared to their prior system. 

    WaterBridge, an oil and gas produced-water operator, uses the SCADA/MQTT pattern described above and replaced a legacy historian with Tiger Cloud. For teams deciding between historians and modern time-series databases, see data historian vs. time-series database. For broader industrial IoT context, see PostgreSQL for industrial IoT data.

    Smart grid and energy telemetry. Smart meters, grid sensors, and renewable energy installations use edge databases to buffer readings during outages and aggregate high-frequency data before syncing to Tiger Cloud for fleet-level analytics. See IIoT energy monitoring best practices for implementation patterns, and Tiger Data's energy telemetry capabilities for the cloud tier.

    Tiger Data's ICP covers industrial and operational IoT: manufacturing, oil and gas, utilities, and energy. Consumer IoT and web-edge use cases are outside this guide's scope.

    Teams migrating from retired edge-specific solutions like Azure SQL Edge follow a similar replacement pattern.

    Azure SQL Edge retirement: what to use instead

    Microsoft retired Azure SQL Edge on September 30, 2025 (official retirement notice). Azure SQL Edge was widely used for industrial IoT Edge deployments as SQL Server semantics in a lightweight container image for edge devices and gateways. The Microsoft docs page now carries a NOINDEX directive and redirects readers to the retirement notice and migration documentation.

    Common replacement paths by workload:

    • Device-layer transactional storage: SQLite, which handles offline queuing, device state, and configuration with a sub-1 MB footprint

    • Embedded analytics at the device layer: DuckDB, for local aggregation before upload

    • Edge gateway servers with sufficient resources: embedded TimescaleDB if time-series features are needed; standard PostgreSQL if not

    • Central cloud store: Tiger Cloud, fully PostgreSQL-compatible and works with any of the above edge options

    InfluxDB also targets the edge-to-cloud space with InfluxDB 3 Core as a single-node edge component syncing to InfluxDB Cloud. Tiger Data's differentiation is full PostgreSQL compatibility throughout the stack. Teams already in the PostgreSQL ecosystem find the migration path from Azure SQL Edge more direct through Tiger Cloud.

    FAQ: edge databases

    What is an edge database used for?

    An edge database stores and processes data locally on devices, gateways, or servers near the data source. Key use cases: offline resilience (the device keeps working when connectivity drops), latency reduction (local queries skip the WAN round trip), and bandwidth reduction (aggregate locally before uploading raw data).

    Can SQLite be used as an edge database?

    Yes. SQLite is the most widely deployed embedded database in the world and a standard choice for device storage. It fits transactional data, configuration, and local queuing. Its single-writer model and lack of time-series optimization mean it works best paired with a central time-series store for a full IoT stack.

    What is the difference between SQLite and DuckDB for edge IoT?

    SQLite is row-oriented and optimized for transactional workloads: individual record writes, configuration storage, queuing. DuckDB is column-oriented and optimized for analytical queries: aggregations, time-window summaries, local rollups. In edge IoT, SQLite fits device state and logging; DuckDB fits local aggregation before cloud upload. They can coexist in the same edge architecture.

    What replaced Azure SQL Edge after its retirement in September 2025?

    Azure SQL Edge was retired September 30, 2025 (retirement notice). Common replacement paths: SQLite for lightweight transactional storage, DuckDB for embedded analytics, embedded TimescaleDB on capable gateway servers for full time-series feature support. For the central cloud tier, Tiger Cloud is compatible with all of the above and provides PostgreSQL-native managed infrastructure.

    Does Tiger Cloud run at the edge?

    No. Tiger Cloud is a managed cloud database, not an on-device runtime. The correct architecture: an on-device database (SQLite, DuckDB, or embedded TimescaleDB) at the edge, a sync mechanism (MQTT, replication, or batch) in the middle, and Tiger Cloud in the cloud as the central time-series store.

    What edge database is best for industrial IoT?

    It depends on the layer. At the device layer, SQLite handles transactional queuing; DuckDB adds local aggregation if needed. At the gateway layer, embedded TimescaleDB fits capable Linux servers that need time-series queries locally. At the cloud tier, Tiger Cloud provides long-term retention, cross-site analytics, and dashboards. Takton, WaterBridge, and Flogistix all use MQTT-based forwarding to Tiger Cloud as the central store.

    When should I skip the edge database layer entirely?

    When devices have reliable, low-latency connectivity and write volume does not saturate the connection, sending data directly to Tiger Cloud is simpler. Adding an edge database means local schema management, sync code, and failure handling. Justify that complexity with a clear requirement: offline resilience, local processing, or bandwidth cost. If none apply, connect directly.

    What MQTT broker works with Tiger Cloud?

    Tiger Cloud is MQTT-broker-agnostic and receives data from any broker via a subscriber process. Common choices: HiveMQ, Mosquitto, AWS IoT Core, and EMQX. See the MQTT sensor data ingestion guide for the full implementation and the HiveMQ and TimescaleDB integration for a working HiveMQ example.