4 Stimmen

LDAP-Transaktion in Java

Ich muss eine Masseneinfügefunktion für unser Benutzerverwaltungstool erstellen. Wir bauten eine kleine interne Bibliothek mit Frühling LDAP, und alles funktioniert gut für einzelne Benutzerverwaltung (CRUD).

Ich möchte versuchen, Hunderte von Datensätzen auf einmal einzufügen und ein Rollback durchzuführen, wenn etwas schief geht.

Gibt es eine Möglichkeit, Transaktionen in LDAP zu erstellen, wie es in Datenbanken der Fall ist?

Vielen Dank für Ihre Ideen.

3voto

adrianboimvaser Punkte 2621

3voto

Randy Levy Punkte 22402

Dies ist ein Follow-up zu @adrianboimvaser.

Nur ein Hinweis darauf, dass die Unterstützung von Spring LDAP-Transaktionen verwendet keine XA-Transaktionen, sondern "logische" kompensierende Transaktionen, so dass das Rollback von LDAP eine kompensierende Aktion gegen LDAP ist. Obwohl dies eine Verbesserung gegenüber keinen Transaktionen ist, sollte man sich darüber im Klaren sein, dass dies nicht dasselbe ist wie eine typische Transaktion, wie es sie in Datenbanken gibt, d.h. die SÄURE Eigenschaften von Transaktionen werden nicht unterstützt.

N dieselbe logische Transaktion verwendet wird, diese i Zwei-Phasen-Commit wird durchgeführt, [ ] unerwartete Ergebnisse liefern.

Zum Beispiel: Wenn Sie 100 Einträge zu LDAP hinzufügen, wird jeder Datensatz einzeln zu LDAP hinzugefügt. Wenn das letzte Hinzufügen fehlschlägt, besteht die Rollback-Aktion darin, die zuvor erstellten 99 Einträge innerhalb der Transaktion zu entfernen. Wenn jedoch aus irgendeinem Grund (z. B. wenn die Netzwerkverbindung zu LDAP gestört ist, was den Fehler beim 100. Eintrag verursacht hat) die ersten 99 Einträge nicht entfernt werden können, besteht trotz des Versuchs, die Transaktion zurückzusetzen, eine Inkonsistenz zwischen der Datenbank und LDAP, d. h. es gibt 99 Datensätze in LDAP (weil sie nicht gelöscht werden konnten), die in der Datenbank nicht vorhanden sind (weil diese Datensätze nie eingefügt wurden oder tatsächlich zurückgesetzt wurden).

Ich bin mir nicht sicher, wie Ihre Situation aussieht, aber wenn Sie häufig große Aktualisierungen in LDAP vornehmen, sollten Sie die Verwendung einer echten Datenbank in Betracht ziehen, um Transaktionsprobleme zu vermeiden und die Leistung zu optimieren, da LDAP für schnelle Lesevorgänge und relativ langsame Schreibvorgänge ausgelegt ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X