PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come abilitare TimescaleDB su un database PostgreSQL esistente

Se disponi di un cluster PostgreSQL attivo e funzionante e devi gestire dati che cambiano nel tempo (come le metriche raccolte da un sistema), dovresti considerare l'utilizzo di un database di serie temporali progettato per memorizzare questo tipo di dati.

TimescaleDB è un database di serie temporali open source ottimizzato per l'acquisizione rapida e query complesse che supporta SQL completo. Si basa su PostgreSQL e offre il meglio dei mondi NoSQL e relazionali per i dati delle serie temporali.

In questo blog, vedremo come abilitare manualmente TimescaleDB in un database PostgreSQL esistente e come eseguire la stessa attività utilizzando ClusterControl.

Abilitazione manuale di TimescaleDB

Per questo blog, utilizzeremo CentOS 7 come sistema operativo e PostgreSQL 11 come server di database.

Per impostazione predefinita, TimescaleDB non è abilitato per PostgreSQL:

world=# \dx

                 List of installed extensions

  Name   | Version |   Schema |     Description

---------+---------+------------+------------------------------

 plpgsql | 1.0     | pg_catalog | PL/pgSQL procedural language

(1 row)

Per prima cosa, devi aggiungere il repository corrispondente per installare il software:

$ cat /etc/yum.repos.d/timescale_timescaledb.repo

[timescale_timescaledb]

name=timescale_timescaledb

baseurl=https://packagecloud.io/timescale/timescaledb/el/7/\$basearch

repo_gpgcheck=1

gpgcheck=0

enabled=1

gpgkey=https://packagecloud.io/timescale/timescaledb/gpgkey

sslverify=1

sslcacert=/etc/pki/tls/certs/ca-bundle.crt

metadata_expire=300

Supponiamo che tu abbia il repository PostgreSQL in atto poiché questa installazione di TimescaleDB richiederà dipendenze da lì.

Il prossimo passo è installare il pacchetto:

$ yum install timescaledb-postgresql-11

E configuralo nel tuo attuale database PostgreSQL. Per questo, modifica il tuo file postgresql.conf e aggiungi 'timescaledb' nel parametro shared_preload_libraries:

shared_preload_libraries = 'timescaledb'

O se hai già aggiunto qualcosa lì:

shared_preload_libraries = 'pg_stat_statements,timescaledb'

Puoi anche configurare max_background_workers per TimescaleDB per specificare il numero massimo di lavoratori in background.

timescaledb.max_background_workers=4

Keep in mind that this change requires a database service restart:

$ service postgresql-11 restart

E poi, avrai installato il tuo TimescaleDB:

postgres=# SELECT * FROM pg_available_extensions WHERE name='timescaledb';

    name     | default_version | installed_version |                              comment



-------------+-----------------+-------------------+-----------------------------------------------

--------------------

 timescaledb | 1.6.0           | | Enables scalable inserts and complex queries f

or time-series data

(1 row)

Quindi ora devi abilitarlo:

$ psql world

world=# CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

WARNING:

WELCOME TO

 _____ _                               _ ____________

|_   _(_)                             | | | _ \ ___ \

  | |  _ _ __ ___   ___ ___ ___ __ _| | ___| | | | |_/ /

  | | | |  _ ` _ \ / _ \/ __|/ __/ _` | |/ _ \ | | | ___ \

  | | | | | | | | |  __/\__ \ (_| (_| | |  __/ |/ /| |_/ /

  |_| |_|_| |_| |_|\___||___/\___\__,_|_|\___|___/ \____/

               Running version 1.6.0

For more information on TimescaleDB, please visit the following links:



 1. Getting started: https://docs.timescale.com/getting-started

 2. API reference documentation: https://docs.timescale.com/api

 3. How TimescaleDB is designed: https://docs.timescale.com/introduction/architecture



Note: TimescaleDB collects anonymous reports to better understand and assist our users.

For more information and how to disable, please see our docs https://docs.timescaledb.com/using-timescaledb/telemetry.



CREATE EXTENSION

Fatto.

world=# \dx

                                      List of installed extensions

    Name     | Version |   Schema |                         Description



-------------+---------+------------+--------------------------------------------------------------

-----

 plpgsql     | 1.0 | pg_catalog | PL/pgSQL procedural language

 timescaledb | 1.6.0   | public | Enables scalable inserts and complex queries for time-series

data

(2 rows)

Ora vediamo come abilitarlo utilizzando ClusterControl.

Utilizzo di ClusterControl per abilitare TimescaleDB

Supponiamo che il tuo cluster PostgreSQL sia importato in ClusterControl o addirittura distribuito utilizzandolo.

Per abilitare TimescaleDB utilizzando ClusterControl, devi solo andare su PostgreSQL Cluster Actions e premere sull'opzione "Abilita TimescaleDB".

Riceverai un avviso sul riavvio del database. Confermalo.

Puoi monitorare l'attività nella sezione Attività ClusterControl.

Allora avrai il tuo TimescaleDB pronto per l'uso.

Conclusione

Ora che TimescaleDB è attivo e funzionante, puoi gestire i dati delle serie temporali in modo più efficiente. Per questo, puoi creare nuove tabelle o persino migrare i tuoi dati attuali e, naturalmente, dovresti sapere come utilizzarli per sfruttare questo nuovo concetto.