2017-08-13 4 views
0

Wir beginnen mit einer verteilten Caching-Strategie auf unserer zentralen RavenDb-Datenbank. Als Teil dieser Strategie rufen wir das Etag eines Dokuments aus RavenDb und einen Wert des Objekts aus dem lokalen Azure-Blob-Speichercache ab.Abruf von RavenDb Etags ist langsam

Unsere Objekte sind extrem selten geändert (10-100 Objektänderungen pro Tag), sind aber extrem häufig abgerufen (ca. 5000 Objekt Auslagerungen eine Minute und wachsend)

Dies ist eine Multi-Threaded-Umgebung und interne RavenDB Cache ist nicht groß genug, um alle Objekte im AggresiveCache-Modus zu speichern.

Wie auch immer, wir sehen schreckliche Zeiten mit dem Abruf von Etags von Raven. Zwischen 1 und 10 Sekunden (!!! ???) Was machen wir falsch? Dies ist der Code

return _session.Advanced.DocumentStore.DatabaseCommands.Head(id).Etag; 

Antwort

1

Sie eine Anfrage pro Anruf tätigen, was bedeutet, dass Sie eine Menge von den Kosten der bereits Abrufen des Dokuments zu zahlen. Es wird wahrscheinlich billiger sein, das Dokument direkt zu laden, anstatt den Kopf zu tun

+0

keine Möglichkeit, nur die Etag zu bekommen, ohne das vollständige Dokument zu laden? Es macht keinen Sinn, das vollständige Dokument zu bekommen, wenn Etag wahrscheinlich separat oder zumindest mit speziellen Bestimmungen in Raven gespeichert wird. – Igorek

+0

Die Gesamtkosten sind ziemlich gleich, es sei denn, das Dokument ist sehr groß –