Laden...

Performante User Logs auf Azure

Erstellt von t2t vor einem Jahr Letzter Beitrag vor einem Jahr 560 Views
T
t2t Themenstarter:in
415 Beiträge seit 2007
vor einem Jahr
Performante User Logs auf Azure

Verwendetes Datenbanksystem: <Azure SQL>

Hallo zusammen,

meine Cloud App loggt aktuell User Daten, welche auch für den User relevant sind, in eine Azure SQL Table. Hier fallen pro Tag etliche 10k Einträge an. Für meine User sind diese Logs sehr wichtig und sie können diese in einer tabellarischen Ansicht auf der Website einsehen.

Von der Struktur sieht die Tabelle so aus:

ID UserId Timestamp Type Message Exchange

Die Anwendung zieht die Daten, gefiltert nach User, via Entity Framework sortiert von neu nach alt aus der DB. Es sind entsprechend auch Indexe gesetzt, nur leider verschlechtert sich der Index schon nach 1 - 2 Wochen immer wieder, da soviel neue Einträge stattfinden, was letztendlich zu Performance Problemen führt. Manchmal dauern einige Queries 1-5 Minuten.

Ich suche nun nach einem anderen performanteren Ansatz die User Daten zu loggen. Ich hatte an eine Document DB wie Cosmo gedacht. Könnt ihr mir mit den Mitteln die Azure bereitstellt eine gute Alternative raten? Denn ich möchte ja auch einigermaßen kosteneffizient bleiben. Aktuell hätte ich nur die Möglichkeit ne fettere DB bereitzustellen, was nicht gerade günstig ist.

P
441 Beiträge seit 2014
vor einem Jahr

Wenn du nur nach Datum (und vermutlich Zeit) filterst, könntest du auf den Table Storage gehen. Der ist günstiger als Cosmos DB und bei richtig gewähltem PartitionKey und RowKey geht das einfache filtern auch sehr gut.

T
t2t Themenstarter:in
415 Beiträge seit 2007
vor einem Jahr

Die Idee finde ich gar nicht schlecht. Habe ein bisschen recherchiert. Ich muss auf den User filtern und ich brauche die Sortierung von neu nach alt. Den User kann ich über den Partition Key abbilden und für die Sortierung nach Timestamp gibts wohl nen Trick:


var rowKey = (DateTime.MaxValue.Ticks - Timestamp.Ticks).ToString("d19")

Scheint auf den ersten Blick genau das abzudecken, was ich benötige. Dank dir!