在Stack Overflow 2022开发者调查中,PostgreSQL被评为最受欢迎的数据库。这并不是令人惊讶的,因为PostgreSQL是一款功能强大的数据库,支持许多开发者所需的用例。在本文中,我们将讨论PostgreSQL的发展趋势、FDW示例和总结。
发展趋势
PostgreSQL在过去几年中受到了越来越多的关注和采用。它是一款开源数据库,具有极强的可扩展性和可靠性。PostgreSQL不仅支持标准SQL语言,还具有许多扩展功能,如存储过程、触发器和用户定义的函数。以下是一些PostgreSQL的发展趋势:
?支持HTAP架构:PostgreSQL支持混合事务/分析处理(HTAP)架构,因此它可以同时处理OLTP和OLAP。这使得PostgreSQL在不同的应用场景中都表现出色。?对JSON和XML的支持:PostgreSQL支持JSON和XML格式的数据存储和查询,这使得它成为Web应用程序的理想选择。?外部数据包装器:PostgreSQL支持外部数据包装器(FDW),这允许从一个数据库访问另一个数据库中的表或架构。这是在大型企业环境中进行数据整合的理想方法。?时序数据:PostgreSQL是一个优秀的时序数据库,可以处理大量的时间序列数据。它具有一个称为Timescale的扩展,可以支持时间序列数据的高级分析和可视化。?空间数据:PostgreSQL支持空间数据类型和空间索引,使其成为GIS应用程序的首选数据库。
外部数据包装器
外部数据包装器(Foreign Data Wrappers)是 PostgreSQL 所支持的一项非常强大的特性。它允许用户从 PostgreSQL 实例中轻松地访问外部数据源,如其他数据库、Web 服务、文件等。本文将介绍如何使用外部数据包装器来访问其他数据库,以及如何使用 PostgreSQL 内置的包装器访问外部文件。
访问其他数据库
为了使用外部数据包装器来访问其他数据库,我们需要先安装一个支持的包装器。对于 PostgreSQL,有多个可用的包装器,其中一些是由第三方开发者编写的。在本例中,我们将使用 ODBC Foreign Data Wrapper,它允许我们从 PostgreSQL 中使用 ODBC 来连接到 Microsoft SQL Server 数据库。
安装 TDS FDW
我们可以使用以下命令来安装 TDS FDW:
sudo apt install unixodbc-dev freetds-dev
git clone https://github.com/tds-fdw/tds_fdw.git
cd tds_fdw
make && sudo make install
这将会在系统中安装 ODBC 和 FreeTDS 的依赖项,并且编译并安装 TDS FDW。
创建外部数据包装器
接下来,我们需要在 PostgreSQL 中创建一个外部数据包装器来访问 Microsoft SQL Server 数据库。我们可以使用以下 SQL 语句来创建这个包装器:
CREATE EXTENSION odbc_fdw;
CREATE SERVER mssql_server
FOREIGN DATA WRAPPER odbc_fdw
OPTIONS (dsn \\\'mssql_db\\\', uid \\\'username\\\', pwd \\\'password\\\');
CREATE USER MAPPING FOR postgres
SERVER mssql_server
OPTIONS (database \\\'mssql_db\\\', username \\\'username\\\', password \\\'password\\\');
这个 SQL 语句将创建一个名为 mssql_server
的外部数据包装器,使用 ODBC 来连接到 Microsoft SQL Server 数据库。我们还需要创建一个用户映射来指定 PostgreSQL 中的用户和 Microsoft SQL Server 中的用户之间的映射关系。
访问外部数据源
现在我们可以使用 PostgreSQL 中的外部数据包装器来查询 Microsoft SQL Server 中的数据了。以下是一个查询示例:
SELECT * FROM foreign_table LIMIT 10;
这个查询语句将从 Microsoft SQL Server 中的 foreign_table
表中获取前 10 行数据,并将其返回到 PostgreSQL 中。
访问外部文件
除了访问其他数据库,我们还可以使用 PostgreSQL 中的外部数据包装器来访问外部文件。PostgreSQL 内置了一个名为 file_fdw 的包装器,它允许我们访问本地文件系统中的文件。
创建外部数据包装器
为了使用 file_fdw
,我们需要先创建一个外部数据包装器。我们可以使用以下 SQL 语句来创建它
以下是使用SQL语句在PostgreSQL中创建外部数据包装器的示例:
CREATE SERVER myserver FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host \\\'remote_host\\\', dbname \\\'remote_db\\\');
CREATE USER MAPPING FOR myuser SERVER myserver OPTIONS (user \\\'remote_user\\\', password \\\'remote_password\\\');
CREATE FOREIGN TABLE mytable (id integer, name text) SERVER myserver OPTIONS (schema_name \\\'public\\\', table_name \\\'remote_table\\\');
在这个示例中,我们首先使用CREATE SERVER
语句创建了一个名为myserver
的外部数据包装器,并指定了它连接到的远程主机的主机名和数据库名。
接下来,我们使用CREATE USER MAPPING
语句将本地用户myuser
与远程服务器myserver
上的用户进行映射。我们指定远程用户的用户名和密码,以便myuser
可以连接到myserver
。
最后,我们使用CREATE FOREIGN TABLE
语句创建一个本地表mytable
,这个表是通过外部数据包装器myserver
与远程表进行连接的。我们指定了远程表的模式和表名,以及本地表的列和类型。这样,我们就可以通过mytable
在本地访问远程表中的数据。
总结
PostgreSQL是一款功能强大的数据库,支持多种开发者用例。它的发展趋势表明它将在未来继续保持强大的市场地位。使用PostgreSQL的好处包括其可靠性、可扩展性和开源性。它还支持多种隔离级别和特性,例如MVCC和锁定,可重复读和可串行化隔离级别,FDW,流式处理,地理空间数据处理和时间序列数据处理等。这些功能和扩展使得PostgreSQL成为处理多种用例的理想数据库。
在开发方面,使用PostgreSQL进行CRUD操作非常方便,也可以支持高性能的数据分析和报告应用程序,这是PostgreSQL的OLTP和OLAP的结合所具有的特性。同时,PostgreSQL也支持分布式数据表,开发者可以使用CitusData扩展Postgres来分发数据和查询,从而使其更适合大规模应用程序的处理。
总的来说,PostgreSQL在StackOverflow的开发者调查中被评为最受欢迎的数据库,这一结果并不令人惊讶。它的多种功能和扩展使得它成为一个非常强大的数据库,能够满足开发者处理多种用例的需求,尤其是在需要处理地理空间和时间序列数据方面。随着PostgreSQL的发展,我们可以期待更多的功能和扩展被引入,从而使其在未来的市场地位得到进一步巩固。
原创文章,作者:小技术君,如若转载,请注明出处:https://www.sudun.com/ask/33930.html