2015-06-17 18 views
5

Sto giocando con PLV8 per scrivere trigger e stored procedure per PostgreSQL. Finora non vedo svantaggi rispetto a PLPGSQL. Soprattutto se si lavora con JSON sembra ancora più intelligente di PLPGSQL. Sono noti svantaggi o limitazioni se si utilizza PLV8? PLV8 può essere un sostituto completo di PLPGSQL? Sarebbe bello se qualcuno potesse condividere la sua esperienza su questo.svantaggi o limitazioni di plv8?

+0

L'unico (molto piccolo) svantaggio che posso vedere: è necessario installarlo esplicitamente per ogni singolo database creato. PL/pgSQL è sempre disponibile per impostazione predefinita. Ma solo ** puoi ** decidere se si tratta di una sostituzione completa o meno: perché ciò dipende completamente dai requisiti che hai per una lingua. –

+0

grazie. Te lo chiedo perché voglio sapere se ci sono forse problemi a cui attualmente non sto pensando. Se decido oggi di usare PLV8 per un nuovo progetto e dopo 3 mesi devo imparare che ci sono dei limiti sarebbe male. – Rainer

+1

'plpgsql' utilizza nativamente i tipi di dati SQL, un vantaggio nella facilità d'uso che nessun altro PL ha. Se si prevede di utilizzare tipi di dati complessi come 'hstore' o' ltree', sarà necessario gestire la loro rappresentazione di testo in plv8. Ma supporta matrici, tipi compositi, setof, ... che è già abbastanza buono. –

risposta

7

I vantaggi e gli svantaggi di PLV8 sono gli stessi vantaggi e svantaggi di PLPerl, PLPython e altri linguaggi PL.

  • Non è integrato con il motore PostgreSQL: il risultato delle istruzioni SQL di elaborazione può essere più lento. PLpgSQL è completamente integrato nel motore di PostgreSQL.
  • SQL non è integrato nel linguaggio: non è possibile eseguire analisi statiche di SQL incorporato. È possibile con PLpgSQL - vedi plpgsql_check.
  • Può eseguire calcoli matematici più costosi, le manipolazioni con stringhe e matrici di solito sono più veloci rispetto a PLpgSQL.
  • Possibile utilizzare librerie sviluppate per le lingue - Perl - CPAN, ...
  • JavaScript, Perl, Python sono lingue generiche, quindi qualsiasi attività generica viene implementata bene.
  • PLpgSQL è un linguaggio maturo progettato per la manipolazione con i dati nell'ambiente del database di relazione. Quasi tutto ciò di cui gli sviluppatori hanno bisogno per lavorare con i dati è lì. L'iterazione sul risultato, prendendo i dati dal database richiede un codice meno leggibile.

PLpgSQL è un linguaggio perfetto per la manipolazione dei dati tramite linguaggio SQL. Altro PL è meglio per qualsiasi altra cosa - IO, Rete, formattazione speciale, calcoli numerici lenti, ...

+0

Il tipo di analisi menzionato è un punto che non ero a conoscenza, grazie Pavel. A proposito di prestazioni. Ho redatto alcuni articoli nel frattempo e ho avuto l'impressione che in casi "normali" (ad esempio tipici portali di e-commerce) ci siano solo differenze di prestazioni molto piccole. Ma di sicuro, ci sono casi speciali. Quindi, grazie ancora! – Rainer

+0

Le prestazioni, dipende dalla dimensione del database, dalla complessità della query, dalla dimensione del set di risultati restituito, ... –

0

Un po 'tardi, ma è impossibile kill query attualmente in esecuzione script plv8, l'unico modo è quello di riavviare il intero server postgresql. È un enorme svantaggio e il nostro team sta pensando di migrare a PLpgPython.