Ich erstelle ein Server-Back-End für ein mobiles soziales Netzwerk mit Windows Azure.Denormalisierung von Chatnachrichten in Azure-Tabellen
Ich habe diese drei Einheiten:
- Benutzer - Stored in SQL Azure
- Threads (Art der Beziehungen zwischen 2 Benutzer, die dann in der Lage sind, sich gegenseitig Nachrichten senden) - Stored in SQL zu
- Nachrichten - Stored in Azure Tabellen
Wie speichere ich Nachrichten in Azure Tabellen von Thread-ID partitioniert erwarte ich eine gute Leistung beim Chatten (Senden/Lesen von Nachrichten an/von Threads).
Aber ich muss auch in der Lage sein, Benutzern eine Liste der neuesten Threads zur Verfügung zu stellen (recent = enthält die neueste Nachricht). Mit anderen Worten muss ich Threads bis zum letzten Nachrichtendatum beim Anzeigen bestellen.
Scannen viele verschiedene Tabellenpartitionen und die Suche nach den Nachrichten wird offensichtlich Leistung Killer sein, so muss ich irgendwie Daten zu anderen Tabellenpartitionen denormalisieren, um die neuesten Threads effizient abrufen zu können.
Was basierend auf Ihrer Erfahrung ist die beste Strategie?
Hallo, Igorek und danke für die Antwort! Das Problem, das ich in der Lösung sehe, ist, dass jedes Mal, wenn ein Benutzer eine Nachricht in den Thread schreibt, ich SQL Azure abfragen muss, um den Zeitstempel der Konversation in der Thread-Tabelle zu aktualisieren. Was den Vorteil der Verwendung von Azure-Tabellen irgendwie ausgleicht - die Skalierbarkeit ... –
Einverstanden. Ich bearbeite meine Hauptreaktion – Igorek
Igorek, danke für die Aktualisierung der Antwort. Basierend darauf habe ich etwas sehr ähnliches implementiert, was gut funktioniert, also habe ich deine Antwort akzeptiert. Allerdings fand ich die Diskussion, die Sie mit FlorinDumitrescu hatten (http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/6a745a22-540a-44d5-b426-d42dd8510da5) und war verwirrt über meine vorherigen "Tabellen -mehr skalierbare "Weltanschauung. Also werde ich es googlen und schließlich eine neue Diskussion darüber starten ... –