Zitat von
Alzaimar:
Für den Zugriff: Views statt Tabellen und Stored Procedures statt INSERT/UPDATE und DELETE. Als Alternative auch die 'updateable Views' und Trigger auf diesen Views.
Insert / Update -SP's sind eh ne gute Idee. Ein Call, und wenn's den Datensatz noch nicht gibt ist er drin und wenn's ihn schon gibt wird er upgedatet.
Auf die Idee mit einer Art Cache bin ich auch schon gekommen.
Meine Vorstellung wäre: Die Mittelschicht hält alle für die Clients benötigten Daten im Speicher. Nennen wir es mal das 'Weltbild' der Anwendung, angelehnt an das Daten-Weltbild unseres Fußballroboters hier an der Hochschule.
Die Mittelschicht berechnet das lebende Weltbild laufend fort und sorgt dafür, dass die Daten in der Datenbank aktuell gehalten werden. Auf der anderen Seite beschickt sie die Clients auf Anfrage mit den Daten und nimmt Änderungen von den Clients an.
Was aber, wenn das Weltbild zu komplex oder groß wird, so dass die Schicht das nicht mehr ordentlich (=performant) verwalten kann? Was, wenn es zu viele Clients / Connections werden und die Schicht die nicht mehr alle versorgen kann (Anzahl Connections zu groß)?
Ganz konkrete Frage:
Wie plant man so eine Mittelschicht, wenn diese ggf. später auf mehrere Rechner verteilt werden muss?
Ich will die ja nicht immer zu Tode synchronisieren. Und permanent auf der
DB nach geänderten Daten pollen ist auch nicht gut.
Ich sehe da zwei Möglichkeiten:
1.) Aufbrechen des Weltmodells in N Teile. Begrenzt die Sache auf maximal N Rechner, und da ein Client ja früher oder später doch Daten aus allen Teile braucht connected schliesslich doch jeder einzelne Client auf jeden Weltmodellrechner. Die Anzahl der Connections bleibt also für jeden der N Rechner gleich hoch. Was hier, wenn es zu viele Clients werden?
2.) Verteilen des kompletten Weltmodells auf X Rechner. Dann kann man für jeweils N Clients einen Middletier-Rechner nehmen und die Anzahl der Connections so effektiv begrenzen. Problem: Synchronisierung der Daten zwischen den Middle-Tier-Rechnern? Und weiteres Problem: Was, wenn das Weltmodell zu komplex/groß für einen Rechner wird?