好用的数据库插件管理, 长这样

摘要:插件管理是门技术活,尤其是对 PostgreSQL

 

作为一种典型的开源关系型数据库, PostgreSQL 以保证数据可靠性和完整性的出色表现而闻名。尤其是地理位置应用系统、复杂数据对象处理等应用场景下。了解 PostgreSQL 的你,想必也知道它提供了丰富的内核编程接口,允许我们以插件的方式将功能集成到数据库内核中。

 

随着 PostgreSQL 的使用者越来越多,围绕它开发的第三方插件也越来越丰富。不仅开源社区提供了大量常用插件,第三方开源插件也如雨后春笋般增长着。或许现在的你,也正在开发着自己的 PostgreSQL 插件……

 

那么,如何管理我们的数据库插件呢?

 

当然,社区版本也已给我提供了一个插件管理模块,帮助我们管理数据库的插件。但是,社区插件管理模块通常要求我们有超级用户(即常说的 Superuser)权限,才能管理这些插件。

 

社区版插件管理

 

PostgreSQL 内核插件一般包含如下3个部分:

  1. 功能实现为 SO 动态共享库文件;
  2. 插件的描述信息文件 .control 文件;
  3. 用于创建、更新和删除插件的带版本号的 SQL 文件。

 

一般使用 create extensionalter extensiondrop 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

 

了解PostgreSQL,请点击下方链接

https://www.huaweicloud.com/product/pg.html?utm_source=csdn&utm_medium=sm&utm_content=chajian_csdn

 

了解华为云数据库最新活动,请点击下方链接:

https://activity.huaweicloud.com/dbmove/index.html?utm_source=csdn&utm_medium=sm&utm_content=chajian_csdn

 

猜你喜欢

转载自blog.csdn.net/shijin23/article/details/81286187