企业级PostgreSQL扩展

Posted 飞象数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了企业级PostgreSQL扩展相关的知识,希望对你有一定的参考价值。

我们一直在讨论构建企业级 PostgreSQL的相关设置,例如安全、备份策略、高可用,以及不同规模 PostgreSQL。在本文中,我们将回顾一些最流行的开源 PostgreSQL扩展,这些扩展的一些功能用于满足特定的一些需求。

1  拓展与PostgreSQL扩展

 PostgreSQL是世界上功能最丰富、最先进的开源关系型数据库之一。他的特性不仅仅是通过社区发布的版本的功能,还包括使用 PostgreSQL中的扩展可以开发出上百个附加功能,以满足特定用户的需求。其中一些扩展非常流行,对于构建企业级 PostgreSQL是非常有用的。例如:fdw的扩展(mysql_fdwpostgres_fdw),可以允许PostgreSQL数据库与远程的相同/不同数据库(如PostgreSQL、MySQL、MongoDB等)进行对话。现在我们将讨论一些其他的扩展,这些扩展可以增强 PostgreSQL服务器的能力。

1.1  pg_stat_statements

pg_stat_statements 模块提供了统计服务器所执行的所有SQL语句统计信息的功能。该模块收集的统计信息可以通过pg_stat_statements视图进行查看。此模块要安装在每个要监控的数据库中,而且像其他扩展一样,它的 contrib 版本可以从PostgreSQL PGDG repository中获得(https://yum.postgresql.org/repopackages.php)。

1.2  pg_repack

 PostgreSQL中的表可能会由于MVCC特性而导致碎片化和膨胀,或者是因为大量的行被删除。这不仅会导致表中的空闲空间被占用,而且还会导致执行的sql语句效率不高。pg_repack是通过最流行的重新组织和打包表的办法来解决这个问题的。它可以重新组织表的内容,而无需在处理过程中对其设置排它锁。在重新打包过程中不会阻塞DML和查询操作。pg_repack1.2版本进一步引入并行索引构建新特性,以及重建索引的能力。官方文档(http://reorg.github.io/pg_repack/

1.3  pgaudit

 PostgreSQL有一个基础的语句日志功能。它可以设置log_statement =all参数来使用标准日志记录工具来实现。但这不足以满足大多数审计要求。企业部署的数据库特性之一就是针对用户交互/语句进行细粒度审计的功能。这是许多安全标准主要的遵从要求。

 PostgreSQL审计扩展(pgaudit)通过标准的 PostgreSQL日志记录工具提供详细的会话或对象审计日志记录。官方文档https://github.com/pgaudit/pgaudit#settings)。

1.4  pldebugger

对于使用PL/pgSQL编写存储过程的开发人员来说,这是一个必要的扩展。此扩展可以和pgadmin等GUI工具很好的集成起来,它允许开发人员对代码逐步的进行调试。在PGDG 存储库中有pldebugger包,安装很简单,设置好后我们就可以进行远程的代码调试了

官方文档https://git.postgresql.org/gitweb/?p=pldebugger.git

1.5  plprofiler

这是一个很好的扩展,可以找到执行慢的代码位置。这是非常有用的,特别是在专用数据库(如Oracle到 PostgreSQL)的复杂迁移过程中,会影响应用程序的性能。这个扩展可以编写一份关于总体执行时间和表状态的报告,并提供每一行代码的清晰信息。这个扩展在PGDG repo中是不可用,需要从源码中构建它。关于构建和安装plprofiler的详细信息将在以后的博客中介绍。官方文档https://bitbucket.org/openscg/plprofiler

1.6  PostGIS

PostGIS可以说是开放地理空间联盟规范的最通用的实现。我们可以看到PostGIS中的大量特性,这些特性在任何其他关系型数据库中都很少可用。

许多用户主要选择使用 PostgreSQL是因为支持PostGIS特性,事实上所有的这些特征不是由单个扩展实现的,而是由一系列扩展实现的。这使得PostGIS成为源代码构建中最复杂的扩展之一了。幸运的是所有的扩展都可以在PGDG中获得:

$ sudo yum install postgis24_10.x86_64 

只要安装了PostGIS包,我们就能在目标数据库上创建扩展了:


postgres=# CREATE EXTENSION postgis;
CREATE EXTENSION
postgres=# CREATE EXTENSION postgis_topology;
CREATE EXTENSION
postgres=# CREATE EXTENSION postgis_sfcgal;
CREATE EXTENSION
postgres=# CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION
postgres=# CREATE EXTENSION postgis_tiger_geocoder;
CREATE EXTENSION
postgres=# CREATE EXTENSION address_standardizer;
CREATE EXTENSION

1.7  语言扩展 : PL/Python, PL/Perl, PL/V8,PL/R 等等

 PostgreSQL的另一个强大的特性就是对编程语言的支持。你可以几乎用所有的编程语言写数据库的函数/存储过程。

因为有大量的库和完善的社区,根据TIOBE程序设计指标Python在编程语言中排名第三。你的团队技能和编码库在 PostgreSQL上也是支持的!用Java脚本为Node.js或者Angular编写代码的团队可以轻松的在PL/V8中编写 PostgreSQL代码。所需要的软件包都可以在PGDG 库中找到。

1.8  cstore_fdw

cstore_fdw是 PostgreSQL的列式存储扩展。列式存储对数据分析场景下的批量加载提供了显著的好处。cstore_fdw的专有特性是通过从磁盘读取相关数据来提高性能。它可以将数据压缩到6到10倍,减少了数据存档的空间。官方文档https://github.com/citusdata/cstore_fdw)。

1.9  HypoPG

HypoPG是一个支持添加虚拟索引的扩展--也就是说,不实际添加索引。这有助于我们回答例如“如果x列上有索引,执行计划将会怎样”等问题。安装和说明是官方文档的一部(https://hypopg.readthedocs.io/en/latest/installation.html)。

1.10  mongo_fdw

mongo_fdw将MongoDB的集合在 PostgreSQL中以表的形式体现。这是NoSQL和SQL的结合。官方文档https://github.com/EnterpriseDB/mongo_fdw)。

1.11  tds_fdw

 PostgreSQL另一个重要的扩展就是tds_fdw。在微软的SQL Server和Sybase中都使用了TDS格式的数据。它可以将SQL Server或者Sybase数据库中表作为PostgreSQL的本地表进行使用。fdw使用的是 FreeTDS libraries。

1.12  orafce

有许多Oracle正在往 PostgreSQL上进行迁移。对于那些正在迁移服务器的人来说, PostgreSQL中不兼容的函数是很麻烦的。orafce扩展就实现了Oracle数据库中的一些功能。该功能在Oracle10g上得到了验证,该模块对于生产工作非常有用。请参阅其官方文档(https://github.com/orafce/orafce#orafce---oracles-compatibility-functions-and-packages中有关PostgreSQL中实现的Oracle函数的列表。

1.13  TimescaleDB

在这个IOT和互联设备的新世界中。对于时序数据需求越来越大。timescale可以将 PostgreSQL转换为可扩展时序数据进行存储。官方文档https://www.timescale.com/)。

1.14  pg_bulkload

将大量数据以非常高效和快速的方式加载到数据库中对您来说是一个挑战吗?如果这样的话,pg_bulkload可能会帮助你解决这个问题。官方文档http://ossc-db.github.io/pg_bulkload/index.html)。

1.15  pg_partman

 PostgreSQL10引入了分区。但是创建新的分区和维护现有分区,包括清除不需要的分区时需要手工操作,如果你想使用自动化的部分维护,可以看看pg_partman提供了什么功能。 官方文档https://github.com/pgpartman/pg_partman)。

1.16  wal2json

 PostgreSQL具有与逻辑复制相关的内置特性,另外的信息被记录在WAL中,这将有助于逻辑解码。wal2json是一个流行的逻辑解码输出插件。还可以用于不同的用途,包括变化数据捕获。除了wal2json之外还有其他输出插件:PostgreSQL wiki中有一个简明的列表。

还有更多扩展可以帮助我们使用开源解决方案搭建企业级PostgreSQL。请联系我们,并询问我们是否知道有一种产品能满足您的特殊需求。
原文链接:https://www.percona.com/blog/2018/10/05/postgresql-extensions-for-an-enterprise-grade-system/

敬请关注飞象数据


以上是关于企业级PostgreSQL扩展的主要内容,如果未能解决你的问题,请参考以下文章

getSupportFragmentManager() 在活动扩展片段中未定义

OpenResty--------企业级理论实践篇

扩展SQL

企业级分布式 HTAP 数据库管理系统 TBase

在 PostgreSQL C 扩展中包含头文件

DBA专家 | 互联网教育企业 | 北京