8

PostgreSQL のトリガーとストアド プロシージャを作成するために PLV8 をいじっています。これまでのところ、PLPGSQL と比較して不利な点は特にありません。特に JSON を扱う場合は、PLPGSQL よりもさらにスマートに見えます。PLV8 を使用する場合、既知の欠点や制限はありますか? PLV8 は PLPGSQL を完全に置き換えることができますか? 誰かがこれに関する彼の経験を共有できれば素晴らしいでしょう.

4

2 に答える 2

16

PLV8 の長所と短所は、PLPerl、PLPython およびその他の PL 言語の長所と短所と同じです。

  • これは PostgreSQL エンジンと統合されていません。SQL ステートメントの結果の処理が遅くなる可能性があります。PLpgSQL は PostgreSQL エンジンに完全に統合されています。
  • SQL は言語に統合されていません - 埋め込み SQL の静的分析を行うことはできません。PLpgSQL で可能です - plpgsql_check を参照してください。
  • 高価な数学的計算をより適切に行うことができます。文字列と配列を使用した操作は通常、PLpgSQL よりも高速です。
  • 言語用に開発されたライブラリを使用できます - Perl - CPAN, ...
  • JavaScript、Perl、Python は汎用言語であるため、汎用タスクはすべて適切に実装されています。
  • PLpgSQL は、リレーション データベース環境でデータを操作するために設計された成熟した言語です。開発者がデータを操作するために必要なものはほとんどすべてそろっています。データベースからデータを取得する反復の結果は、より読みやすいコードを必要としません。

PLpgSQL は、SQL 言語によるデータ操作に最適な言語です。他の PL は、IO、ネットワーク、特別なフォーマット、遅い数値計算など、他のものに適しています。

于 2015-06-18T21:02:48.367 に答える
5

更新: PLV8 2.3.3 (2018-04-27) 以降、kill シグナルがサポートされ、かなりうまく機能します。欠点 - 自分でビルドする必要があります。過去 3 年間問題がなかったため、コードを Python に移行していません。

少し遅れましたが、現在 plv8 スクリプトを実行しているクエリを強制終了することはできません。唯一の方法は、postgresql サーバー全体を再起動することです。これは大きな欠点であり、私たちのチームは PLpgPython への移行を検討しています。

于 2017-06-26T21:35:11.157 に答える