|
Datengesteuerte Anwendungen umfassen ein breites Spektrum an Komplexität, von einfachen Microservices bis hin zu ereignisgesteuerten Echtzeitsystemen unter erheblicher Last. Wie jedoch jedes Entwicklungs- und/oder DevOps-Team, das mit Leistungsverbesserungen beauftragt ist, bestätigen wird, ist es „nicht trivial“, datengesteuerte Apps weltweit schnell zu machen.
Moderne Anwendungsarchitekturen wie der JAMstack erzwingen die Trennung von Bedenken, indem die Daten- und Persistenzanforderungen in die API verschoben werden. Durch die saubere Trennung von statischem Inhalt, Geschäftslogik und Datenpersistenz können beide unabhängig voneinander skaliert und verwaltet werden.
Viele Unternehmen konzentrieren sich auch darauf, ihre monolithischen Anwendungen zu entkoppeln, um Microservices zu nutzen, und stellen sie häufig in serverlosen Umgebungen bereit. Dieser Wechsel zu einer stärkeren Entkopplung für eine bessere Umgebungsisolierung kann auch eine bessere regionale Agilität in Bezug darauf bieten, wo Geschäftslogik bereitgestellt und wie sie skaliert wird. Anwendungen können jetzt global in einer einzigen CI/CD-Aktion bereitgestellt werden.
Die Datenschicht weist jedoch eine größere Komplexität auf. Es gibt praktische Herausforderungen wie Transaktionskonsistenz, Hochverfügbarkeit und Abfrageleistung unter Last. Es gibt Einschränkungen wie die Einhaltung von PII- und Compliance-Anforderungen. Und es gibt unüberwindbare Grenzen, wie sie die Latenz durch physikalische Gesetze auferlegt.
Anwendungs-Caching
Viele Entwicklungsteams setzen auf Caching, um diese Probleme auf der Anwendungsebene zu lösen, unterstützt durch Persistenzebenen wie Redis oder selbst entwickelte Systeme. Das Konzept ist einfach:Speichern Sie die vom Client angeforderten Daten für einen bestimmten Zeitraum, und wenn wir sie erneut sehen, haben wir sie bereit, um die nächste Anfrage zu bearbeiten, ohne auf die Ursprungsdatenbank zurückzugreifen. Das Entwickeln einer guten Caching-Strategie bringt eine Reihe von Herausforderungen mit sich:Welche Daten werden zwischengespeichert, wie werden sie zwischengespeichert und wann? Und vielleicht noch wichtiger, was, wie und wann Daten aus dem Cache entfernt werden. Die Caching-Strategie muss für jeden neuen Funktionssatz, der der Anwendung hinzugefügt wird, über Entwickler und potenzielle Abteilungsteams hinweg gut definiert, verstanden und eingesetzt werden. Entwicklungszeit und Komplexität sind die Kosten.
Datenbank-Read-Replicas
Alternativ lösen viele Unternehmen Latenz- und Skalierungsprobleme mit Datenbank-Read Replicas. Read Replicas sind schreibgeschützte Instanzen der primären Datenbank und werden automatisch (asynchron) synchronisiert, wenn Aktualisierungen an der primären Datenbank vorgenommen werden. Die Entwicklung einer soliden Read-Replica-Strategie ist eine entmutigende Aufgabe voller subtiler und nicht so subtiler Kosten und Komplexitäten.
Ein Großteil dieser Komplexität kann mit ScaleGrid gezähmt werden. Vollständig verwaltete Lesereplikate können auf Knopfdruck von ScaleGrid (mit HA-Unterstützung) in allen wichtigen Clouds und Regionen bereitgestellt werden, mit dem Hauptvorteil, dass die Daten automatisch mit der primären Datenbank synchronisiert werden.
Lesereplikate können sich jedoch nicht der Notwendigkeit entziehen, mehrere, vielleicht viele, mehrere Datenbankserver und die damit verbundenen Kosten zu betreiben.
Ein anderer Ansatz:PolyScale.ai Edge Cache
PolyScale ist ein Datenbank-Edge-Cache, der einen anderen Ansatz verfolgt. Der Cache von PolyScale bietet zwei Hauptvorteile:verbesserte Abfragelatenz und reduzierte Datenbank-Workload. Lassen Sie uns das ein wenig aufschlüsseln:
Regionale Latenz wird ähnlich wie ein CDN gelöst; PolyScale bietet ein globales Edge-Netzwerk von Points of Presence (PoP) und speichert Antworten auf Datenbankabfragen in der Nähe des ursprünglichen Clients, wodurch die Antworten erheblich beschleunigt werden.
Abfrageleistung lesen wird erheblich verbessert, da PolyScale jede zwischengespeicherte Datenbankanforderung in <10 ms bedient, unabhängig von der Komplexität der Abfrage. Da Leseanforderungen von PolyScale bedient werden, wirkt sich diese Last außerdem nie auf die Ursprungsdatenbank aus.
Implementierung
PolyScale kann ohne das Schreiben von Code oder das Bereitstellen von Servern in wenigen Minuten implementiert werden. Aktualisieren Sie einfach die Verbindungszeichenfolge des Datenbankclients (sei es eine Webanwendung, ein Microservice oder ein BI-Tool wie Tableau) mit dem PolyScale-Hostnamen. Der Datenbankdatenverkehr wird dann durch das Edge-Netzwerk geleitet und ist bereit für das Caching.
Durch die Drahtkompatibilität mit MySQL und Postgres ist PolyScale für Datenbankclients vollständig transparent, daher ändert sich nichts an Ihrer aktuellen Architektur. Keine Migrationen, keine Änderungen an der Transaktionalität und keine Änderungen an Ihrer aktuellen Abfragesprache. Wirklich Plug-and-Play.
Wie funktioniert es?
Das globale Netzwerk von PolyScale proxiert und speichert native Datenbank-Wire-Protokolle, sodass es für jeden Datenbank-Client transparent ist. Abfragen werden untersucht und gelesen (SQL SELECT
) können für eine beschleunigte Leistung geografisch in der Nähe des anfordernden Ursprungs zwischengespeichert werden. Der gesamte andere Datenverkehr (INSERT
, UPDATE
und DELETE
) geht nahtlos in die Quelldatenbank über.
Die KI von PolyScale ist auf dem Weg zur vollständigen Automatisierung. Anstatt den Cache nach Bedarf zu konfigurieren, misst die Plattform den Verkehrsfluss und passt die Caching-Eigenschaften kontinuierlich an, um eine optimale Leistung zu erzielen. Weitere Informationen zum PolyScale AI-Caching-Modell finden Sie hier.
Schlussfolgerungen
PolyScale.ai bietet einen modernen Plug-and-Play-Ansatz für Leistung und Skalierung auf der Datenebene. Die PolyScale-Plattform befindet sich auf dem Weg zur vollständigen Automatisierung, bei der nach der Verbindung das Caching der Daten intelligent verwaltet wird, um eine optimale Leistung zu erzielen.
Da PolyScale kabelkompatibel mit Ihrer aktuellen Datenbank ist, sind keine Änderungen erforderlich, um Lesevorgänge innerhalb von Minuten global zu skalieren. Probieren Sie es aus!