2015-06-17 11 views
5

Ich spiele mit PLV8 herum, um Trigger- und gespeicherte Prozeduren für PostgreSQL zu schreiben. Bis jetzt sehe ich keine Nachteile gegenüber PLPGSQL. Besonders wenn man mit JSON arbeitet, scheint es noch klüger zu sein als PLPGSQL. Gibt es bekannte Nachteile oder Einschränkungen bei der Verwendung von PLV8? Kann PLV8 ein vollständiger Ersatz für PLPGSQL sein? Es wäre toll, wenn jemand seine Erfahrung dazu teilen könnte.plv8 Nachteile oder Einschränkungen?

+0

Der einzige (sehr kleine) Nachteil, den ich sehen kann: Sie müssen es explizit für jede von Ihnen erstellte Datenbank installieren. PL/pgSQL ist standardmäßig immer verfügbar. Aber nur ** Sie ** können entscheiden, ob es sich um einen vollständigen Ersatz handelt oder nicht: Denn das hängt ganz von den Anforderungen ab, die Sie an eine Sprache haben. –

+0

danke. Ich frage, weil ich wissen möchte, ob es vielleicht Probleme gibt, über die ich momentan nicht nachdenke. Wenn ich heute beschließe, PLV8 für ein neues Projekt zu verwenden, und nach 3 Monaten muss ich lernen, dass Einschränkungen schlecht wären. – Rainer

+1

'plpgsql' verwendet SQL-Datentypen nativ, ein Vorteil in der Benutzerfreundlichkeit, den kein anderer PL hat. Wenn Sie komplexe Datentypen wie 'hstore' oder' ltree' verwenden möchten, müssen Sie sich mit ihrer Textdarstellung in plv8 befassen. Aber es unterstützt Arrays, Composite-Typen, setof, ... was schon ziemlich gut ist. –

Antwort

7

Die Vor- und Nachteile von PLV8 sind dieselben wie die Vor- und Nachteile von PLPerl, PLPython und anderen PL-Sprachen.

  • Es ist nicht mit PostgreSQL-Engine integriert - die Verarbeitung von SQL-Anweisungen kann langsamer sein. PLpgSQL ist vollständig in die PostgreSQL-Engine integriert.
  • SQL ist nicht in Sprache integriert - statische Analyse von Embedded SQL ist nicht möglich. Dies ist mit PLpgSQL möglich - siehe plpgsql_check.
  • Kann besser teure mathematische Berechnungen, eine Manipulation mit Strings und Arrays sind in der Regel schneller als in PLpgSQL.
  • Kann für Sprachen entwickelte Bibliotheken verwenden - Perl - CPAN, ...
  • JavaScript, Perl, Python sind generische Sprachen - so sind alle generischen Aufgaben dort gut implementiert.
  • PLpgSQL ist eine ausgereifte Sprache für die Manipulation mit Daten in der relationalen Datenbankumgebung. Fast alles, was Entwickler für Daten benötigen, arbeitet mit Daten. Die Iteration über das Ergebnis, die Daten aus der Datenbank benötigt, benötigt weniger lesbaren Code.

PLpgSQL ist die perfekte Sprache für Datenmanipulation über SQL-Sprache. Andere PL ist besser für etwas anderes - IO, Netzwerk, spezielle Formatierung, langsame numerische Berechnungen, ...

+0

Die erwähnte Art von Analyse ist ein Punkt, den ich nicht kannte, danke Pavel. Zur Leistung .. Ich habe in der Zwischenzeit einige Artikel redigiert und habe den Eindruck, dass es in "normalen" Fällen (z. B. typischen E-Commerce-Portalen) nur sehr geringe Leistungsunterschiede gibt. Aber natürlich gibt es spezielle Fälle. Also, nochmals vielen Dank! – Rainer

+0

Die Leistung - es hängt davon ab - Datenbankgröße, Abfragekomplexität, Größe des zurückgegebenen Resultsets, ... –

0

Ein wenig spät, aber man kann nicht Kill Abfrage aktuell laufenden plv8 Skript, der einzige Weg ist, die neu zu starten ganzer Postgresql-Server. Es ist ein großer Nachteil und unser Team denkt über eine Migration nach PLpgPython nach.