首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >何时(或为什么)使用PLPython(3)u

何时(或为什么)使用PLPython(3)u
EN

Database Administration用户
提问于 2020-07-21 08:36:51
回答 2查看 2.5K关注 0票数 4

随着我获得更多使用PostgreSQL的经验,我开始怀疑PLPython的存在。它被认为是“不受信任的”语言https://www.postgresql.org/docs/10/plpython.html

我想知道的是,什么时候或者为什么有人需要使用这个?PLPGSQL已经是一种非常强大的语言,允许您做很多事情。这里有人需要使用它吗?如果有,那是为了什么?

EN

回答 2

Database Administration用户

回答已采纳

发布于 2020-07-23 11:48:03

我发现pl/pgsql对于一般的编程来说是乏味的,在里面编程很慢,执行也很慢。而且缺少了很多功能--其中一些是因为它必须是一种可信任的语言(没有IPC或网络),而另一些仅仅是因为它还没有被构建,而且它缺乏一个库/模块/包的机制。

我使用过plpython3u从数据库中访问化学情报库。从头开始重新实现这些库的功能在理论上是可行的,但完全不切实际。在pl/pgsql中这样做是完全不切实际的平方。

我对plperlu和plperl做了同样的事情,以访问各种CPAN Perl模块。如果这些模块碰巧在python而不是Perl中,我将使用plpythonu而不是plperl(u)。

我还使用了plperl (不是plpythonu,而是因为我更喜欢Perl而不是python)来实现函数,这些函数是我希望通过SQL在数据库中可用的,也是在我们的过程代码中实现的。我本可以在pl/pgsql中实现它们,但是这样做会很麻烦,还意味着它们需要两种语言的实现。或者,我可以在数据库中实现它们,当我想从那里调用函数时,可以通过独立的Perl连接到数据库。但这有时意味着建立一个数据库连接,否则在该程序中将是不必要的,并且将滥用我们有限的资源之一,因为数据库比独立的Perl脚本要难得多。它还会引入延迟。

票数 9
EN

Database Administration用户

发布于 2020-07-23 09:01:24

它是不可信的,因为实际上您可以在plpython系统用户下使用来自postgres函数的OS系统调用--读/写文件(包括pgdata目录)和系统进程。所以你应该非常小心。但是,让我向您展示几个plpython可能有用的案例。

  1. 当你需要与外界交流时(这在总体上不是一个好主意,但它仍然是可能的)。您可以轻松地编写一个存储过程,它将使用一些外部HTTP发送SMS,或者在磁盘上生成和上传文件。
  2. 当您需要处理大量非SQL数据时,例如JSON。在Python中处理JSON要容易得多,因为JSON类型很容易映射到Python内部类型。
  3. 当你需要做数学计算的时候。当您需要实现一些困难的算法时,使用plpgsql进行大量的计算是个坏主意。这在plpython中肯定比在plpgsql中要快,因为plpgsql实际上调用一个单独的SELECT语句来计算每个表达式,而plpython不调用。
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/271326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档