天天看點

PostgreSQL及timescaleDB初探

作者:晖晖yyds

一、PostgreSQL及timeescaleDB的定義(是什麼)

PostgreSQL:PostgreSQL是一種類似于mysql的關系型資料庫管理系統,是以加州大學計算機系開發的POSTGRES為基礎的對象關系型資料庫管理系統。PostgreSQL 使用名為 PostgreSQL 的許可證,類似于 BSD/MIT。它屬于開源軟體,C++實作的。

Timescaledb:首先它是時序資料庫,是作為postgresql擴充的一個服務。它的生态是基于PostgreSQL的。Timescaledb是 timescale.inc開發的一款相容sql的時序資料庫, 底層存儲架構在postgresql上。在timescaledb上 資料必須抽象為一張二維表。 關于怎麼設計這張二維表, timescaledb給出了narrow table 和wide table的兩個範式。

二、為什麼要用PostgreSQL及Timescaledb

作為我使用最根本的原因是項目招标檔案中指定以及arcgis(postgis)的因素。

那除去這些主觀因素,還有什麼其它因素呢,我們先來看一下資料庫的排名:

PostgreSQL及timescaleDB初探

資料庫趨勢曲線(截止到2022.11.5)

目前PostgreSQL直逼三巨頭(oracle,mysql,sqlserver),再借用一張圖來說明:

PostgreSQL及timescaleDB初探

再借用一段話:MySQL流行度位居第二,但樹大招風,處于前有狼後有虎,上有野爹下有逆子的不利境地:在嚴謹的事務處理和資料分析上,MySQL被同為開源關系型資料庫的PgSQL甩開幾條街;而在糙猛快的靈活方法論上,MySQL又不如新興的NoSQL産品。同時,MySQL上有Oracle父愛如山,中有MariaDB兄弟分家,下有諸如TiDB/OB之類協定相容的NewSQL逆子造反,因而也止步不前。唯有PostgreSQL迎頭趕上,保持着近乎指數增長的勢頭。如果說幾年前PG的勢還是Potential,那麼現在Potential已經開始兌現為Impact,開始對競争對手構成強力挑戰。

Oracle作為老牌商業軟體,才毋庸質疑,同時作為業界毒瘤,“德”也不必多說,故曰:“有才無德”。MySQL有開源之功德,但它一來采用了GPL協定,比起使用無私寬松BSD協定的PgSQL還是差不少意思,二來認賊作父,被Oracle收購,三來才疏學淺,功能簡陋,故曰“才淺德薄”。

德不配位,必有災殃。唯有PostgreSQL,既占據了開源崛起之天時,又把握住功能強勁之地利,還有着寬松BSD協定之人和。正所謂:藏器于身,因時而動。不鳴則已,一鳴驚人。德才兼備,攻守之勢易矣!

PostgreSQL的生态:

PostgreSQL及timescaleDB初探

postgreSQL 生态

用個搞笑的圖放一下:

PostgreSQL及timescaleDB初探

開源比較:

mysql:GPL。衍生軟體也要開源。

PostgreSQL:PostgreSQL,衍生軟體可商業化。因些生态更好。

三、怎麼用PostgreSQL及Timescaledb

a.安裝略過,自行搜尋。

b.栗子:

建立标準表:

CREATE TABLE conditions (

time TIMESTAMPTZ NOT NULL,

location TEXT NOT NULL,

temperature DOUBLE PRECISION NULL,

humidity DOUBLE PRECISION NULL

);           

以時間字段作為分片字段,将标準表轉換為超表:

SELECT create_hypertable('conditions', 'time');           

在超表中進行插入和查詢操作:

INSERT INTO conditions(time, location, temperature, humidity)

VALUES (NOW(), 'office', 70.0, 50.0);

SELECT * FROM conditions ORDER BY time DESC LIMIT 100;