我正在尝试使用PLV8来编写PostgreSQL的触发器和存储过程。到目前为止,与PLPGSQL相比,我并没有真正看到缺点。特别是在使用JSON时,它似乎比PLPGSQL更智能。如果使用PLV8是否存在已知的缺点或限制?PLV8能否完全替代PLPGSQL?如果有人能分享他的经验,那将非常棒。
我正在尝试使用PLV8来编写PostgreSQL的触发器和存储过程。到目前为止,与PLPGSQL相比,我并没有真正看到缺点。特别是在使用JSON时,它似乎比PLPGSQL更智能。如果使用PLV8是否存在已知的缺点或限制?PLV8能否完全替代PLPGSQL?如果有人能分享他的经验,那将非常棒。
PLV8的优缺点与PLPerl、PLPython和其他PL语言相同。
PLpgSQL是通过SQL语言进行数据操作的完美语言。其他PL更适用于其他任何内容-IO、网络、特殊格式、缓慢的数字计算等。
更新:自PLV8 2.3.3(2018-04-27)以来,支持kill信号并且运行良好。缺点是必须自己构建。我们过去三年没有遇到问题,因此没有将代码迁移到Python。
有点晚了,但是您不能终止正在运行的plv8脚本,唯一的方法是重新启动整个postgresql服务器。这是一个巨大的劣势,我们的团队正在考虑迁移到PLpgPython。
列举一些PLpgSQL的缺点,主要是在开发速度方面:
plpgsql
在本质上使用 SQL 数据类型,这是其他 PL 所没有的易用性优势。如果您计划使用复杂的数据类型,例如hstore
或ltree
,则必须在 plv8 中处理它们的文本表示。但是它支持数组、组合类型、setof 等,已经相当不错了。 - Daniel Vérité