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

举报
华为云数据库 发表于 2018/07/30 15:37:36 2018/07/30
【摘要】 插件管理是门技术活,尤其是对 PostgreSQL。

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

 

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

 

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

 

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

 

社区版插件管理

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

1.      功能实现为 SO 动态共享库文件;

2.      插件的描述信息文件 .control 文件;

3.      用于创建、更新和删除插件的带版本号的 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>');"

l  RDS_ADDRESSRDS实例的IP地址。

l  DB_PORTRDS数据库实例的端口。

l  DB_NAME为需要创建插件的数据库名称。

l  EXTENSION_NAME为插件名称,如postgis

       

在数据库 my_extension_db 中创建 postgis 插件示例如下:

 

1.png

步骤2:以 root 用户连接已创建插件的数据库,并删除插件。

 

# psql --host=<RDS_ADDRESS> --port=<DB_PORT> --username=root --dbname=<DB_NAME> -c "select control_extension ('drop','<EXTENSION_NAME>');"

l  RDS_ADDRESSRDS实例的IP地址。

l  DB_PORTRDS数据库实例的端口。

l  DB_NAME为需要创建插件的数据库名称。

l  EXTENSION_NAME为插件名称,如postgis

 

在数据库my_extension_db中创建postgis插件示例如下:

2.png

 

华为公有云 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点击这里

了解华为云数据库最新活动:点击这里


 


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。