你可能会问本身 “为什么选择PostgreSQL ?” 开源数据库我们有好几种选择 (本文参考 MySQL, MariaDB 和 Firebird ), 那么PostgreSQL具有哪些其它开源数据库不具备的特点呢? PostgreSQL传播鼓吹它是 “世界上最先辈的开源数据库。” 我们将会给出PostgreSQL这么传播鼓吹的原因。本系列将带我们一路看看数据存储 – 数据模型, 构造, 数据类型, 和大年夜小限制、数据操作和检索。
数据模型
PostgreSQL 不仅仅是关系型,它也是对象关系型,这使它必定程度优于其他一些开源数据库,例如 MySQL,MariaDB 和 Firebird。一个对象 - 关系数据库的一个根本特点是支撑用户自定义对象和它的属性,包含数据类型、函数、操作符,域和索引。这使得 PostgreSQL 异常灵活和结实,除此之外,复杂的数据构造可以被创建,存储和检索,下面的例子可以看到标准 RDBMS 不支撑的嵌套和复合构造。
数据类型和构造
收集地址类型
如不雅 PostgreSQL 不克不及完全知足你的需求,或者你更偏向于更多选型, 那么看看我们在 Compose 平台供给的 NoSQL 数据库或其他开源 SQL 数据库,它们每个都有本身的优势,Compose 坚信选择合适的数据库为当务之急,作为解决筹划,有时刻这也意味着须要选择多个数据库。
PostgreSQL 有着广泛的被支撑数据类型列表,除了 numeric, floating-point, string, boolean 和你能想到的数据类型 (并且支撑各类选项),PostgreSQL 还引认为傲地支撑 uuid, monetary, enumerated, geometric, binary, network address,bit string, text search, xml, json, array, composite 和 range 数据类型,以及一些内部对象标识和日记地位类型。公平地说,MySQL,MariaDB 和 Firebird 在不合程度上支撑膳绫擎部分数据类型,但仅仅 PostgreSQL 支撑以上全部数据类型。
让我们细心看看个中几个数据类型:
PostgreSQL 供给用于存储不合收集地址的类型, CIDR (Classless Internet Domain Routing) 数据类型合适 IPv4 和 IPv6 收集地址,CIDR 的一些例子:
- 192.168.100.128/25
- 10.1.2.3/32
- 2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128
- ::ffff:1.2.3.0/128
也可用于收集地址存储的是 INET 数据类型, 用于 IPv4 和 IPv6 主机,子网是可选的,MACADDR 数据类型用于存储硬件标识的 MAC 地址,例如 08-00-2b-01-02-03。MySQL 和 MariaDB 供给一些 INET 函数用于收集地址转换,但不直接供给用于存储收集地址的数据类型, Firebird 也没有收集地址类型。
多维数组
因为 PostgreSQL 是对象关系数据库,数组的元素可以存储大年夜多半现有的数据类型,经由过程将方括号附加到应用数组类型的字段后就能定义数组,可以指定命组大年夜小,但不是必须的。让我们经由过程一个假日野餐菜单展示数组的应用:(译者注:建表脚本出缺点,创建表会报错,作者大年夜概只是展示数组数据类型的应用。)
几何类型
地舆数据正敏捷成为很多应用法度榜样的核心需求, PostgreSQL 一向支撑各类各样的几何数据类型,如点、线、圆、多边形。路径数据类型就是个中之一。路径中包含多个点序列,可以开放 (开端和停止点是没有连接的) 或封闭 (开端和停止点连接)。让我们用一个徒步观光的例子作为一个路径,在这个例子中我的徒步观光路线是轮回的,开端点和停止点相连,所以我的路径是闭环的。坐标内的圆括号意味着一个封闭的路径而方括号表示开放的路径。
PostGIS 扩大加强了 PostgreSQL 现有的几何数据特点,例如额外的空间类型,函数,操作符和索引,它支撑地位特点以及栅格和矢量数据数据。它还供给了与各类第三方开源和专有的地舆空间处理对象的互操作性,例如映射和出现数据. 本年一月份我们为 Compose PostgreSQL 安排供给了 PostGIS:为所有 Compose PostgreSQL 安排的 PostGIS。
留意在 MySQL 5.7.8 和 MariaDB 5.3.3,才添加了支撑 OpenGIS 地舆信息标准的数据类型扩大, 这个版本的 MySQL 和之后的 MariaDB 版本供给了和 类似 PostgreSQL 便利应用的几何数据类型的数据类型存储。 然而,在 MySQL 和 MariaDB,数据值必须先应用简单的敕令转换为几何格局之后才能插入到表中,Firebird 今朝并不供给地舆数据类型。
JSON 支撑
PostgreSQL 的 JSON 支撑在 SQL 数据库中支撑非构造化数据,当数据构造因为处在开辟中须要灵活性或数据对象包含了未知的字段时是有效的。
JSON 数据类型强迫检查 JSON 有效性,这让你可以应用专门的 JSON 操作符和 PostgreSQL 供给的内置函数用于萌芽和操作数据。也可用 JSONB 类型 – JSON 的二进制情势,与 JSON 不合的是它删除了数据中的空格,保存对象的次序不一样,存储层面做了优化,只有最后一个反复的键值保存。JSONB 平日是首选的格局因为它须要更少的空存放储对象,可以被索引,处理速度更快,因为它不须要被解析,要懂得更多,请查看: Is PostgreSQL Your Next JSON Database?
在 MySQL 5.7.8 和 MariaDB 10.0.1 支撑 JSON 对象, 固然今朝在这些数据库中有不合的函数和运算符支撑 JSON,它们的索引方法与 PostgreSQL 的 JSONB 不合。 Firebird 今朝仅支撑文本对象的 JSON。
推荐阅读
这篇文┞仿来源竽暌冠Jeff Atwood的文┞仿《The Eight Levels Of Programmers》,在开题之前,聊下“法度榜样员”这个名词,我认为将Programmer定义为“法度榜样员”的请求太低了>>>详细阅读
地址:http://www.17bianji.com/lsqh/37895.html
1/2 1