Ich bin auf der Suche nach einer schnellen (wie in großen Leistung, nicht schnelle Lösung) Lösung für das Andauern und Abrufen Dutzende von Millionen kleiner (etwa 1k) binärer Objekte. Jedes Objekt sollte eine eindeutige ID zum Abrufen haben (vorzugsweise eine GUID oder SHA). Zusätzliche Anforderungen sind, dass es von .NET verwendet werden kann und keine zusätzliche Softwareinstallation erforderlich sein sollte.Schnellste Möglichkeit zum Abrufen/Speichern von Millionen von kleinen binären Objekten
Derzeit verwende ich eine SQLite-Datenbank mit einer einzigen Tabelle für diesen Job, aber ich möchte den Aufwand für die Verarbeitung einfacher SQL-Anweisungen wie SELECT Daten aus dem Speicher WHERE ID = ID loswerden.
Ich habe auch direkte Dateisystempersistenz unter NTFS getestet, aber die Leistung verschlechtert sich sehr schnell, sobald es eine halbe Millionen Objekte erreicht.
P.S. Übrigens, Objekte müssen nie gelöscht werden, und die Einfügungsrate ist sehr, sehr niedrig. Jedes Mal, wenn sich ein Objekt ändert, wird eine neue Version gespeichert und die vorherige Version bleibt erhalten. Dies ist eigentlich eine Voraussetzung, um Zeitreisen zu unterstützen.
Nur einige zusätzliche Informationen zu diesem Thema ergänzt: Large Object Speicherung in einer Datenbank oder ein Dateisystem http://arxiv.org/abs/cs.DB/0701168
Es scheint, dass meine vorläufigen Tests (in nUnit) eine kumulative ReadWrite-Zeit Vector [10, 100, 1000] Objekte von 0,3 Sekunden in SQLite und 3.01s mit NTFS für ein 50-Byte-Objekt vorschlagen. :-( –
Aber lesen 10k Objekte in 2.8s ist immer noch zu langsam für mich :-( –
Ich würde so etwas wie 100k in etwa 1s benötigen. –