Wann sollten Sie die Verwendung von gespeicherten java-Prozeduren, die mit einer Oracle-Datenbank ... was sind die Nachteile?
PL/SQL ist nicht meine Muttersprache. Oracle unterstützt das schreiben von gespeicherten Prozeduren in Java. Was sind die Vorteile, dies zu tun, über das schreiben der gespeicherten Prozeduren in PL/SQL
InformationsquelleAutor minty | 2008-09-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Oracle-Welt, die Allgemeine Reihenfolge der Entwicklung sollte sein:
Wo immer möglich, tun Sie es rein mit SQL.
Wenn Sie mehr als SQL mit PL/SQL.
Wenn Sie etwas brauchen, daß PL/SQL nicht kann, dann mit Java.
Wenn alles andere fehlschlägt, verwenden C.
Wenn Sie kann es nicht mit C, zurück langsam Weg von dem problem....
PL/SQL gespeicherte Prozeduren sind eine hervorragende Art sich zu bewegen Ihr business-Logik auf eine Ebene zugänglich werden, die von den Integrations-Technologie. Business-Logik in ein Paket (nicht mit dem schreiben von stand-alone-Funktionen und Prozeduren - werden Sie im Laufe der Zeit wachsen in einer unüberschaubaren Weise) ausgeführt werden können, die durch Java, C#, PL/SQL, ODBC und so weiter.
PL/SQL ist der Schnellste Weg zu werfen, um große Brocken von Daten außerhalb der reinen SQL. Die "Bulk Binding" features bedeutet, dass es sehr gut funktioniert mit der SQL-engine.
Gespeicherten Java-Prozeduren sind am besten für die Erstellung der Funktionalität für die Interaktion mit dem Netz oder Betriebssystem. Beispiele wären, das senden von E-Mails, FTP ' Ing-Daten, Ausgabe in text-Dateien und komprimieren Sie es auf, ausführen host-Befehl Linien im Allgemeinen.
Hatte ich noch nie, code oben C beim arbeiten mit Oracle, aber vermutlich könnte es verwendet werden, für die Integration mit legacy-apps.
Mein Gedanke ist, dass PL/SQL-sperren Sie in Oracle verwenden; die Verwendung von cross-Plattform-SQL und Gespeicherten Java-Prozeduren geben würde, Sie viel mehr zur Geltung kommen Lizenz-Verhandlung Zeit!
Having said that, kann ich nicht sehen, jemand anderes, wer wirklich unterstützt Sie noch 🙂
InformationsquelleAutor Rob Paterson
Nur, wenn Sie es nicht tun können in PL/SQL ( und PL/SQL-erweist sich als zu langsam, das wäre ziemlich selten, glaube ich ).
Als Fallstudie... Wir hatten eine einzige gespeicherte java-Prozedur in der Produktion laufen ( Oracle 9i ), es wurde ursprünglich in java geschrieben, weil wir dachten, java war cool, so Etwas habe ich schon lange, da änderte sich meine Meinung über. Sowieso. Eines Tages, die DB stürzt ab, nach einem Neustart des java-SP funktioniert nicht. Nach viel hin und her mit dem support von oracle, Sie don ' T wirklich wissen, was das problem ist und das nur Anregungen, die Sie haben mit viel Ausfallzeiten. Etwas, das nicht war eine option. 30 Minuten später hatte ich umgeschrieben, die java-SP in PL/SQL.
Es jetzt schneller läuft, ist oracle "native" , teilt die gleichen deployment-Prozess, wie andere Objekte und ist einfacher zu Debuggen.
PL/SQL ist eine sehr leistungsstarke Sprache. Wenn Sie schreiben Gespeicherte Prozeduren, nehmen Sie sich bitte die Zeit, das zu lernen, anstatt nur Dinge zu tun, die in java, weil es das ist, was Sie wissen.
InformationsquelleAutor Matthew Watson
Der wesentliche Vorteil ist der Zugang zu den API ' s und Funktionen der Sprache, die nicht in PL/SQL. Zum Beispiel, ich habe Sie genutzt für regulären Ausdruck-Verarbeitung, Datei - /Verzeichnis-manipulation und XML-parsing.
Gibt es eine Reihe von Nachteilen:
Verschieben der Java-Anwendung auf einem Anwendungsserver ist oft der bessere Ansatz als das konterkariert die Nachteile. Es gibt eine gute tool-Unterstützung, große Kontrolle über den JVM und es gibt haufenweise Leute ausgebildet, die in der gängigen application Servern, so finden Sie support-Mitarbeiter ist ganz einfach. Es ist die Gelegenheit, auf Kosten der performance schlagen Weg von der Datenbank, sondern halten Java schließen der Datenbank nicht geben Ihnen große performance-Gewinne sowieso.
Müssen Sie auf jeden Fall ein Grund für die Verwendung von Java in der Datenbank über a) PL/SQL gespeicherte Prozeduren oder b) Java außerhalb der Datenbank.
Ja, ich Rede von Oracle 9i.
InformationsquelleAutor darreljnz
Java macht es möglich, zu schreiben, Datenbank-neutralen code. Es ermöglicht die Wiederverwendung von vorhandenen code und drastisch erhöhen die Produktivität.
Eine Sache, die ich finden von Gespeicherten Java-Prozeduren nützlich für Datei-IO. Java hat eine weit umfangreichere Datei-IO-Funktionen, die es Entwicklern ermöglicht, Dateien löschen, Verzeichnisse hinzufügen, und so weiter, als im Vergleich zu der Oracle UTL_FILE-Pakets.
InformationsquelleAutor dogbane
Vorteile:
Nachteile:
InformationsquelleAutor Steve Bosman
Habe ich verwendet Oracle emmbedded java für zwei Probleme:
1) von PLSQL-Verfahren, das Ladegut, die die Ergebnisse einer Abfrage in eine text-Datei und senden Sie Sie über FTP. Diese Datei war sehr groß und ich mit Java-Reißverschluss.
2) In einer client-server-Anwendung mit direkter Verbindung mit der DB zu vergleichen, die der Benutzer gesendet-Passwort, um die Anwendung (nicht der DB-user-Passwort) Hashen mit MD5, so dass das Passwort nicht Reisen durch das Netz im Klartext. Ich bin mir nicht sicher, ob dies die bessere Lösung für dieses problem, ich werde Sie Fragen Sie es jetzt. 🙂
Ich habe (1). UTL_COMPRESS funktioniert für einzelne BLOBs, aber ich brauchte mehrere Dateien in einem einzigen Archiv. Viel einfacher in Java. (2) ist nicht erforderlich, wenn Sie die Enterprise Edition mit Erweiterten Sicherheitsfunktionen der Option, wie Sie richtig verschlüsseln der client/server-Verbindung
InformationsquelleAutor Telcontar
Verwenden Sie Java, wenn Sie absolut nicht tun, ist es in PL/SQL, oder wenn Java wird Ihnen erlauben, mehr Leistung.
Als ein Beispiel, wenn Sie möchten, verwenden sockets innerhalb eines PL/SQL-Programm (Protokollierung, externe Anrufe, etc), können Sie:
Im ersten Fall haben Sie ein synchronen socket, Ihre PL/SQL-Aufrufe, wenn die remote-service-Probleme hat. Darüber hinaus, wenn Sie mit dbms_session.reset_package (in OWA), müssen Sie schließen Sie die Buchse für jede Anfrage, die sehr teuer ist.
Im zweiten Fall TCP ist immer noch synchron, aber wenn Sie benötigen, asynchrone, nicht-blockierende Verhalten kann man UDP verwenden. Darüber hinaus reset_package nicht zurückgesetzt Java TCP-oder UDP-sockets, so dass Sie nicht brauchen, um deal mit tear-down/reconnect Schmerzen.
InformationsquelleAutor Scott A
Die Antwort ist NIE. Wenn Sie schreiben müssen, Programme zu laden oder Daten verarbeiten, die Sie brauchen, es zu tun außerhalb Ihres data tier von einem anderen computer auf dem Netzwerk.
Ausführen externer Anwendungen direkt auf der Datenebene oder-Gott bewahre-in-Prozess mit der Datenebene oder die falsche Verwendung von externen Sprachen als native query-Sprachen sind eine bessere Passform für den job bei der hand sind in Ordnung und durchaus akzeptabel für ein kleines scale custom in-house-Anwendung. Sie haben einfach keinen Platz außerhalb der arena.
InformationsquelleAutor