它表面上是个单机的关系型数据库,但它也是个文档数据库,key-value 数据库,时序数据库,流式计算引擎,搜索引擎,空间位置数据库;它几乎可以直接访问任意其他类型数据库,例如 Oracle,Mysql,Mongodb,Redis,ElasticSearch 等;它还可以直接变身为分布式数据库。 PostgreSQL 不仅仅是个数据库,它还是个和数据相关技术的生态系统。
Note ,这里之所以强调 SQL 标准而不是将具体的 SQL 语句,是想表达,我们经常使用,或者我们不常使用,但已经在 SQL 标准中定义了的语法,基本都已经在 PostgreSQL 中支持了。
CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');
CREATE TABLE person (
name text,
current_mood mood
);
line
,用{A,B,C}
表示,代表方程Ax + By + C = 0
192.168.0.1/24
SELECT to_tsquery('testzhcfg', '保障房资金压力');
to_tsquery
------------------------------------
'保障' & '房' & '资金' & '压力'
SELECT '{"bar": "baz", "balance": 7.77, "active":false}'::json;
json
-------------------------------------------------
{"bar": "baz", "balance": 7.77, "active":false}
(1 row)
SELECT '{"bar": "baz", "balance": 7.77, "active":false}'::jsonb;
jsonb
--------------------------------------------------
{"bar": "baz", "active": false, "balance": 7.77}
(1 row)
CREATE TABLE sal_emp (
name text,
pay_by_quarter integer[],
schedule text[][]
);
CREATE TYPE complex AS (
r double precision,
i double precision
);
CREATE TYPE inventory_item AS (
name text,
supplier_id integer,
price numeric
);
SELECT int4range(10, 20) @> 3;
?column?
----------
f
(1 row)
CREATE TABLE people (
...,
height_cm numeric,
height_in numeric GENERATED ALWAYS AS (height_cm / 2.54) STORED
);
读未提交
,读未提交
,可重复读
,可序列化
四个隔离级别。读已提交
是 PostgreSQL 中的默认隔离级别。支持表锁、行锁。页级锁,咨询所(乐观锁)PostgreSQL 在数据库的基本功能之外,也允许你使用其它语言编写程序来扩展数据库的功能,这些被称之为extensions
,这种扩展能力大大扩大了数据库的能力范围,下面选取了一些比较典型的 extension 列出来。
基于 PostgreSQL 开发的数据库也很多,下面选取了其中几个。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.