ExpressOA 3.0 跨平台,高性能,现代化的协同办公平台系统。
ExpressOA 3.0 现已支持 PostgreSQL 16 开源数据库 - 世界上功能最强大的开源数据库。
PostgreSQL 是全球最先进的开源数据库,它的全球社区是一个拥有数以千计的用户、贡献者、公司和组织组成的。PostgreSQL起源于加利福尼亚大学伯克利分校,已经有超过35年的历史,并且以无与伦比的速度持续发展。PostgreSQL成熟的特性不仅与顶级商业数据库系统匹配,而且在高级数据库功能、可扩展性、安全性和稳定性方面超过了它们。
2023年9月14日 - PostgreSQL全球开发组今天宣布PostgreSQL 16正式发布,作为世界上最先进的开源数据库,PostgreSQL 16是目前的最新版本。
PostgreSQL 16提升了性能,尤其在并行查询、大数据量加载和逻辑复制方面有显著的改进。该版本为开发人员和管理员提供了许多新功能,包括更多的SQL/JSON语法、新的工作负载监控指标,以及大型集群间更灵活的访问控制规则定义。
"随着关系数据库模式的发展,PostgreSQL继续提升在查询和处理大规模数据方面的性能",PostgreSQL核心团队成员Dave Page说,"PostgreSQL 16为用户提供了更多纵向扩展(scale-up)和横向扩展(scale-out)工作负载的方法,同时也为他们提供了理解和优化数据管理的新途径。"
PostgreSQL是一个创新的数据管理系统,以其可靠性和健壮性著称,得益于全球开发者社区超过35年的开源开发,已经成为各种规模组织的首选开源关系型数据库。
性能提升
PostgreSQL 16通过新的查询规划器优化提升了现有PostgreSQL功能的性能。在该最新版本中,查询规划器可以并行执行FULL和 RIGHT连接,为使用带有DISTINCT或ORDER BY子句的聚合函数的查询生成更优的执行计划,利用增量排序来处理SELECT DISTINCT查询,并优化窗口函数,使其执行更加高效。它还改进了RIGHT和OUTER“反连接(anti-joins)”,使用户能够识别出不在已连接表中的数据行。
该版本包含单一和并发操作中使用COPY进行批量加载的改进,测试显示在某些情况下性能提升高达300%。PostgreSQL 16增加了对使用libpq的客户端的负载均衡支持,并改进了vacuum策略,减少全表冻结的必要性。此外,PostgreSQL 16引入了在x86和ARM架构上使用 SIMD 的CPU加速,从而在处理ASCII和JSON字符串以及执行数组和子事务搜索时,性能有所提升。
逻辑复制
逻辑复制允许用户将数据流复制到其他可以解析PostgreSQL逻辑复制协议的节点或订阅者。在PostgreSQL 16中,用户可以从备节点(standby)执行逻辑复制,这意味着备节点可以将逻辑变更发布到其他服务器。这为开发者提供了新的工作负载分布选项——例如,使用备节点而不是更繁忙的主节点通过逻辑复制将更改应用到下级订阅端。
此外,PostgreSQL 16中对逻辑复制进行了多项性能改进。订阅者现在可以使用并行方式来处理大型事务。对于没有主键的表,订阅者可以使用B-tree索引而不是顺序扫描来查找行。在某些条件下,用户还可以使用二进制格式加速初始表同步。
PostgreSQL 16逻辑复制的访问控制做了多项改进,包括新的预定义角色 pg_create_subscription,该角色允许用户新建逻辑订阅。
该版本开始支持双向逻辑复制功能,可以在两个不同发布者的表之间进行数据复制。
开发者体验
PostgreSQL 16 添加了更多SQL/JSON标准的语法,包括构造函数和谓词,比如 JSON_ARRAY()、JSON_ARRAYAGG() 和 IS JSON。该版本允许使用下划线作为千位分隔符(例如 5_432_000),并支持非十进制整数常量(如 0x1538、0o12470和0b1010100111000)。
PostgreSQL 16 为开发者提供更多 psql 命令,包括bind,该命令允许用户使用带参数的查询,并使用 bind 来代替变量(例如 SELECT $1::int $2::int bind 1 2 g)。
PostgreSQL 16 对规定如何排序文本的文本排序规则(text collations)进行了改进。PostgreSQL 16构建(Build)时默认启用ICU(国际化组件),并从系统环境中确定默认的ICU区域设置,允许用户自定义ICU排序规则。
监控
理解I/O操作对系统的影响是优化数据库工作负载性能的一个关键方面。PostgreSQL 16 引入了一项与I/O操作相关的关键性新指标pg_stat_io,用于详细分析I/O访问模式。
此外,该版本在pg_stat_all_tables视图中添加了一个新字段,该字段记录了最后一次扫描表或索引的时间戳。PostgreSQL 16通过记录语句中传进来的参数值,提升了auto_explain的可读性,以及pg_stat_statements和pg_stat_activity使用查询跟踪算法的准确性。
访问控制与安全性
PostgreSQL 16 提供了更精细的访问控制选项,并增强了相关安全功能。该版本对pg_hba.conf和pg_ident.conf的管理做了改进,包括允许使用正则表达式匹配用户和数据库名称,并支持使用include指令来引入外部配置文件。
该版本添加了几个有关安全性的客户端连接参数,包括require_auth,它允许客户端指定可接受的来自服务器端的身份验证参数,以及sslrootcert="system",该参数表示PostgreSQL将使用客户端操作系统提供的可信证书(CA)。此外,该版本增加了对 Kerberos 信任委托的支持,允许诸如 postgres_fdw 和 dblink 这样的扩展(extension)使用经过身份验证的凭证连接到受信任的服务。