摘要:插件管理是门技术活,尤其是对 PostgreSQL。
作为一种典型的开源关系型数据库, PostgreSQL 以保证数据可靠性和完整性的出色表现而闻名。尤其是地理位置应用系统、复杂数据对象处理等应用场景下。了解 PostgreSQL 的你,想必也知道它提供了丰富的内核编程接口,允许我们以插件的方式将功能集成到数据库内核中。
随着 PostgreSQL 的使用者越来越多,围绕它开发的第三方插件也越来越丰富。不仅开源社区提供了大量常用插件,第三方开源插件也如雨后春笋般增长着。或许现在的你,也正在开发着自己的 PostgreSQL 插件……
那么,如何管理我们的数据库插件呢?
当然,社区版本也已给我提供了一个插件管理模块,帮助我们管理数据库的插件。但是,社区插件管理模块通常要求我们有超级用户(即常说的 Superuser)权限,才能管理这些插件。
社区版插件管理
PostgreSQL 内核插件一般包含如下3个部分:
- 功能实现为 SO 动态共享库文件;
- 插件的描述信息文件 .control 文件;
- 用于创建、更新和删除插件的带版本号的 SQL 文件。
一般使用 create extension、alter extension、drop extension 来管理插件。使用语法详细参考官方参考手册。
另外,社区版插件的更新也是一个比较麻烦的过程,你需要:
1、 获取到所要升级插件的目标版本。在描述信息文件 .control 文件中修改对应版本号,如当前版本号为1.2,则修改为1.3;
2、 增加目标版本DDL SQL文件,命名为*–1.3.sql;
3、 增加老版本升级到目标版本的DDL SQL文件,命名为*–1.2–1.3.sql;
4、 修改源码添加目标版本新功能,并编译生成对应的SO动态库到指定目录,如默认的lib目录;
5、 执行alter extension update升级。
需要注意的是,社区版安装插件需要有插件所创建对象的权限,这就导致大多数插件需要超级用户或者数据库拥有者的权限。但对于现如今,公有云上开放超级用户给使用者,必然带来诸多安全隐患。
不管是 ALI、还是 AWS 等公有云 PostgreSQL 服务提供商给大家开发的 root 用户都并非超级用户,所以无法直接使用社区插件管理模块。 如何解决这一矛盾呢?
这里有一套安全、方便、快捷的解决方案,了解一下。
华为云数据库 PostgreSQL 插件管理
华为云数据库 PostgreSQL 插件管理,你只需要简单决定什么时候使用插件,什么时候放弃使用某插件。简单两步,轻松实现插件管理。
步骤1:以 root 用户连接需要支持插件的数据库,并创建插件。
psql --host=<RDS_ADDRESS> --port=<DB_PORT> --dbname=<DB_NAME> --username=root -c “select control_extension (‘create’,’<EXTENSION_NAME>’);”
RDS_ADDRESS为RDS实例的IP地址。
DB_PORT为RDS数据库实例的端口。
DB_NAME为需要创建插件的数据库名称。
EXTENSION_NAME为插件名称,如postgis。
在数据库 my_extension_db 中创建 postgis 插件示例如下:
步骤2:以 root 用户连接已创建插件的数据库,并删除插件。
psql --host=<RDS_ADDRESS> --port=<DB_PORT> --username=root --dbname=<DB_NAME> -c “select control_extension (‘drop’,’<EXTENSION_NAME>’);”
RDS_ADDRESS为RDS实例的IP地址。
DB_PORT为RDS数据库实例的端口。
DB_NAME为需要创建插件的数据库名称。
EXTENSION_NAME为插件名称,如postgis。
在数据库my_extension_db中创建postgis插件示例如下:
华为云数据库 PostgreSQL 提供了丰富的插件集,且将持续丰富我们的插件库。如果正在使用或将要使用的你有新的插件需求,也可以随时告诉我们。当前支持的插件集如下:
− postgis
− btree_gin
− btree_gist
− hstore
− pg_trgm
− tablefunc
− unaccent
− uuid-ossp
− cube
− dict_int
− dict_xsyn
− earthdistance
− intagg
− intarray
− ltree
− auto_explain、
− pg_stat_statements
− pg_pathman
− pg_hint_plan
− oracle_fdw
相比社区版本的插件管理方式,华为云数据库 PostgreSQL 提供的插件管理方案,旨在让用户更专注于业务需求,无需关注费时费力的维护工作。安全是前提、方便快捷是基础。扫描二维码,了解更多华为云数据库 PostgreSQL。
二维码链接:
点击阅读原文,了解华为云数据库最新活动