AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 271326
Accepted
Chessbrain
Chessbrain
Asked: 2020-07-22 00:36:51 +0800 CST2020-07-22 00:36:51 +0800 CST 2020-07-22 00:36:51 +0800 CST

Quando (ou por que mesmo) usar PLPython(3)u

  • 772

À medida que ganho mais experiência com o PostgreSQL começo a questionar a existência do PLPython. É considerada uma linguagem "não confiável" https://www.postgresql.org/docs/10/plpython.html

O que eu estou querendo saber é, quando ou por que alguém precisaria usar isso? PLPGSQL já é uma linguagem bastante forte que permite fazer muitas coisas. Alguém aqui teve a necessidade de usá-lo, e se sim, para quê?

postgresql plpgsql
  • 2 2 respostas
  • 1801 Views

2 respostas

  • Voted
  1. Best Answer
    jjanes
    2020-07-24T03:48:03+08:002020-07-24T03:48:03+08:00

    Acho pl/pgsql tedioso para programação geral e lento para programar e lento para executar. E faltam muitas funcionalidades - algumas das quais faltam porque tem que ser para ser uma linguagem confiável (sem IPC ou rede), e outras apenas porque não foram construídas e carecem de um mecanismo para bibliotecas/ módulos/pacotes.

    Eu usei plpython3u para obter acesso a bibliotecas de inteligência química de dentro do banco de dados. reimplementar a funcionalidade dessas bibliotecas do zero seria teoricamente factível, mas totalmente impraticável. Fazer isso em pl/pgsql seria totalmente impraticável ao quadrado.

    Eu fiz a mesma coisa com plperlu e plperl, para ter acesso a uma variedade de módulos CPAN Perl. Se esses módulos estivessem em python em vez de Perl, eu teria usado plpythonu em vez de plperl(u).

    Eu também usei o plperl (não o plpythonu, mas apenas porque prefiro Perl ao invés de python) para implementar funções que eu queria que estivessem disponíveis tanto dentro do banco de dados através do SQL quanto fora do nosso código procedural. Eu poderia tê-los implementado em pl/pgsql, mas isso seria chato de fazer, e também significa que eles precisariam de duas implementações em duas linguagens. Alternativamente, eu poderia simplesmente implementá-los no banco de dados e conectar-me ao banco de dados do Perl autônomo quando quiser chamar as funções de lá. Mas isso às vezes significaria estabelecer uma conexão de banco de dados que de outra forma seria desnecessária nesse programa e seria um abuso de um de nossos recursos mais limitados, pois os bancos de dados são muito mais difíceis de dimensionar do que os scripts Perl independentes. Também introduziria latência.

    • 6
  2. pensnarik
    2020-07-24T01:01:24+08:002020-07-24T01:01:24+08:00

    Não é confiável porque, na verdade, você pode usar chamadas de sistema do sistema operacional a partir de plpythonfunções - arquivos de leitura/gravação (incluindo pgdatacatálogo) e processos do sistema, sob postgreso usuário do sistema. Então você deve ter muito cuidado com isso. Mas deixe-me mostrar alguns casos em que plpythonpode ser útil.

    1. Quando você precisa se comunicar com o mundo exterior (o que não é uma boa ideia em geral, mas ainda é possível). Você pode facilmente escrever um procedimento armazenado que enviará SMS usando alguma API REST HTTP externa ou gerar e fazer upload de arquivos no disco.
    2. Quando você precisa processar muitos dados não SQL , como JSON. Processar JSON é muito mais fácil e rápido em Python porque os tipos JSON são mapeados facilmente para os tipos internos do Python.
    3. Quando você precisa realizar cálculos matemáticos . Quando você precisa implementar algum algoritmo difícil que envolve muitos cálculos plpgsql, é uma má ideia. Isso será definitivamente mais rápido do plpythonque no plpgsqlporque , na plpgsqlverdade, invoca uma SELECTinstrução separada para calcular cada expressão enquanto plpythonnão o faz.
    • 0

relate perguntas

  • Posso ativar o PITR depois que o banco de dados foi usado

  • Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo

  • Os procedimentos armazenados impedem a injeção de SQL?

  • Sequências Biológicas do UniProt no PostgreSQL

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve