Postgres 10 开发者新特性
作者 Alex Giamas ,译者 罗远航
目前非常流行的 RDBMS PostgresSQL 已经在几周前发布了它的 第 10 个版本 。由于 Postgres 的可靠性、节约成本、成熟,当然还有它的开源,已经 21 岁的 Postgres 在开发者之中仍旧非常流行。
Postgres 10 带来了一些新特性,其中一些特性另开发者感到十分兴奋。10Clouds 在 博客 中详细介绍了其中的一些特性。通过消除主表(master table)中触发器(trigger)的需求,本地分区(native partitioning)现在变得更简单了。这意味着创建分区表将变得更简单,并且从开发者的角度来看,现在从分区数据表中进行查询和插入与在非分区的数据表进行这些操作是完全一致的。
多列统计(multicolumn statistics)是 Postgres 10 的另一项改进。通过把来自不同列的数据关联起来,查询规划器(query planner)现在可以避免一些边缘情况,在那些边缘情况下,之前的 Postgres 版本会 认为 WHERE 语句 更强的选择性 ,并且会导致选择了错误计划从而拖慢执行时间。Postgres 的这个改进在整个 SQL 世界中都是极具创新性的。
Postgres 10 还对 并行性 进行了改进。开发者现在可以使用索引扫描(index scans)和仅索引扫描(index-only scans)、并行合并连接(merge joint)以及位图堆扫描。并行查询是通过不同的 workers 来实现的,因此在某些情况下,设置和分解的成本会超过并行化的好处。默认情况下,可以在大于 8MB 大小的表以及大于 512KB 的索引上启用并行表扫描(parallel table scan),但是这些选项可以根据需要进行配置。
Postgres 10 另一个重要的新特性是支持 JSON 和 JSONB 类型列的 全文搜索 。一旦我们创建了一个特定语言的全文索引,我们就可以通过 JSON 字段对值进行直接搜索。在 JSON 列上的全文索引与其他列是类似的,因此我们的查询需要使用 to_tsquery 函数和 to_tsvector 函数的文本搜索的语法。
标识列(Identity columns) 和自增列(Auto-increment columns)也是 Postgres 10 进行改进的一个地方。新的实现方法会有一点冗长,但是它是符合 SQL 标准的,使得在不同数据库之间的迁移会更加容易。最重要的是,使用 Postgres 10 时,我们在从一个不同的 id 重启时,不再需要修改序列(alter sequences)了,但是我们可以对这一列进行修改(alter),Postgres 就会将这一列识别为一个序列,这样操作会简化我们数据库中的日常操作。
正如我们预料到的那样,Postgres 10 存在一些 不向后兼容 的改动。对浮点时间戳的支持已经被抛弃了,对于低于版本 8 的 pg_dump 也已经不再提供支持,有关复制(replication)和 pg_basebackup 工具的一些默认值也有所变化。版本编号由三部分改为了两部分,同时开发者的脚本不能直接运行,而是使用类似于 server_version_num 这种查询,它返回的是一致的的可排序的和可比较的(sortable and comparable)版本号。
查看英文原文:Postgres 10 Features for Developers
- MIUI全面开放资源 助力开发者出海
- 百度花 100 万寻找 AI 开发者“唤醒万物”
- Mac系软件开发者为何独家指定这家中国软件发行商?
- 我作为开发者犯过的两次愚蠢的错误
- iOS 11.4.1和10.13.6第四个开发者测试版发布
- 余承东:华为三到五年内研发费用全球第一;每年投10亿给开发者
- 后智能手机与后云计算时代叠加,IoT开发者迎来春天,谁将借力崛
- 中国独立游戏开发者怎么看“Steam中国”?
- 2018年开发者生态系统报告:Java是最受欢迎的编程语言
- 灵感来源于一款启发式的积木,这名开发者给我们带来一个创作的平