Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Performante User Logs auf Azure
t2t
myCSharp.de - Member



Dabei seit:
Beiträge: 415
Herkunft: Hamburg

Themenstarter:

Performante User Logs auf Azure

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Papst
myCSharp.de - Experte



Dabei seit:
Beiträge: 420
Herkunft: Kassel

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
t2t
myCSharp.de - Member



Dabei seit:
Beiträge: 415
Herkunft: Hamburg

Themenstarter:

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers