Nếu bạn đang thiết lập và chạy một cụm PostgreSQL và bạn cần xử lý dữ liệu thay đổi theo thời gian (như số liệu được thu thập từ một hệ thống), bạn nên xem xét sử dụng cơ sở dữ liệu chuỗi thời gian được thiết kế để lưu trữ loại dữ liệu này.
TimescaleDB là cơ sở dữ liệu chuỗi thời gian mã nguồn mở được tối ưu hóa để nhập nhanh và các truy vấn phức tạp hỗ trợ SQL đầy đủ. Nó dựa trên PostgreSQL và nó cung cấp những gì tốt nhất của thế giới NoSQL và Relational cho dữ liệu Chuỗi thời gian.
Trong blog này, chúng ta sẽ xem cách bật TimescaleDB theo cách thủ công trong cơ sở dữ liệu PostgreSQL hiện có và cách thực hiện tác vụ tương tự bằng ClusterControl.
Bật TimescaleDB theo cách thủ công
Đối với blog này, chúng tôi sẽ sử dụng CentOS 7 làm hệ điều hành và PostgreSQL 11 làm máy chủ cơ sở dữ liệu.
Theo mặc định, bạn chưa bật TimescaleDB cho PostgreSQL:
world=# \dx
List of installed extensions
Name | Version | Schema | Description
---------+---------+------------+------------------------------
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(1 row)
Vì vậy, trước tiên, bạn cần thêm kho tương ứng để cài đặt phần mềm:
$ 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
Chúng tôi sẽ cho rằng bạn đã có sẵn kho lưu trữ PostgreSQL vì cài đặt TimescaleDB này sẽ yêu cầu các phụ thuộc từ đó.
Bước tiếp theo là cài đặt gói:
$ yum install timescaledb-postgresql-11
Và định cấu hình nó trong cơ sở dữ liệu PostgreSQL hiện tại của bạn. Đối với điều này, hãy chỉnh sửa tệp postgresql.conf của bạn và thêm 'timescaledb' trong thông số shared_preload_libraries:
shared_preload_libraries = 'timescaledb'
Hoặc nếu bạn đã thêm thứ gì đó vào đó:
shared_preload_libraries = 'pg_stat_statements,timescaledb'
Bạn cũng có thể định cấu hình max_background_workers cho TimescaleDB để chỉ định số lượng nhân viên nền tối đa.
timescaledb.max_background_workers=4
Keep in mind that this change requires a database service restart:
$ service postgresql-11 restart
Và sau đó, bạn sẽ cài đặt TimescaleDB của mình:
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)
Vì vậy, bây giờ, bạn cần kích hoạt nó:
$ 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
Đã xong.
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)
Bây giờ, hãy xem cách bật tính năng này bằng ClusterControl.
Sử dụng ClusterControl để bật TimescaleDB
Chúng tôi sẽ cho rằng bạn đã nhập cụm PostgreSQL của mình vào ClusterControl hoặc thậm chí được triển khai bằng cách sử dụng nó.
Để bật TimescaleDB bằng ClusterControl, bạn chỉ cần truy cập PostgreSQL Cluster Actions và nhấn vào tùy chọn “Bật TimescaleDB”.
Bạn sẽ nhận được cảnh báo về việc khởi động lại cơ sở dữ liệu. Xác nhận nó.
Bạn có thể giám sát tác vụ trong phần Hoạt động ClusterControl.
Sau đó, bạn sẽ sử dụng TimescaleDB.
Kết luận
Bây giờ bạn đã thiết lập và chạy TimescaleDB, bạn có thể xử lý dữ liệu chuỗi thời gian của mình theo cách hiệu quả hơn. Đối với điều này, bạn có thể tạo bảng mới hoặc thậm chí di chuyển dữ liệu hiện tại của mình và tất nhiên, bạn nên biết cách sử dụng nó để tận dụng khái niệm mới này.