Azure Database for PostgreSQL - 灵活的服务器支持超过 50 个 PostgreSQL 扩展。 我们还不断添加新的扩展来扩展 PostgreSQL 引擎提供的功能。 这就是为什么我们宣布在 Flex 服务器中支持两个更流行的 Postgres 扩展 - pgroutng 和 plv8。

虽然许多开发人员都知道 PostGIS 作为 Postgres 的地理路由扩展,但很少有人知道 pgrouting,可以将其视为 PostGIS 的扩展。 pgRouting 所做的是扩展 PostGIS 的功能,为您提供基于流行网络算法的多种功能,以解决最短路径和旅行商问题等问题。 要使用 pgRouting,还需要安装 postGIS。
通过服务器参数设置的扩展允许列表,您可以指定可以在 PostgreSQL 数据库实例上安装哪些特定扩展。
要在灵活服务器中使用 pgRouting,您首先需要将其列入白名单:
使用 Azure 门户:
- 选择 Azure Database for PostgreSQL - 灵活服务器。
- 在边栏上,选择服务器参数。
- 搜索 azure.extensions 参数。
- 选择 pgrouting 扩展以允许列表。

完成后,我们将此扩展添加到 shared_preload_libraries 我们可以安装扩展:
CREATE EXTENSION postgis;
CREATE EXTENSION pgrouting;
现在,您可以使用最短路径 Dijkstra 方法等 pgrouting 函数来查找最短路线,或使用 pgr_TSP 来使用旅行商问题 (TSP) 算法。 Pgrouting 文档可在此处获得。
PLV8 是一个共享库,提供由 V8 Javascript 引擎驱动的 PostgreSQL 过程语言。 使用此程序,您可以用 Javascript 编写可从 SQL 调用的函数。 与 pgrouting 一样,您需要在安装前加入允许列表并将此扩展添加到 shared_preload_libraries。
CREATE EXTENSION plv8;
企业、中小型企业以及 ISV 现在可以在 Postgres Flexible 服务上加速其 LOB 应用程序的开发和部署。 这有助于缩短上市时间。
Plv8 是一个值得信赖的扩展。 这是 PostgreSQL 13 中完全引入的概念。为什么有些扩展被标记为受信任而有些不是? 受信任的概念允许超级用户指定用户可以在其数据库中安装的扩展,只要他们具有 CREATE 权限。
使用 PL/v8 创建一个函数看起来像任何其他 PostgreSQL 函数,除了语言说明符更改。 以下面的(基本)示例为例:采用两个数组,我们将组合值作为 JSON 字符串返回:
CREATE OR REPLACE FUNCTION plv8_test(keys text[], vals text[])
RETURNS text AS $$
var o = {};
for(var i=0; i<keys.length; i++){
o[keys[i]] = vals[i];
}
return JSON.stringify(o);
$$ LANGUAGE plv8 IMMUTABLE STRICT;
SELECT plv8_test(ARRAY['name', 'age'], ARRAY['Tom', '29']);
plv8_test
---------------------------
{"name":"Tom","age":"29"}
有关 PLV8 可以做什么的更多信息,请参见此处的文档。
我们鼓励您尝试并利用 Azure Database for PostgreSQL - 灵活服务器中的 pgrouting 和 plv8 扩展来解锁 PostgreSQL 的新方案和 NoSQL 功能。 在概述和支持的扩展中详细了解 Azure Database for PostgreSQL - 灵活服务器。
可以在以下文档中找到有关上述主题的其他信息:
- PostgreSQL 扩展
- 灌浆工程
我们一直期待着能够得到您的反馈,因此请通过电子邮件联系 Ask Azure DB for PostgreSQL。
原文标题:Introducing support for Pgrouting and PLV8 extensions in PostgreSQL Flexible Server
原文作者:Gennady Kostinsky
原文地址:https://techcommunity.microsoft.com/t5/azure-database-for-postgresql/introducing-support-for-pgrouting-and-plv8-extensions-in/ba-p/3552072




