Postgresql
何時(或為什麼)使用 PLPython(3)u
隨著我在 PostgreSQL 方面獲得更多經驗,我開始質疑 PLPython 的存在。它被認為是一種“不受信任”的語言https://www.postgresql.org/docs/10/plpython.html
我想知道的是,何時或為什麼有人需要使用它?PLPGSQL 已經是一種相當強大的語言,它可以讓你做很多事情。這裡有沒有人需要使用它,如果有,為了什麼?
我發現 pl/pgsql 對於一般程式來說很乏味,而且程式速度慢,執行速度慢。並且缺少很多功能——其中一些缺少是因為它必須是為了成為一種受信任的語言(沒有 IPC 或網路),而另一些只是因為它還沒有被建構並且它缺少庫機制/模組/包。
我使用 plpython3u 從數據庫內部訪問化學情報庫。從頭開始重新實現這些庫的功能在理論上是可行的,但完全不切實際。在 pl/pgsql 中這樣做是完全不切實際的。
我對 plperlu 和 plperl 做了同樣的事情,以訪問各種 CPAN Perl 模組。如果這些模組碰巧在 python 而不是 Perl 中,我會使用 plpythonu 而不是 plperl(u)。
我還使用 plperl(不是 plpythonu,只是因為我更喜歡 Perl 而不是 python)來實現我希望通過 SQL 在數據庫內部和在我們的程式碼外部都可用的函式。我本可以在 pl/pgsql 中實現它們,但這樣做會很煩人,而且還意味著它們需要兩種語言的兩種實現。或者,我可以在數據庫中實現它們,並在我想從那裡呼叫函式時從獨立的 Perl 連接到數據庫。但這有時意味著建立一個在該程序中不需要的數據庫連接,並且會濫用我們更有限的資源之一,因為數據庫比獨立的 Perl 腳本更難擴展。它還會引入延遲。