• Stars
    star
    17,361
  • Rank 1,573 (Top 0.04 %)
  • Language
    C
  • License
    Other
  • Created over 7 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An open-source time-series SQL database optimized for fast ingest and complex queries. Packaged as a PostgreSQL extension.
Linux/macOS Linux i386 Windows Coverity Code Coverage OpenSSF
Build Status Linux/macOS Build Status Linux i386 Windows build status Coverity Scan Build Status Code Coverage OpenSSF Best Practices

TimescaleDB

TimescaleDB is an open-source database designed to make SQL scalable for time-series data. It is engineered up from PostgreSQL and packaged as a PostgreSQL extension, providing automatic partitioning across time and space (partitioning key), as well as full SQL support.

If you prefer not to install or administer your instance of TimescaleDB, try Timescale, our fully managed cloud offering (pay-as-you-go, with a free trial to start).

To determine which option is best for you, see Timescale Products for more information about our Apache-2 version, TimescaleDB Community (self-hosted), and Timescale Cloud (hosted), including: feature comparisons, FAQ, documentation, and support.

Below is an introduction to TimescaleDB. For more information, please check out these other resources:

For reference and clarity, all code files in this repository reference licensing in their header (either the Apache-2-open-source license or Timescale License (TSL) ). Apache-2 licensed binaries can be built by passing -DAPACHE_ONLY=1 to bootstrap.

Contributors welcome.

(To build TimescaleDB from source, see instructions in Building from source.)

Using TimescaleDB

TimescaleDB scales PostgreSQL for time-series data via automatic partitioning across time and space (partitioning key), yet retains the standard PostgreSQL interface.

In other words, TimescaleDB exposes what look like regular tables, but are actually only an abstraction (or a virtual view) of many individual tables comprising the actual data. This single-table view, which we call a hypertable, is comprised of many chunks, which are created by partitioning the hypertable's data in either one or two dimensions: by a time interval, and by an (optional) "partition key" such as device id, location, user id, etc. (Architecture discussion)

Virtually all user interactions with TimescaleDB are with hypertables. Creating tables and indexes, altering tables, inserting data, selecting data, etc., can (and should) all be executed on the hypertable.

From the perspective of both use and management, TimescaleDB just looks and feels like PostgreSQL, and can be managed and queried as such.

Before you start

PostgreSQL's out-of-the-box settings are typically too conservative for modern servers and TimescaleDB. You should make sure your postgresql.conf settings are tuned, either by using timescaledb-tune or doing it manually.

Creating a hypertable

-- Do not forget to create timescaledb extension
CREATE EXTENSION timescaledb;

-- We start by creating a regular SQL table
CREATE TABLE conditions (
  time        TIMESTAMPTZ       NOT NULL,
  location    TEXT              NOT NULL,
  temperature DOUBLE PRECISION  NULL,
  humidity    DOUBLE PRECISION  NULL
);

-- Then we convert it into a hypertable that is partitioned by time
SELECT create_hypertable('conditions', 'time');

Inserting and querying data

Inserting data into the hypertable is done via normal SQL commands:

INSERT INTO conditions(time, location, temperature, humidity)
  VALUES (NOW(), 'office', 70.0, 50.0);

SELECT * FROM conditions ORDER BY time DESC LIMIT 100;

SELECT time_bucket('15 minutes', time) AS fifteen_min,
    location, COUNT(*),
    MAX(temperature) AS max_temp,
    MAX(humidity) AS max_hum
  FROM conditions
  WHERE time > NOW() - interval '3 hours'
  GROUP BY fifteen_min, location
  ORDER BY fifteen_min DESC, max_temp DESC;

In addition, TimescaleDB includes additional functions for time-series analysis that are not present in vanilla PostgreSQL. (For example, the time_bucket function above.)

Installation

TimescaleDB is available pre-packaged for several platforms (Linux, Docker, MacOS, Windows). More information can be found in our documentation.

To build from source, see instructions here.

Timescale, a fully managed TimescaleDB in the cloud, is available via a free trial. Create a PostgreSQL database in the cloud with TimescaleDB pre-installed so you can power your application with TimescaleDB without the management overhead.

Resources

Architecture documents

Useful tools

  • timescaledb-tune: Helps set your PostgreSQL configuration settings based on your system's resources.
  • timescaledb-parallel-copy: Parallelize your initial bulk loading by using PostgreSQL's COPY across multiple workers.

Additional documentation

Community & help

Releases & updates

Contributing

More Repositories

1

promscale

[DEPRECATED] Promscale is a unified metric and trace observability backend for Prometheus, Jaeger and OpenTelemetry built on PostgreSQL and TimescaleDB.
Go
1,331
star
2

tsbs

Time Series Benchmark Suite, a tool for comparing and evaluating databases for time series data
Go
1,260
star
3

pgvectorscale

A complement to pgvector for high performance, cost efficient vector search on large workloads.
Rust
924
star
4

tobs

tobs - The Observability Stack for Kubernetes. Easy install of a full observability stack into a k8s cluster with Helm charts.
Shell
559
star
5

pgai

Bring AI models closer to your PostgreSQL data
Python
476
star
6

timescaledb-tune

A tool for tuning TimescaleDB for better performance by adjusting settings to match your system's CPU and memory resources.
Go
433
star
7

timescaledb-toolkit

Extension for more hyperfunctions, fully compatible with TimescaleDB and PostgreSQL πŸ“ˆ
Rust
362
star
8

timescaledb-parallel-copy

A binary for parallel copying of CSV data into a TimescaleDB hypertable
Go
357
star
9

prometheus-postgresql-adapter

Use PostgreSQL as a remote storage database for Prometheus
Go
335
star
10

timescaledb-docker

Release Docker builds of TimescaleDB
Dockerfile
288
star
11

helm-charts

Configuration and Documentation to run TimescaleDB in your Kubernetes cluster
Shell
263
star
12

pg_prometheus

PostgreSQL extension for Prometheus data
C
213
star
13

timescaledb-docker-ha

Create Docker images containing TimescaleDB, Patroni to be used by developers and Kubernetes.
Python
152
star
14

examples

Collection of example applications and tools to help you get familiar with TimescaleDB
JavaScript
120
star
15

nft-starter-kit

Timescale NFT Starter Kit
Python
114
star
16

vector-cookbook

Timescale Vector Cookbook. A collection of recipes to build applications with LLMs using PostgreSQL and Timescale Vector.
Jupyter Notebook
99
star
17

outflux

Export data from InfluxDB to TimescaleDB
Go
89
star
18

opentelemetry-demo

A demo system for exploring the tracing features of Promscale
Python
65
star
19

timescaledb-ruby

The timescaledb gem. Pack of helpers to work with TimescaleDB extension in Ruby.
Ruby
62
star
20

streaming-replication-docker

TimescaleDB Streaming Replication in Docker
Shell
56
star
21

docs

Timescale product documentation πŸ“–
JavaScript
50
star
22

pgspot

Spot vulnerabilities in postgres SQL scripts
Python
50
star
23

timescaledb-extras

Helper functions and procedures for timescale
PLpgSQL
44
star
24

benchmark-postgres

Tools for benchmarking TimescaleDB vs PostgreSQL
Go
38
star
25

docs.timescale.com-content

Content pages for TimescaleDB documentation
JavaScript
37
star
26

promscale_extension

[DEPRECATED] Tables, types and functions supporting Promscale
PLpgSQL
37
star
27

timescaledb-backup

Go
33
star
28

timescaledb-wale

Dockerized WAL-E with an HTTP API
Python
21
star
29

python-vector

Jupyter Notebook
19
star
30

terraform-provider-timescale

Timescale Cloud Terraform Provider
Go
18
star
31

pg_influx

InfluxDB Line Protocol Listener for PostgreSQL
C
17
star
32

homebrew-tap

TimescaleDB Homebrew tap, containing formulas for the database, tools, etc.
Ruby
16
star
33

tsv-timemachine

Sample application for time aware RAG with Streamlit, LlamaIndex and Timescale Vector. Learn more at https://www.timescale.com/ai
Python
15
star
34

templates

Templates to get started with Timescale on Finance or Sensors (IoT)
PLpgSQL
12
star
35

rag-is-more-than-vector-search

Companion repo to "RAG is more than vector search" blog post
Python
12
star
36

promscale-benchmark

Makefile
8
star
37

timescale-extension-utils-rs

Rust
5
star
38

unstructured-pgai-example

Example showing unstructured.io + timescaledb + PGAI
Python
5
star
39

doctor

Rule-based recommendations about your timeseries database.
Python
4
star
40

web-developer-assignment

HTML
3
star
41

wikistream-docker

A Docker environment for https://github.com/timescale/wikistream
Shell
3
star
42

mta-timescale

Demo: Load MTA bus feeds into TimescaleDB
3
star
43

cloud-actions

Cloud public actions
Shell
3
star
44

migration-eval

Tools to determine a migration strategy based on your database
Shell
3
star
45

docker-dbt

Dockerfiles for dbt
Python
2
star
46

aws-lambda-example

A sample serverless AWS Lambda time-series application.
Python
2
star
47

frontend-developer-assignment

HTML
2
star
48

pg_traceam

Simple table access method that just prints out what functions in the access methods and related functions that are called.
C
2
star
49

state_of_postgres

2019
SCSS
1
star
50

build-actions

GitHub actions for release pipelines (building, publishing, checking, etc.)
Shell
1
star
51

pgschema

1
star
52

docs-htmltojsx

A fork of react-magic html-to-jsx specifically modified to parse timescale docs
JavaScript
1
star
53

postgres_cheat_sheet

1
star
54

promscale_specs

Formal specifications for Promscale components
TLA
1
star
55

integrate-with-timescale-using-python

Best practice for interacting with your Timescale service programatically
1
star