2009-05-14 14 views
0

Ich bin neu in NHibernate.Kann mir jemand erklären, wie es mit großen Datensätzen beschäftigt?NHibernate Information

Wenn ich 100GB Daten habe, möchte ich durch Nhibernate abrufen, ich denke, dass es mit ISession möglich ist. Wenn ich ISession verwende, wird es im Speicher gespeichert? Wenn es im Speicher gespeichert wird, was passiert, wenn Änderungen an der Datenbank vorgenommen werden?

Diese Zweifel können mich in ein bisschen Verwirrung führen.Kann jemand mich vorschlagen?

Vielen Dank im Voraus

+0

Ich verstehe Ihre Situation nicht. Was meinst du mit "großen Datensätzen"? Wie ist es strukturiert? Sind das so viele Reihen, oder ist es ein einzelner Fleck? Ist das Datenbankmodell bereits definiert? Ist das Objektmodell bereits definiert? Was ist das eigentliche Problem, das Sie lösen müssen? –

Antwort

0

Die Session von NHibernate implementieren nicht nur die ‚Arbeitseinheit‘ Muster, aber es führt auch das Muster ‚Identity Map‘.

Wenn Sie also zum ersten Mal in einer Sitzung eine Entität aus dem Datenspeicher abrufen, ruft NHibernate diese Entität aus der DB ab.

Wenn Sie dieselbe Entität erneut mit der gleichen Sitzung abrufen möchten, wird NHibernate sie nicht aus der Datenbank abrufen, aber es wird die Referenz zurückgegeben, die sie bereits abgerufen hat. Dies ist natürlich nur dann der Fall, wenn Sie die gleiche Session-Instanz verwenden, wenn Sie dieselbe Entity zum zweiten Mal abrufen.

Wenn Sie Änderungen an einer Entität vornehmen und in der Zwischenzeit eine andere Person die gleiche Entität ändert und diese Änderungen in der Datenbank fortsetzt, werden Sie diese Änderungen natürlich nicht sehen, da Sie nicht erwarten können, dass NHIbernate dies überwacht die gesamte Datenbank und überprüft, ob jemand anderes eine Entität im Speicher geändert hat (und beibehalten hat).

Daher wird empfohlen, dass Ihre Sitzungen kurzlebig sein sollten. Um Änderungen nicht zu überschreiben, können Sie einfach die optimistische Sperre in NHibernate implementieren.

Aber, ich frage mich ... Sind Sie sicher, dass NHibernate eine gute Lösung für Ihr Problem ist? Welche Art von Anwendung werden Sie erstellen?

+0

Vielen Dank für Ihre Antwort. Hauptsächlich ist meine Anwendung mit großen Datenmengen zu tun.Um die großen Datenblöcke zu einem Zeitpunkt abzurufen und Manipulationen und die Präsentation dieser Daten in Windows und Webforms.Ist es ratsam, NHibernate für diesen Zweck zu verwenden? – user98454

+0

Was machen Sie mit Ihren Daten? Sind es hauptsächlich CRUD-Operationen mit sehr wenig Geschäftslogik? Wie modellieren Sie diese Daten? Sie können dies in NHibernate tun, aber in einigen Fällen könnte es besser sein, NHibernate nicht zu verwenden. –

+0

Ich werde diese Daten hauptsächlich nur für CRUD-Operationen verwenden. Können Sie mir bitte einige Fälle erklären, in denen nhibernate nicht verwendet wird? Danke – user98454

0

Ich weiß nicht, was Sie mit den Daten machen wollen, also kann ich Ihnen keine gute Antwort geben. Wenn Sie über 100 GB sprechen, möchten Sie vermutlich die Daten in eine andere Datenbank oder auf ein anderes Speichermedium übertragen. Warum guckst du nicht auf ETL Werkzeug?

Verwandte Themen