Der Hintergrund:
Wir haben eine Anwendung, bei der die Haupteinheit ein Kunde ist. Alle Informationen in dieser Anwendung beginnen beim Kunden. Wir dachten, es wäre wirklich schön, wenn wir das für eine Partitionierung verwenden könnten. Wir haben den Service mit der Azure SQL-Datenbank als Backend konzipiert.
Unsere Tabellen sehen so aus (nur der relevante Teil ist der Kürze halber):
%Vor%Nun konnten wir einige verrückte Dinge tun. Unser Einstiegspunkt zu allen SQL-bezogenen Dingen enthält immer zuerst den folgenden Befehl:
%Vor%In diesem Fall diese Aussage:
%Vor%oder
%Vor%funktioniert ohne Probleme und arbeitet nur an den Daten des gegebenen Kunden. Die CustomerId COLUMN wird immer aus der Systemfunktion FEDERATION_FILTERING_VALUE;
abgeleitetJetzt könnten wir alle unsere Kunden ohne Probleme in einer einzigen Datenbank haben und sie wären voneinander isoliert. Wenn irgendwann in der Zukunft einer von ihnen zu groß wird, könnten wir den Verband unter dieser bestimmten Kunden-ID SPLITEN und wir müssen nichts in unserem Code ändern, um ihn zu unterstützen.
Verdammt, wir könnten jeden Kunden in einer separaten Föderationsdatenbank haben, und der Dienst, der ihn benutzt, würde keine einzige Sache darüber wissen.
Wir waren sehr glücklich mit unserer Lösung und ich dachte, dass ich sehr clever dabei wäre. Erst kürzlich, als Microsoft ankündigte, dass sie die Funktion azure föderations mit den neuen azure-Datenbank-Editionen, die auf dem Markt sind, ablehnen. Lesen Sie mehr darüber hier und hier .
Ich hoffe, du siehst mein Problem. Was denkst du, sind meine Alternativen? Verwenden Sie Azure Federations und wie werden Sie den Übergang durchführen?
Danke.
Wir haben gesehen, dass benutzerdefinierte Shard-Lösungen im Vergleich zu Föderationen typischerweise zu besseren Ergebnissen in Bezug auf Skalierbarkeit, Flexibilität und Leistung führen. Weitere Informationen zu Föderationen und benutzerdefiniertem Shard finden Sie hier: Ссылка . Dies ist ein Grund für die Ankündigung, Federations zusammen mit den Web- und Business-Editionen in der Windows Azure SQL-Datenbank einzustellen.
Ich würde Sie ermutigen, sich selbst als Alternative zu betrachten. Es gab eine gute Anleitung, die letztes Jahr vom CAT-Team um selbstverschachtelnde Muster veröffentlicht wurde: Ссылка , und mehr Material wie dieses wird in Kürze kommen.
Fühlen Sie sich frei, mich zu kontaktieren, um Ihre Alternativen für die Migration Ihrer bestehenden Föderationen-Anwendung zu besprechen. Ich bin Teil des Azure DB-Produktteams und Sie können mich unter torsteng (at) microsoft.com erreichen
Danke,
Torsten
Ihre einzige Möglichkeit besteht darin, Ihre Software neu zu schreiben. Microsoft lügt, wenn sie sagen, dass eine benutzerdefinierte Sharding-Lösung besser ist. In der Tat haben sie jahrelang gesagt, warum Sie Föderationen dem Custom Sharding vorziehen sollten und sie haben dafür sehr solide Punkte geliefert: Verbindungspooling, keine Ausfallzeiten beim Skalieren, kein benutzerdefinierter Code um Ihre Shards zu verwalten etc. Nun will Microsoft aber viel mehr Geld bekommen Von Azure haben sie sich dazu entschlossen, ihren Kunden nur sehr teure Pläne anzubieten, und es gibt keinen Platz mehr für Föderationen, weil sie sehr billig und sehr skalierbar sind.
Wenn Sie keine besonders hohe Transaktionsrate haben, können Sie Amazon RDS ausprobieren. Es gibt kein Sharding, aber sie bieten Ihnen bis zu 30000 Transaktionen pro Sekunde, was selbst für sehr große Websites sehr viel ist. Wir haben unsere Software für PostgreSQL RDS umgeschrieben und sind sehr zufrieden damit. Es hat viel mehr Funktionen als SQL Server wie native JSON-Unterstützung, Arrays, mehrere CASCADE-Pfade usw.
Wenn 30000 Transaktionen pro Sekunde nicht genug für Sie sind, erhöhen Sie einfach die Anzahl der Server und teilen Sie Ihre Daten basierend auf dem Benutzernamen oder einer anderen Eigenschaft auf, zB:
%Vor%Im obigen Beispiel können Sie 120000 Transaktionen pro Sekunde ausführen, und Sie sollten keine Probleme mit dem Verbindungspool haben, weil es nur 4 Server gibt.
Tags und Links sql-server azure sql-azure-federations