Frage

fand ich einen Artikel aus dem Jahr 2008 zu diskutieren, wie man Aufruf von Java-Code von MySQL . Es gab eine Menge von Einschränkungen und Haftungsausschluss, weil der Prozess mit einem experimentellen Zweig von MySQL beteiligt zu arbeiten.

Für ein Projekt, das ich im Sinn haben, wäre es sehr nützlich sein, um sein für den Zugriff von Java-Bibliotheken in MySQL, analog zu Oracle Java Stored Procedures . Ist diese Fähigkeit nun als Standard-Feature von MySQL gibt es? Wenn nicht, was Open-Source-RDBMS Unterstützung etwas ähnliches wie Oracle Java Stored Procedures?

War es hilfreich?

Lösung

unterstützt PostgreSQL steckbare Verfahren Sprachen und ein Projekt erweitern existiert PostgreSQL mit PL / Java als die Sprache.

Ich empfehle, nicht zu viel Code in den RDBMS setzen. Werkzeuge zu entwickeln, zu testen und Debug-Code in der Anwendungsschicht ist besser als Werkzeuge für Code in der RDBMS.

Auch viele Entwickler nicht verstehen, dass Code in der RDBMS sollte Transaktionsisolations gehorchen. Sie versuchen, E-Mails von Trigger zu senden und so weiter. Ich denke, Code mit Nebenwirkungen in der Anwendungsschicht sein sollte, so dass Sie keinen Phantom Effekte (zum Beispiel einer E-Mail kann aus einer Datenbankänderung informieren, auch wenn die Änderung rückgängig gemacht wurde).

Andere Tipps

Wenn Sie HSQLDB verwenden können, dann können Sie Java-Methoden aufrufen, direkt aus SQL:

Ich bin vollkommen einverstanden mit Bill, aber ich kann in der Datenbank Geschäftsregeln gespeichert werden (nicht bearbeitet) vorstellen. Ich denke an drools hier. Der Motor in der Anwendung sein würde, aber die Regeln in der Datenbank mit einem Management-Front-End sein könnten.

Ein solches Tier wäre für Szenarien interessant sein, wo nicht nur die Parameter zu ändern, sondern auch die Formeln ändern.

Es ist schwierig, gute Ratschläge zu geben, auf der Grundlage der begrenzten Informationen, die Sie bisher zur Verfügung gestellt haben. Allerdings:

  

... beinhaltet das Beispiel einen Graphen-basierten Datentyp (chemische Strukturen), die nicht auf eine Anfrage angepasst werden kann mit dem integrierten in MySQL-Funktionen. Die Java-Bibliothek würde die Abfrage und den Inhalt eines Textfeldes in ein In-Memory-Objekt konvertieren, die durch angepasste können. Halten Sie diese Logik in der DB-Schicht würde zum Beispiel schließt sich keep in der Datenbank, die wie scheint, wo sie hingehören. Das ist die Idee, zumindest.

Ich glaube nicht, dass ich Datenbank-Seite Java in MySQL für diesen. Stattdessen denke ich, ich würde die folgenden Möglichkeiten in Betracht ziehen:

  • Verwenden Sie ein objekt-relationales Mapping wie JDO oder JPA (zum Beispiel unter Verwendung von Hibernate) mit der Zuordnung zwischen Ihrem Diagramm-basierten Datenmodell zu behandeln und was die Datenbank zur Verfügung stellt. Sie müssen nicht unbedingt ein RDBMS als Backend verwenden, aber das ist wahrscheinlich der beste Ort, um ... es sei denn, Sie bereits gefunden haben, dass dies ein Performance-Problem ist.

  • Nehmen Sie einen anderen Blick auf Ihre Datenmodell und Datenzugriffsmuster. Sehen Sie, wenn Sie etwas Transformation herausfinden können, die Ihre Anwendung Haupt Abfragen ermöglicht umgesetzt werden als (effizient) Tabellen-Joins, ohne auf serverseitige Anwendungslogik.

  • Wenn Sie tun müssen, um den Einsatz serverseitige Anwendungslogik (aus Performance-Gründen!)-Stick mit den von Ihrem RDBMS unterstützten Mechanismen. Zum Beispiel in Oracle würden Sie verwenden PL / SQL und PostgreSQL Sie eine Reihe von Optionen. Werden, um Schalter zu einem anderen RDBMS vorbereitet, dass passen besser zu den Anforderungen Ihrer Anwendung.

I (persönlich) würde vermieden, auf experimenteller Zweig einiger Datenbank abhängig:

  • Überlegen Sie, was passiert, wenn die experimentellen Zweig nicht zurück in den Hauptzweig verschmolzen. Sie würden mit Ihrer Code-Basis in Abhängigkeit von einem Zweig geklebt werden, die nicht unterstützt wird, und wahrscheinlich werden beibehalten zu stoppen und verpuffen.

  • Mit einem (derzeit) nicht unterstützten RDBMS Zweig wird ein Hindernis für andere Leute sein, die möchten Ihre Software nutzen.

Jetzt offensichtlich, wenn die langfristige Rentabilität Ihrer Software nicht ein wichtiges Anliegen ist, können Sie wählen, diese Ratschläge zu ignorieren. Aber es zählt wohl zu jemand; z.B. Ihre Forschung Supervisor.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top