技术标签: postgresql PG 服务器 数据库
PostgreSQL是一个可扩展的关系型数据库,支持插件机制。插件可以增强PostgreSQL的功能,例如添加新的数据类型、查询优化器、存储引擎等等。以上是一些常用的PostgreSQL插件,它们可以帮助开发者扩展PostgreSQL的功能,提高数据库的性能和灵活性。
PostgreSQL 最常用的插件 ](https://www.cnblogs.com/88223100/p/The-most-common-plug-ins-of-PostgreSQL.html)
您可以使用以下命令来查看 PostgreSQL 中已安装的插件:
SELECT * FROM pg_available_extensions;
这将列出所有可用的扩展和其描述。
您还可以使用以下命令来查看已安装的插件:
SELECT * FROM pg_extension;
dx
这将列出所有已安装的扩展及其状态和版本信息。
pgAudit是一个用于审计PostgreSQL数据库的插件,可以记录每个SQL语句的执行情况,包括执行时间、执行用户、执行结果等信息。下面是pgAudit插件的使用方法:
首先需要安装pgAudit插件,可以使用以下命令:
sudo apt-get install postgresql-contrib
安装完成后,需要在postgresql.conf文件中添加以下配置:
shared_preload_libraries = 'pgaudit'
pgaudit.log = 'ddl, read, write'
添加配置后,需要重启PostgreSQL服务器使配置生效:
sudo service postgresql restart
在使用pgAudit插件之前,需要先创建一个审计日志表,可以使用以下命令:
CREATE TABLE audit.logged_actions (
schema_name text NOT NULL,
table_name text NOT NULL,
user_name text NOT NULL,
action_tstamp timestamp with time zone NOT NULL default current_timestamp,
action text NOT NULL,
original_data text,
new_data text,
query text,
action_reason text,
client_addr inet,
client_port integer,
session_user_name text,
session_id text,
application_name text
);
在创建审计日志表后,需要使用以下命令开启审计日志记录:
SET pgaudit.log = 'all';
审计日志记录完成后,可以使用以下命令查看审计日志:
SELECT * FROM audit.logged_actions;
以上就是pgAudit插件的使用方法,通过使用pgAudit插件,可以方便地对PostgreSQL数据库进行审计和监控。
SET pgaudit.log = 'all';
是一个 PostgreSQL pgaudit 插件的设置命令,它的作用是启用 pgaudit 插件并将所有数据库操作记录到日志中。
pgaudit 是一个第三方插件,它可以用于审计 PostgreSQL 数据库的所有操作。它可以记录用户登录、数据库对象的创建、修改和删除、SQL 查询语句等操作,以及失败的登录尝试、未授权的访问等安全事件。
在设置 pgaudit.log
为 'all'
后,pgaudit 将记录所有数据库操作,包括成功和失败的操作。这将产生大量的日志数据,因此建议仅在需要详细审计时使用该设置。您可以根据需要将其设置为 'ddl'
、'read'
或 'write'
等选项,以记录特定类型的操作。
请注意,启用 pgaudit 插件会对数据库的性能产生一定的影响,因此在生产环境中建议谨慎使用。
PostgreSQL Foreign Data Wrapper (FDW) 是一种 PostgreSQL 扩展,它使得 PostgreSQL 数据库可以通过外部数据源连接到其他数据库或数据存储系统。FDW 允许 PostgreSQL 数据库通过 SQL 查询访问外部数据源的表、视图和函数,就好像它们是本地表一样。
FDW 通过实现 PostgreSQL 外部表(Foreign Table)的概念,将外部数据源映射到 PostgreSQL 数据库中。外部表的定义包括外部数据源的连接信息、表结构信息、索引和约束等。当查询外部表时,PostgreSQL 会将查询转换为外部数据源的查询语言,并将结果集返回到客户端。
FDW 的优点包括:
PostgreSQL FDW 扩展提供了以下特性:
使用 PostgreSQL FDW 扩展,可以轻松地将其他数据库和数据存储系统集成到 PostgreSQL 中,从而实现数据的统一管理和查询。需要注意的是,FDW 查询外部数据源的性能受到外部数据源的性能和网络通信的影响。在使用 FDW 时,需要评估外部数据源的性能和可用性,以确保查询效率和数据一致性。
pg_dblink是一个PostgreSQL扩展模块,它允许在PostgreSQL中使用SQL语句来连接其他的PostgreSQL数据库,或者连接其他数据库系统(如Oracle、MySQL等)。它使用动态语句执行(Dynamic SQL)来实现连接和操作外部数据,因此需要编写更多的代码来完成相同的任务。
pg_dblink的主要功能包括:
使用pg_dblink需要先安装该扩展模块,可以使用CREATE EXTENSION命令来安装。安装后,可以使用dblink_connect函数来连接其他数据库系统,使用dblink_exec函数来执行远程SQL语句,使用dblink_fetch函数来获取远程SQL语句执行的结果。同时,pg_dblink还提供了其他的函数和操作,可以满足不同的需求。
postgres_fdw是PostgreSQL Foreign Data Wrapper的缩写,可以将其他数据库系统中的数据表映射到PostgreSQL中,让用户可以像操作本地数据表一样操作外部数据表,它实现了PostgreSQL的外部数据访问功能。
而dblink是一个PostgreSQL扩展模块,可以在PostgreSQL中连接其他的PostgreSQL数据库或其他数据库系统,并执行远程SQL语句,它实现了PostgreSQL的远程数据访问功能。
因此,两者的功能和用途不同。postgres_fdw主要用于访问外部数据表,而dblink主要用于访问远程数据库。
PostgreSQL file_fdw 是 PostgreSQL 中的一种扩展,它可以将文件系统中的文件映射到 PostgreSQL 数据库中,从而允许在 PostgreSQL 中访问这些文件。file_fdw 扩展提供了一种简单的方法来将文件系统中的数据集成到 PostgreSQL 中,无需复制数据或维护 ETL 流程。
file_fdw 扩展提供了以下特性:
使用 PostgreSQL file_fdw 扩展,可以轻松地将文件系统中的数据集成到 PostgreSQL 中,从而实现数据的统一管理和查询。例如,您可以将 CSV 文件作为外部表导入到 PostgreSQL 中,并使用 SQL 查询来访问和操作这些数据。
pg_cron 是一个用于 PostgreSQL 数据库的扩展,它提供了在数据库中执行定期任务的功能。pg_cron 扩展允许您在 PostgreSQL 数据库中定义和调度基于时间的作业,并以预定的时间间隔自动执行这些作业。
pg_cron 扩展的作用包括:
定期任务调度:pg_cron 允许您在 PostgreSQL 数据库中创建定期任务,例如定时备份、数据清理、统计计算等。您可以使用类似于 cron 的语法定义作业的执行时间表。
作业管理:pg_cron 允许您创建、修改、查看和删除作业。您可以轻松管理数据库中的定期任务,而无需使用外部工具或脚本。
作业执行控制:pg_cron 提供了对作业执行的灵活控制。您可以暂停和恢复作业的执行,也可以立即执行作业而不必等待预定的执行时间。
错误处理和日志记录:pg_cron 记录作业的执行结果和状态,并提供错误处理机制。您可以查看作业的执行日志,并根据需要采取相应的措施。
使用 pg_cron 扩展,您可以在 PostgreSQL 数据库中实现自动化的定期任务管理,避免依赖外部工具和脚本。它简化了定时任务的创建和管理,并提供了灵活的调度和控制选项,以满足您的需求。
CREATE EXTENSION IF NOT EXISTS “pg_cron”;
ERROR: can only create extension in database postgres
DETAIL: Jobs must be scheduled from the database configured in cron.database_name, since the pg_cron background worker reads job descriptions from this database.
HINT: Add cron.database_name = ‘test’ in postgresql.conf to use the current database.
CONTEXT: PL/pgSQL function inline_code_block line 4 at RAISE
cron.database_name 添加需要安装插件的数据库
在 PostgreSQL 中,cron.database_name
是一个配置参数,用于指定 pg_cron 后台工作进程读取作业描述的数据库名称。这个参数的值是一个字符串,表示数据库名称。
答案是可以设置多个数据库。您可以在 cron.database_name
参数的值中指定多个数据库名称,使用逗号进行分隔。例如:
cron.database_name = 'db1, db2, db3'
上述配置将使 pg_cron 后台工作进程从数据库 db1
、db2
和 db3
中读取作业描述。
请注意,每个数据库都必须启用了 pg_cron 扩展,并在其中定义了作业。否则,即使配置了多个数据库名称,pg_cron 后台工作进程也无法读取和执行作业。
另外,请确保在修改 PostgreSQL 配置文件后重新加载配置使其生效。可以使用 pg_ctl
命令或 PostgreSQL 的重新启动来实现。
Citus 是一个开源的 PostgreSQL 扩展,它旨在为 PostgreSQL 提供水平扩展能力和分布式数据库功能。它使得在大规模数据集上进行并行查询和分布式数据处理变得更加容易。
以下是 Citus 的一些主要特性和功能:
水平扩展:Citus 允许将 PostgreSQL 扩展到多个节点,从而实现数据的水平分片和分布式存储。通过将数据分布在多个节点上,可以实现高度可伸缩性和高吞吐量。
分布式查询:Citus 提供了分布式查询引擎,可以将查询计划并行执行在多个节点上。这样可以加快查询速度并减少响应时间。
分布式事务:Citus 支持分布式事务处理,使得在分布式环境中维护数据的一致性和完整性变得更加容易。它提供了事务管理和并发控制机制,确保事务的原子性、一致性、隔离性和持久性。
扩展性和灵活性:Citus 可以根据需要动态添加或删除节点,以适应不断增长的数据和负载。它还提供了灵活的数据分片策略和查询路由机制,以便根据应用程序的需求进行优化。
PostgreSQL 兼容性:Citus 是以 PostgreSQL 为基础开发的扩展,因此保留了 PostgreSQL 的兼容性和丰富的功能集。您可以继续使用 PostgreSQL 的各种功能,如索引、触发器、视图和存储过程。
简化的管理和开发:Citus 提供了一组工具和命令,用于管理分布式集群和执行分布式查询。它还提供了用于数据分片和迁移的工具,以及用于监控和调优的仪表板。
Citus 是一个强大的工具,适用于需要处理大规模数据和高并发负载的应用程序。它可以帮助提高查询性能、扩展性和可用性,并简化分布式数据库的管理和开发。
CREATE EXTENSION IF NOT EXISTS “citus”;
ERROR: Citus can only be loaded via shared_preload_libraries
HINT: Add citus to shared_preload_libraries configuration variable in postgresql.conf in master and workers. Note that citus should be at the beginning of shared_preload_libraries.
shared_preload_libraries = 'citus,pg_stat_statements,pgaudit,pg_cron'
必须要放在第一个!否则会导致数据无法启动
2023-05-25 12:21:21.419 CST [1132] LOG: pgaudit extension initialized
2023-05-25 12:21:21.424 CST [1132] FATAL: Citus has to be loaded first
2023-05-25 12:21:21.424 CST [1132] HINT: Place citus at the beginning of shared_preload_libraries.
2023-05-25 12:21:21.425 CST [1132] LOG: database system is shut down
pg_trgm
是PostgreSQL数据库中的一个扩展模块,用于实现基于n-gram的文本匹配和相似度计算。该扩展模块提供了一种有效的方法来处理文本数据的模糊匹配和相似性搜索。
以下是一些关于pg_trgm
扩展的说明:
三元组(trigram):pg_trgm
扩展使用三元组(trigram)作为基本单元来表示文本。三元组是由三个连续字符组成的字符串片段。例如,对于字符串"OpenAI",生成的三元组包括"Ope",“pen”,“enA"和"nAI”。
文本索引:通过创建基于pg_trgm
的文本索引,可以实现模糊匹配和相似度搜索。该索引存储了文本中所有可能的三元组,并为其建立了索引,以便可以快速进行模糊匹配和相似性计算。
模糊匹配:使用pg_trgm
扩展,可以进行模糊匹配,即查找与给定模式相似的文本。例如,可以使用pg_trgm
来查找与单词"apple"相似的其他单词,如"aple"或"appple"。
相似度计算:pg_trgm
还提供了计算两个文本之间相似度的函数。可以使用这些函数来评估文本之间的相似程度,例如计算两个字符串之间的相似度分数。
pg_trgm
扩展提供了一种灵活和高效的方式来处理模糊匹配和相似性搜索,尤其在处理大量文本数据时非常有用。可以通过在PostgreSQL中启用和使用pg_trgm
扩展来利用这些功能。
uuid-ossp
是PostgreSQL数据库中的一个扩展模块,用于生成和操作UUID(通用唯一标识符)。UUID是一种标准的128位标识符,用于在分布式系统中唯一地标识实体。
以下是一些关于uuid-ossp
扩展的说明:
UUID生成:uuid-ossp
扩展提供了函数来生成不同类型的UUID。其中包括使用随机算法生成的版本4 UUID、使用命名空间和名称生成的版本3和版本5 UUID,以及使用MAC地址和时间戳生成的版本1 UUID。
UUID数据类型:uuid-ossp
扩展还引入了UUID数据类型,允许在数据库中存储和处理UUID值。UUID数据类型在语法上与其他基本数据类型类似,并提供了一些函数和操作符用于UUID之间的比较、操作和转换。
UUID索引:通过在UUID列上创建索引,可以高效地检索和查询UUID值。uuid-ossp
扩展支持在UUID列上创建B-tree索引,以加速UUID值的查找。
UUID操作函数:uuid-ossp
扩展还提供了一些函数,用于在UUID值之间执行各种操作。例如,可以比较两个UUID值的大小,提取UUID的组成部分,将UUID转换为字符串表示等。
使用uuid-ossp
扩展可以方便地生成、存储和操作UUID值,特别适用于需要在分布式系统中唯一标识实体的场景,如数据库主键、标识符或跟踪日志等。
要使用uuid-ossp
扩展,需要在PostgreSQL中启用该扩展。可以使用CREATE EXTENSION
语句来启用uuid-ossp
扩展,并通过在查询中调用相关函数来使用其提供的功能。
Oracle Foreign Data Wrapper (oracle_fdw) 是一个PostgreSQL扩展,它允许在PostgreSQL数据库中访问和查询Oracle数据库中的数据。它通过创建外部表来实现与Oracle数据库的连接和数据交互。
下面是oracle_fdw的一些说明和特点:
安装:在使用oracle_fdw之前,您需要将其安装为PostgreSQL的扩展。安装方法包括从源代码编译、使用包管理器安装或使用预编译的二进制文件安装。
配置:安装完成后,需要进行一些配置步骤。这些配置包括创建外部服务器、创建用户和用户映射,并定义外部表的结构。
外部服务器:通过创建外部服务器,您可以定义与Oracle数据库的连接信息,包括主机地址、端口号和数据库名称。这样,PostgreSQL就能够通过外部服务器与Oracle数据库建立连接。
用户和用户映射:在创建外部服务器后,您需要创建一个PostgreSQL用户,并将其与外部服务器上的Oracle用户进行映射。这样可以确保在查询执行时,正确的用户凭据被传递给Oracle数据库。
外部表:一旦外部服务器和用户映射配置完成,您可以创建外部表来映射Oracle数据库中的表。外部表的结构与Oracle表的结构相匹配,并且您可以在PostgreSQL中对这些外部表执行查询和操作。
查询和操作:使用oracle_fdw,您可以在PostgreSQL中对Oracle数据库中的数据执行查询、插入、更新和删除操作。这样,您可以方便地在PostgreSQL中访问和处理Oracle数据库的数据,实现数据集成和应用程序的开发。
需要注意的是,使用oracle_fdw连接到Oracle数据库需要确保网络连接可用、具有正确的数据库连接信息和凭据,并且PostgreSQL数据库具有足够的权限来执行这些操作。
总之,oracle_fdw是一个有用的工具,它扩展了PostgreSQL的功能,使其能够与Oracle数据库进行集成,并实现数据的共享和查询。
实操
根据您提供的信息,这些步骤是在PostgreSQL中安装和配置Oracle Foreign Data Wrapper (oracle_fdw) 插件以实现与Oracle数据库的连接。以下是对每个步骤的解释:
create extension oracle_fdw;
这条命令用于在PostgreSQL中创建并启用oracle_fdw扩展。这样做后,您就可以在PostgreSQL中使用oracle_fdw功能。
create server to_ora_bpx foreign data wrapper oracle_fdw options (dbserver '//x.x.x.x:1521/orcl');
这条命令创建了一个名为to_ora_bpx的外部服务器,它使用oracle_fdw作为数据包装器,并指定了连接到Oracle数据库的连接信息。这里的dbserver参数指定了Oracle数据库的连接地址。
create user oracle_fdw superuser password 'oracle';
这条命令创建了一个名为oracle_fdw的用户,并分配了超级用户权限。该用户用于在PostgreSQL中执行与Oracle数据库相关的操作。
create user mapping for oracle_fdw server to_ora_bpx options (user 'bpx', password 'bpx');
这条命令创建了一个用户映射,将PostgreSQL中的oracle_fdw用户与外部服务器to_ora_bpx上的Oracle用户BPX进行映射。这样可以确保在执行查询时,正确的用户凭据被传递给Oracle数据库。
create foreign table oracle_test (id int, name varchar) server to_ora_bpx options (schema 'BPX', table 'BPX');
这条命令创建了一个外部表oracle_test,它映射了Oracle数据库中的BPX模式下的BPX表。外部表允许在PostgreSQL中访问Oracle数据库中的数据。
请注意,在执行这些步骤之前,您需要确保已经安装了oracle_fdw插件,并且PostgreSQL数据库具有足够的权限来执行这些操作。此外,还需要提供正确的连接信息和凭据,以便成功连接到Oracle数据库。
如果您遇到任何问题或需要进一步的帮助,请提供详细的错误消息或问题描述。
psql -h x.x.x.x -p 1014 -U oracle_fdw -d test
select * from oracle_test ;
timescaledb
TimescaleDB vs. PostgreSQL
1. 修改实例配置文件的shared_preload_libraries参数,增加 timescaledb 值,如 shared_preload_libraries = 'pgaudit' => shared_preload_libraries = 'pgaudit,timescaledb'
2. 重启数据库使配置生效
3. 连接数据库执行查询启用插件:CREATE EXTENSION timescaledb;
下载链接
https://github.com/zubkov-andrei/pg_profile/issues
select * from take_sample();
select show_samples();
psql -d bpx -qtc "select public.get_report(1,2)" --output /tmp/awr_report_postgres_1_2.html
1、准备依赖
mv /etc/yum.repos.d/pgdg-redhat-all.repo /root
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
dnf install -y --enablerepo=powertools postgresql14-devel unzip redhat-rpm-config openssl-devel
dnf reinstall gcc
2、下载插件安装包
https://github.com/orafce/orafce
3、安装 orafce
unzip orafce-master.zip
cd orafce-master
make install
文章浏览阅读3.8k次。1、将下载好的萤石js插件,添加到SoringBoot项目中。位置可参考下图所示。(容易出错的地方,在将js插件在html页面引入时,发生路径错误的问题)所以如果对页面中引入js的路径不清楚,可参考下图所示存放路径。2、将ezuikit.js引入到demo-live.html中。(可直接将如下代码复制到你创建的html页面中)<!DOCTYPE html><html lan..._ezuikit 测试的url
文章浏览阅读322次。第二步,在弹出的对话框选择,设备驱动—>PLC—>莫迪康—>ModbusRTU—>COM,根据配置软件选择的协议选期期,这里以此为例,然后点击“下一步”。第四步,把使用虚拟串口打勾(GPRS设备),根据需要选择要生成虚拟口,这里以选择KVCOM1为例,然后点击“下一步”设备ID即Modbus地址(1-255) 使用DTU时,为下485接口上的设备地址。第六步,Modbus的从机地址,与配置软件相同,这里以1为例,点击“下一步“第五步,Modbus的从机地址,与配置软件相同,这里以1为例,点击“下一步“_组态王ua
文章浏览阅读9.4k次,点赞22次,收藏19次。安装npm相当于安装node.js,Node.js已自带npm,安装Node.js时会一起安装,npm的作用就是对Node.js依赖的包进行管理,也可以理解为用来安装/卸载Node.js需要装的东西_npm安装配置
文章浏览阅读748次,点赞21次,收藏26次。大家好,小编来为大家解答以下问题,python基础训练100题,python入门100例题,现在让我们一起来看看吧!宝子们还在新手村练级的时候,不单要吸入基础知识,夯实自己的理论基础,还要去实际操作练练手啊!由于文章篇幅限制,不可能将100道题全部呈现在此除了这些,下面还有我整理好的基础入门学习资料,视频和讲解文案都很齐全,用来入门绝对靠谱,需要的自提。保证100%免费这不,贴心的我爆肝给大家整理了这份今天给大家分享100道Python练习题。大家一定要给我三连啊~
文章浏览阅读1k次。 为了在 Linux ( Ubuntu) 上安装sublime,一般大家都会选择常见的教程或是 sublime 官网教程,然而在国内这种方法可能失效。为此,需要用安装包安装。以下就是使用官网安装包安装的教程。打开 sublime 官网后,点击右上角 download, 或是直接访问点击打开链接,即可看到各个平台上的安装包。选择 Linux 64 位版并下载。下载后,打开终端,进入安装..._ubuntu 安装sumlime text打不开
文章浏览阅读563次,点赞13次,收藏6次。CrossOver24是一款类虚拟机软件,专为macOS和Linux用户设计。它的核心技术是Wine,这是一种在Linux和macOS等非Windows操作系统上运行Windows应用程序的开源软件。通过CrossOver24,用户可以在不购买Windows授权或使用传统虚拟机的情况下,直接在Mac或Linux系统上运行Windows软件和游戏。该软件还提供了丰富的功能,如自动配置、无缝集成和实时传输等,以实现高效的跨平台操作体验。
文章浏览阅读1.7k次。一个用聊天的方式让ChatGPT帮我写的线程安全的环形List_为什么gpt一写list就卡
文章浏览阅读336次。我们在前面的文章里曾写过Web应用中乱码产生的原因和处理方式,旧文回顾:深度揭秘乱码问题背后的原因及解决方式其中我们提到可以通过Filter的方式来设置请求和响应的encoding,来解..._filterconfig selectencoding
文章浏览阅读651次。转自:http://www.jb51.net/article/36480.htmencodeURI和decodeURI是成对来使用的,因为浏览器的地址栏有中文字符的话,可以会出现不可预期的错误,所以可以encodeURI把非英文字符转化为英文编码,decodeURI可以用来把字符还原回来_js encodeur decodeurl
文章浏览阅读1.9w次,点赞6次,收藏3次。前言在日常的Android开发当中,我们肯定要打包apk。但是今天我打包的时候遇到一个很奇怪的问题Android The destination folder does not exist or is not writeable,大意是目标文件夹不存在或不可写。出现问题的原因以及解决办法上面有说报错的中文大意是:目标文件夹不存在或不可写。其实问题就在我们的打包界面当中图中标红的Desti..._the destination folder does not exist or is not writeable
文章浏览阅读94次。一、配置代码编辑区的样式 <1>打开Eclipse,Help —> Install NewSoftware,界面如下: <2>点击add...,按下图所示操作: name:随意填写,Location:http://eclipse-color-th..._ecplise高大上设置
文章浏览阅读2.8k次。一,下载mysql:http://dev.mysql.com/downloads/mysql/; 打开页面之后,在Select Platform:下选择linux Generic,如果没有出现Linux的选项,请换一个浏览器试试。我用的谷歌版本不可以,换一个别的浏览器就行了,如果还是不行,需要换一个翻墙的浏览器。 二,下载完后解压缩并放到安装文件夹下: 1、MySQL-client-5.6.2_linux mysql 安装 mysql-5.6.24-1.linux_glibc2.5.x86_64.rpm-bundle