📢📢📢📣📣📣
哈嘍!大家好,我是【IT邦德】,江湖人稱jeames007,10余年DBA及大數據工作經驗
一位上進心十足的【大數據領域博主】!😜😜😜
中國DBA聯盟(ACDU)成員,目前服務于工業互聯網
擅長主流Oracle、MySQL、PG、高斯及Greenplum運維開發,備份恢復,安裝遷移,性能優化、故障應急處理等。
? 如果有對【數據庫】感興趣的【小可愛】,歡迎關注【IT邦德】💞💞💞
??????感謝各位大可愛小可愛!??????
文章目錄
- 📣 1.時序數據庫
- 📣 2.TimescaleDB
- 📣 3.安裝PG
- ?3.1. rpm包下載
- ?3.2 安裝依賴包
- ?3.3 始化安裝
- ?3.4 配置參數
- ?3.5 重啟
- 📣 4.TimescaleDB部署
- ? 4.1 repository
- ? 4.2 yum在線安裝
- ? 4.3 插件配置
- 📣 5.TimescaleDB使用
- ? 5.1 登陸PG
- ? 5.2 創建插件
- ? 5.3 使用超表
- 📣 6 總結
運用時間模型來構造的應用非常需要時序數據庫的加持,包括未來大數據的趨勢,時序數據庫必然會成為一個新潮流。
📣 1.時序數據庫
什么是時序數據庫?顧名思義,用于處理按照時間變化順序的數據的數據庫即為時序數據庫(time-series database),時序數據庫專門優化處理帶時間標簽的數據,為什么會衍生時序數據庫這一種新趨勢呢?我們知道像PostgreSQL和MySQL這種關系型數據庫對于短期需求不大的情況下下還是可以滿足的,但是一旦數據量增長,其性能不足以支持頻繁的添加和讀取需求。運用時間模型來構造的應用非常需要時序數據庫的加持,包括未來大數據的趨勢,時序數據庫必然會成為一個新潮流。
📣 2.TimescaleDB
對于TimescaleDB來說,在功能的豐富程度上戰勝了排名更靠前的幾位選手,但是對于性能上可能處于下風,因此TimescaleDB如何持續地發展下去、如何發展地更好,除了探尋在性能等綜合素質方面的提升外,在PostgreSQL的肩膀上怎么樣更好地適應現代化需求才是重中之重。
截止2024年2月,TimescaleDB在DB-Engines中排名的處于第4位,并一直處于上升的趨勢。
TimescaleDB是基于PostgreSQL數據庫打造的一款時序數據庫,插件化的形式,隨著PostgreSQL的版本升級而升級,不會因為另立分支帶來麻煩。
📣 3.安裝PG
?3.1. rpm包下載
https://ftp.postgresql.org/pub/repos/yum/14/redhat/rhel-8.1-x86_64/
下載lib
wget https://ftp.postgresql.org/pub/repos/yum/14/redhat/rhel-8.1-x86_64/postgresql14-libs-14.9-2PGDG.rhel8.x86_64.rpm
下載客戶端和庫
wget https://ftp.postgresql.org/pub/repos/yum/14/redhat/rhel-8.1-x86_64/postgresql14-14.9-2PGDG.rhel8.x86_64.rpm
下載service
wget https://ftp.postgresql.org/pub/repos/yum/14/redhat/rhel-8.1-x86_64/postgresql14-server-14.9-2PGDG.rhel8.x86_64.rpm
?3.2 安裝依賴包
yum install -y cmake make gcc zlib gcc-c++ perl readline readline-devel
yum install -y zlib-devel perl python36 tcl openssl ncurses-devel openldap pam
yum install -y zlib libicu
rpm -ivh postgresql14-libs-14.9-2PGDG.rhel8.x86_64.rpm
rpm -ivh postgresql14-14.9-2PGDG.rhel8.x86_64.rpm
rpm -ivh postgresql14-server-14.9-2PGDG.rhel8.x86_64.rpm
?3.3 始化安裝
/usr/pgsql-14/bin/postgresql-14-setup initdb
systemctl enable postgresql-14
systemctl start postgresql-14
systemctl status postgresql-14
?3.4 配置參數
cat >> /var/lib/pgsql/14/data/postgresql.conf <<"EOF"
listen_addresses = '*'
port=5432
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%a.log'
log_truncate_on_rotation = on
EOF
cat << EOF > /var/lib/pgsql/14/data/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
local all all trust
host all all 127.0.0.1/32 trust
host all all 0.0.0.0/0 md5
host replication all 0.0.0.0/0 md5
local replication all trust
EOF
?3.5 重啟
systemctl restart postgresql-14
ALTER USER postgres WITH PASSWORD ‘123456’;
psql -U postgres -h 192.168.3.10 -d postgres -p 5432
📣 4.TimescaleDB部署
? 4.1 repository
tee /etc/yum.repos.d/timescale_timescaledb.repo <<EOL
[timescale_timescaledb]
name=timescale_timescaledb
baseurl=https://packagecloud.io/timescale/timescaledb/el/$(rpm -E %{rhel})/\$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
EOL
? 4.2 yum在線安裝
1.Update your local repository list:
yum update --skip-broken --nobest2.Install TimescaleDB:
yum install timescaledb-2-postgresql-14在Red Hat Enterprise Linux 8上安裝時,需要使用:
sudo dnf module disable postgresql
命令禁用系統中內置的PostgreSQL模塊。
? 4.3 插件配置
修改postgresql config文件,使timescaledb這個插件能正常工作,通過調優腳本來配置數據庫
[root@rhel8 ~]# find / -name pg_config
/usr/pgsql-14/bin/pg_config
sudo timescaledb-tune --pg-config=/usr/pgsql-14/bin/pg_config
📣 5.TimescaleDB使用
? 5.1 登陸PG
[root@rhel8 ~]# su - postgres
[postgres@rhel8 ~]$
[postgres@rhel8 ~]$ psql
psql (14.10)
Type "help" for help.postgres=# create database jemdb;
CREATE DATABASE
postgres=# \c jemdb
You are now connected to database "jemdb" as user "postgres".
? 5.2 創建插件
1.創建插件
CREATE EXTENSION IF NOT EXISTS timescaledb;2.刪除插件
DROP EXTENSION IF EXISTS timescaledb;jemdb=# \dxList of installed extensionsName | Version | Schema | Description
-------------+---------+------------+--------------------------------------------------------------------------------------plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural languagetimescaledb | 2.14.2 | public | Enables scalable inserts and complex queries for time-series data (Apache 2 Edition)
(2 rows)
? 5.3 使用超表
1、創建普通測試表
CREATE TABLE conditions (
time TIMESTAMPTZ NOT NULL,
location TEXT NOT NULL,
temperature DOUBLE PRECISION NULL,
humidity DOUBLE PRECISION NULL
);2、基于time分區將上一步創建的普通表轉換為超表
jemdb=# SELECT create_hypertable('conditions', 'time');create_hypertable
-------------------------(1,public,conditions,t)
(1 row)3、插入數據并查詢
jemdb=# INSERT INTO conditions(time, location, temperature, humidity)
SELECT now(), to_char(i, 'FM0000'), random()*i, random()*i FROM generate_series(1,10000) i;4.針對過去3小時的數據,每15分鐘采集度量一次,按照時間和溫度降序排序
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;5.更改現有超表上的塊間隔長度
SELECT set_chunk_time_interval('conditions', INTERVAL '24 hours');SELECT h.table_name, c.interval_lengthFROM _timescaledb_catalog.dimension cJOIN _timescaledb_catalog.hypertable hON h.id = c.hypertable_id;
超表(hypertable)是具有特殊功能的PostgreSQL表,可以很容易地處理時間序列數據。與它們交互就像與普通PostgreSQL表交互一樣,但在幕后,超表會自動按時間將數據劃分為塊。在TimescaleDB中,超表與普通PostgreSQL表可以一起存在。超表用來存儲時序數據,這樣可以提高插入和查詢的性能,而且可以訪問一些有用的時間序列特性。普通PostgreSQL表用來存儲其它關系型數據。
📣 6 總結
隨著物聯網的發展,時序數據庫的需求越來越多,比如水文監控、工廠的設備監控、國家安全相關的數據監控、通訊監控、金融行業指標數據、傳感器數據等。
在互聯網行業中,也有著非常多的時序數據,例如用戶訪問網站的行為軌跡,應用程序產生的日志數據等等。
以下是時序數據庫的發展史推薦給大家,一起交流學習