Frage

Ich bin mit SqlServer eine WPF-Anwendung zu fahren, ich bin mit NHibernate zur Zeit und Pre-Read all die Daten, so dass es aus Leistungsgründen zwischengespeichert. Das funktioniert für eine einzelne Client-Anwendung, aber ich frage mich, ob es eine In-Memory-Datenbank ist, die ich verwenden könnte, damit ich die Informationen über mehrere Anwendungen auf demselben Rechner teilen. Im Idealfall würde dies unter meinem NHibernate Stapel sitzt, so dass mein Code nicht ändern. Effektiv Ich suche meine DB bewegen von auf dem Server traditionelles Format ist auf dem Client eine im Speicher DB zu sein.

Hinweis: Ich brauche nur ausgewählte Funktionalität.

War es hilfreich?

Lösung

http://www.db4o.com/ kann dein Freund sein!

Andere Tipps

Ich wäre unglaublich überrascht, wenn Sie auch alle Ihre Informationen in den Speicher laden müssen. Ich sage das, weil, nur als ein Beispiel, ich bin auf einer Web-App im Moment arbeiten, dass (aus verschiedenen Gründen) Tausende von Datensätzen auf vielen Seiten lädt. Dies ist PHP + MySQL. Und so ist es auch sie tun können, und eine Seite machen in deutlich unter 100 ms.

Bevor Sie diesen Weg gehen stellen Sie sicher, dass Sie zu haben. Zuerst Ihre Datenbank so performant wie möglich machen. Jetzt offensichtlich Dazu gehören Dinge wie entsprechende Indices und Ihre Datenbank-Tuning aber obwohl setzen das Pferd vor den Karren.

In erster Linie müssen Sie sicherstellen, dass Sie ein gutes relationales Datenmodell: eine, die sich auf performante Abfragen verleiht. Das ist so viel Kunst wie Wissenschaft ist.

Außerdem können Sie NHibernate aber ORMs sind nicht immer die beste Wahl . Es gibt einige Sonderfälle, zum Beispiel, dass von Hand codierte SQL wird in weit überlegen sein.

Jetzt vorausgesetzt, Sie ein gutes Datenmodell haben und vorausgesetzt, Sie haben dann Ihre Indizes und Datenbankparameter optimieren und dann haben Sie richtig NHibernate konfigurieren, dann und nur dann sollten Sie das Speichern von Daten im Speicher betrachten, wenn und nur wenn Leistung ist immer noch ein Thema .

Um dies in Perspektive zu setzen, die einzigen Male, die ich gebraucht habe, dies zu tun sind auf Systeme, die Millionen von Transaktionen pro Tag durchführen müssen.

Ein Grund im Speicher zu vermeiden Caching ist, weil es eine Menge Komplexität hinzufügt. Sie haben sich mit Fragen wie Cache-Ablauf, unabhängige Aktualisierungen der zugrunde liegenden Datenspeicher befassen, ob Sie synchrone oder asynchrone Updates verwenden, wie Sie dem Kunden eine konsistente geben (wenn nicht up-to-date) Ansicht Ihrer Daten, wie Sie beschäftigen mit Failover und Replikation und so weiter. Es gibt eine große Komplexität Kosten bezahlt werden.

Angenommen, Sie haben alles getan, was die oben und Sie müssen es immer noch, es klingt für mich wie das, was Sie brauchen, ist ein Cache oder Grid-Lösung ist. Hier ist ein Überblick über Java Grid / Cluster-Lösungen aber viele von ihnen (zB Kohärenz, memcached) als auch auf .Net anzuwenden. Eine andere Wahl für .Net ist Geschwindigkeit .

Es muss darauf hingewiesen und betont, dass so etwas wie NHibernate nur konsequent ist, solange nichts von außen auf die Datenbank aktualisiert und dass es genau ein NHibernate-fähigen Prozess (abgesehen von Clusterlösungen). Wenn zwei Desktop-Anwendungen auf zwei verschiedenen PCs aktualisieren beide die gleiche Datenbank mit NHibernate einfach das Caching wird nicht funktionieren, weil die Persistenzeinheiten einfach nicht der Veränderungen bewusst sein, das anderes macht.

Geschwindigkeit ist ein aus Prozess-Objekt-Caching-Server von Microsoft entwickelt, ziemlich viel zu tun, was Sie wollen obwohl es im Moment nur in CTP Form ist.

Ich glaube, es gibt auch Wrapper für Memcached, die auch Cache-Objekte verwendet werden können.

Sie können mit HANA, Express Edition. Sie können es kostenlos herunterladen , es ist im Speicher, säulen und ermöglicht eine weitere Analysefunktionen wie Textanalyse, Geospatial oder prädiktive. Sie können auch auf mit ODBC, JDBC, node.js HDB Bibliothek, REST-APIs unter anderem.

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