Erfüllen moderner Datenbankanforderungen mit Azure SQL-Datenbank

Abgeschlossen

Nachdem Sie Ihre Umgebung konfiguriert haben, können Sie mit dem Analysieren und Testen bestimmter Komponenten einer potenziellen Lösungsarchitektur beginnen. Im Szenario zum Ermitteln der Busposition sowie in einer Vielzahl weiterer moderner Anwendungen wird eine moderne Datenbank zum Speichern, Verarbeiten und Bereitstellen von Daten benötigt. Sehen wir uns an, wie Azure SQL-Datenbank die Anforderungen moderner Anwendungen erfüllt.

Flexible Skalierungsmöglichkeiten, um verschiedenste Anforderungen mit Azure SQL-Datenbank zu erfüllen

Einer der wichtigsten Aspekte einer modernen Anwendung ist die Möglichkeit, flexibel auf sich ändernde Workloads zu reagieren, indem Kapazitäten problemlos hoch- oder herunterskaliert werden. Auch die Möglichkeit, eine Lösung problemlos zu aktualisieren und weiterzuentwickeln, sowie eine deterministische, automatische Bereitstellung sind Grundpfeiler der modernen Anwendungsentwicklung. Dieses Prinzip ermöglicht zudem, dass Anwendungen nur für die Ressourcen bezahlen, die benötigt werden, und zwar nur dann, wenn die Ressourcen tatsächlich benötigt werden.

Azure SQL-Datenbank bietet umfassende Unterstützung für all diese erforderlichen Features. Wenn Sie eine zukunftsfähige, skalierbare, sichere und hochleistungsfähige Datenbank benötigen, ist Azure SQL Hyperscale die ideale Lösung, um all Ihre Anforderungen zu erfüllen. Diese Datenbank kann auf bis zu 100 TB hochskaliert werden, und die verteilte Architektur ermöglicht ein problemloses Hoch- und Aufskalieren. Sie eignet sich ideal für Transaktions- und hybride Transaktionsanalyseworkloads.

Für die Entwicklung können Sie die serverlose Compute-Ebene der Azure SQL Database verwenden, die sich automatisch innerhalb eines definierten Bereichs hoch- und herunterskalieren lässt. Außerdem ist ein automatisches Anhalten möglich, wenn die Lösung nicht verwendet wird, sodass Sie beim Entwickeln und Testen Ihrer Lösung von maximaler Kosteneffizienz profitieren. Da das Azure SQL Database zugrunde liegende Modul identisch ist, sind beim Wechsel zu den serverlosen Compute-Ebenen der Azure SQL Database oder Azure SQL Hyperscale keine Codeänderungen erforderlich, und es entsteht kein zusätzlicher Aufwand.

Unterstützen von Entwicklungsworkflows mit GitHub Actions

Da DevOps heutzutage ein weit verbreiteter Ansatz ist, ist es wichtig, dass eine moderne Lösung eine fehlerfreie CI/CD-Pipeline (Continuous Integration und Continuous Delivery/Continuous Deployment) richtig unterstützt und über eine solche Pipeline verfügt. Azure SQL Database bietet native Unterstützung für GitHub Actions, ein Feature, mit dem Sie Änderungen an Ihrer Entwicklungsdatenbank für Test- und Produktionsdatenbanken bereitstellen können. Azure SQL Database-Aktionen folgen einem zustandsbasierten Ansatz. DevOps für Daten ist ein interessantes Thema. Weitere Informationen dazu finden Sie in den „Data Exposed“-Folgen, auf die am Ende des Moduls verwiesen wird.

Eine weitere wichtige Anforderung einer modernen Datenbank ist die Fähigkeit, die neuesten Entwicklungstrends und Innovationen umzusetzen und zu unterstützen. Mit der Vielzahl von Features, die Azure SQL Database bietet, können Sie die beste Technologie oder das beste Modell für einen bestimmten Anwendungsfall auswählen. Eine Übersicht über alle verfügbaren Features finden Sie in einem Blogbeitrag am Ende des Moduls.

Zukunftsfähige Anwendungen mit Azure SQL Database

Für maximale Effizienz sollten während der Lebensdauer Ihrer Anwendung verschiedene Technologien verwendet werden. Beispielsweise sollte ein Graphmodell eingesetzt werden, um eine komplexe Netzwerkbeziehung wie ein soziales Netzwerk oder ein Stromnetz problemlos nachzuverfolgen und zu modellieren. Oder Sie müssen in der Lage sein, äußerst schnell eine große Datenmenge zu aggregieren, um die Wachstumsrate eines bestimmten Werts zu berechnen. Mit Azure SQL Database sind Sie für all diese und viele weitere Fälle optimal ausgestattet. Sie bieten Unterstützung für Graphmodelle, Columnstore-Indizes und sogar speicheroptimierte Tabellen für maximalen Durchsatz (diese Tabellen sind kompilierte Datenstrukturen, die prozessintern geladen werden, um eine hohe Leistung zu erzielen).

Für das Szenario zum Ermitteln der Busposition wird die serverlose Compute-Ebene der Azure SQL Database verwendet. Dank Unterstützung für eine automatische Skalierung und das automatische Anhalten bezahlen Sie bei dieser Option nur für die Leistung, die Sie tatsächlich benötigen und nutzen. Zum Erstellen einer Bereitstellungspipeline, mit der die Datenbank nach Bedarf aktualisiert werden kann, verwenden Sie GitHub Actions. Für dieses Szenario werden noch einige weitere Funktionen benötigt. Sehen Sie sich diese einmal genauer an. In der nächsten Übung werden diese Funktionen praxisnah erläutert.

Verarbeiten von JSON-Daten mit nativen JSON-Funktionen

Mit Azure SQL Database können Entwickler JSON sowohl für den Austausch von Daten mit der Datenbank als auch zum Speichern von JSON-Dokumenten verwenden. Auf diese Weise können Sie JSON als effizienten Transportmechanismus verwenden, um Datensätze wie Arrays und Objekte zur Verarbeitung an eine gespeicherte Prozedur zu senden. Sobald Sie über das JSON-Dokument verfügen, können Sie es problemlos mithilfe nativer JSON-Funktionen wie JSON_VALUE, JSON_MODIFY oder OPENJSON bearbeiten. Ein Beispiel:

DECLARE @json NVARCHAR(MAX) = '[{"user":{"id": 1, "name": "Anna"}},{"user":{"id": 2, "name": "Davide"}}]'
SELECT * FROM
    OPENJSON(@json) WITH (
        [Id] INT '$.user.id', 
        [Name] NVARCHAR(100) '$.user.name'
    )

Weitere Beispiele zur Verwendung von JSON in Azure SQL Database finden Sie am Ende des Moduls.

Analysieren von Geodaten mit der nativen Geo-Engine

Azure SQL Database verfügt über eine native Geo-Engine, mit der Sie Geoabfragen ausführen können, ohne externe Bibliotheken zu installieren oder Daten zu verschieben. Beides könnte bei großen Datenmengen teuer sein. Da Azure SQL Database volle Unterstützung für den OGC-Standard (Open Geospatial Consortium) bietet, können exportierte Daten von Bibliotheken wie OpenLayers verwendet werden.

Das folgende Beispiel veranschaulicht das Erstellen eines Polygons, das als Geofence für das Szenario zum Ermitteln der Busposition dient. Außerdem wird überprüft, ob ein Punkt, der als Echtzeit-Busdatenpunkt dient, sich innerhalb des Polygons befindet.

-- Microsoft Building 44
declare @bldg44 as geography = geography::STGeomFromText('POLYGON((-122.13403149305233 47.64136608877112,-122.13398769073248 47.64058891712273,-122.13319924946629 47.64011342667547,-122.13285369830483 47.640106868176076,-122.13254221532335 47.640834858789844,-122.13257628383073 47.6410086568205,-122.13334039023833 47.64144150986729,-122.13403149305233 47.64136608877112))', 4326)

-- A point you want to check
declare @p as geography = geography::STPointFromText('POINT(-122.13315058040392 47.64101193601368)', 4326)

-- Is the point within the perimeter?
select @p.STWithin(@bldg44)

Da das WKT-Format (Well-Known Text) für die Standorte im Textformat (z. B. POINT(-122.13315058040392 47.64101193601368)) ein Standard ist, muss die Zeichenfolge lediglich kopiert und eingefügt werden, um die Form auf eine Karte zu projizieren. In der nächsten Übung testen Sie diesen Vorgang selbst unter Verwendung des OpenStreetMap WKT Playground.