Wie gehen Sie mit dem Rätsel um, die Datenbank aufzubrechen, wenn Sie monolithische Anwendungen in Microservices aufteilen? Typische Anwendungen, an denen ich gearbeitet habe, führen aus Gründen der Leistung und Einfachheit viele Datenbankintegrationen durch.
Wenn Sie zwei Tabellen haben, die logisch unterschiedlich sind (wenn Sie so wollen, begrenzte Kontexte), aber häufig eine aggregierte Verarbeitung für ein großes Datenvolumen durchführen, vermeiden Sie im Monolithen höchstwahrscheinlich die Objektorientierung und verwenden stattdessen den Standard Ihrer Datenbank JOIN-Funktion zum Verarbeiten der Daten in der Datenbank, bevor die aggregierte Ansicht an Ihre App-Ebene zurückgegeben wird.
Wie rechtfertigen Sie die Aufteilung solcher Daten in Microservices, bei denen Sie vermutlich die Daten über eine API und nicht über die Datenbank "verbinden" müssen?
Ich habe Sam Newmans Microservices-Buch gelesen und im Kapitel über die Aufteilung des Monolithen gibt er ein Beispiel für "Aufbrechen von Fremdschlüsselbeziehungen", in dem er anerkennt, dass ein Join über eine API langsamer sein wird - aber er fährt fort, wenn Ihre Bewerbung ist sowieso schnell genug. Ist es wichtig, dass sie langsamer als zuvor ist?
Das scheint ein bisschen glib? Was sind die Erfahrungen der Menschen? Mit welchen Techniken haben Sie die API-Verknüpfungen akzeptabel gemacht?