2 Stimmen

NHibernate: Lese-/Schreib-Aufteilung

Ich möchte NHibernate mit einer MySQL Master-Slave Replikationskonfiguration verbinden, sodass ich Schreibvorgänge an den Master senden kann und Lesevorgänge an den Master und die Slaves. Ist das möglich? Außerdem plane ich, einen Lastausgleicher (ldirectord) zu verwenden, um die Lesevorgänge zu balancieren.

1voto

Tim Hoolihan Punkte 12248

Unter der Haube verwendet NHibernate ADO.NET, um eine Verbindung zu Datenquellen herzustellen. Daher müssten Sie sich ansehen, wie ADO.NET mit dieser Situation umgeht.

Aber zusätzlich denke ich nicht, dass Sie dadurch etwas gewinnen würden.

Einige Hintergrundinformationen: Objekte in NHibernate sind an Sitzungen gebunden, die an Sitzungsfabriken gebunden sind, die mit 1 Verbindung verbunden sind.

Angenommen, Sie haben einen Load-Balancer mit der IP 1 für Lesevorgänge. Und er balanciert Datenbanken auf den IPs 2 und 3 aus. Und Sie erreichen IP 2 direkt für Schreibvorgänge.

Also haben Sie

IP     Verwendung
1      Balancer
2      Lesen / Schreiben
3      Lesen

Wenn Sie ein Objekt mit einer an Verbindung 1 gebundenen Sitzung lesen, müssen Sie dieses Objekt laden und dann speichern und leeren, um auf einer Sitzung, die an Verbindung 2 gebunden ist, zu schreiben. Zu diesem Zeitpunkt haben Sie 2 Lesevorgänge und 1 Schreibvorgang durchgeführt. Währenddessen haben Sie bei Verwendung einer Sitzungsfabrik einen Lese- und einen Schreibvorgang (vorausgesetzt, dieselbe Sitzung ist während des Lesens und Schreibens aktiv oder dass ein 2nd-Level-Cache eingerichtet 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