Muster und strukturen hundertertafel

Der Begriff “EAV-Datenbank” bezieht sich auf einen Datenbankentwurf, bei dem ein erheblicher Teil der Daten als EAV modelliert wird. Selbst in einer Datenbank, die als “EAV-basiert” beschrieben wird, sind einige Tabellen im System jedoch traditionelle relationale Tabellen. Verwenden Sie dieses Muster, wenn Ihre Clientanwendung Entitäten mit einer Vielzahl unterschiedlicher Schlüssel abrufen muss, wenn Ihr Client Entitäten in verschiedenen Sortierreihenfolgen abrufen muss und wenn Sie jede Entität mithilfe einer Vielzahl eindeutiger Werte identifizieren können. Sie sollten jedoch sicherstellen, dass Sie die Partitionsskalierbarkeitsgrenzwerte nicht überschreiten, wenn Sie Entitätssuchen mit den verschiedenen RowKey-Werten durchführen. In diesem Artikel werden einige Muster beschrieben, die für die Verwendung mit Tabellendienstlösungen geeignet sind. Außerdem werden Sie sehen, wie Sie einige der in anderen Tabellenspeicherentwurfsartikeln besprochenen Probleme und Kompromisse praktisch angehen können. Das folgende Diagramm fasst die Beziehungen zwischen den verschiedenen Mustern zusammen: Stellen wir uns vor, Sie entwickeln eine Onlineshop-Anwendung mit dem Microservice-Architekturmuster. Die meisten Dienste müssen Daten in einer Datenbank beibehalten. Der Bestellservice speichert z. B. Informationen zu Bestellungen und der Kundendienst speichert Informationen zu Debitoren. Die obige Musterkarte zeigt einige Beziehungen zwischen Mustern (blau) und Antimustern (orange), die in diesem Handbuch dokumentiert sind.

Es gibt viele andere Muster, die eine Überlegung wert sind. Eines der wichtigsten Szenarien für den Tabellendienst besteht beispielsweise darin, das Materialisierte Ansichtsmuster aus dem CQRS-Muster (Command Query Responsibility Segregation) zu verwenden. Ich glaube nicht, dass es wirklich angemessen ist, von Designmustern mit relationalen Datenbanken zu sprechen. Relationale Datenbanken sind bereits die Anwendung eines “Entwurfsmusters” auf ein Problem (das Problem ist “wie Daten dargestellt, gespeichert und mit ihnen gearbeitet werden, während die Integrität erhalten bleibt” und der Entwurf das relationale Modell ist). Andere Approches (im Allgemeinen als veraltet betrachtet) sind die Navigations- und Hierarchischen Modelle (und ich bin nur e viele andere existieren). Sofern Sie Ihre Anforderungen auf mehrere Partitionen verteilen, können Sie den Durchsatz und die Clientreaktionsfähigkeit verbessern, indem Sie asynchrone oder parallele Abfragen verwenden. Sie können z. B. zwei oder mehr Workerrolleninstanzen haben, die parallel auf Ihre Tabellen zugreifen. Sie können über einzelne Workerrollen verfügen, die für bestimmte Partitionssätze verantwortlich sind, oder einfach über mehrere Workerrolleninstanzen verfügen, von denen jede auf alle Partitionen in einer Tabelle zugreifen kann. Mithilfe von Azure-Warteschlangen können Sie eine Lösung implementieren, die letztendliche Konsistenz auf zwei oder mehr Partitionen oder Speichersystemen bietet. Um diesen Ansatz zu veranschaulichen, gehen Sie davon aus, dass Sie eine Anforderung haben, um alte Mitarbeiterentitäten archivieren zu können.

Alte Mitarbeiterentitäten werden selten abgefragt und sollten von Allen Aktivitäten ausgeschlossen werden, die sich mit aktuellen Mitarbeitern befassen. Um diese Anforderung zu implementieren, speichern Sie aktive Mitarbeiter in der Tabelle Aktuelle und alte Mitarbeiter in der Tabelle Archiv.