一、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直逼三巨头(oracle,mysql,sqlserver),再借用一张图来说明:
再借用一段话: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的生态:
用个搞笑的图放一下:
开源比较:
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;