Funktionen für mehrere Modelle in Azure SQL-DatenbankMulti-model capabilities of Azure SQL Database

Datenbanken mit mehreren Modellen ermöglichen Ihnen das Speichern von und Arbeiten mit Daten, die in verschiedenen Datenformaten vorliegen, wie z.B. relationale Daten, Graphen, JSON/XML-Dokumente Schlüssel-Wert-Paare usw.Multi-model databases enable you to store and work with data represented in multiple data formats such as relational data, graphs, JSON/XML documents, key-value pairs, etc.

Wann werden Funktionen für mehrere Modelle verwendet?When to use multi-model capabilities

Azure SQL-Datenbank wurde für die Arbeit mit dem relationalen Modell konzipiert, das in den meisten Fällen die beste Leistung für eine Vielzahl von allgemeinen Anwendungen bietet.Azure SQL Database is designed to work with the relational model that provides the best performance in the most of the cases for a variety of general-purpose applications. Azure SQL-Datenbank ist jedoch nicht auf relationale Daten beschränkt.However, Azure SQL Database is not limited to relational-data only. Mit Azure SQL-Datenbank können Sie eine Vielzahl nicht relationaler Formate verwenden, die eng in das relationale Modell integriert sind.Azure SQL Database enables you to use a variety of non-relational formats that are tightly integrated into the relational model. Die Verwendung der Funktionen für mehrere Modelle von Azure SQL-Datenbank sollten Sie in folgenden Fällen in Betracht ziehen:You should consider using multi-model capabilities of Azure SQL Database in the following cases:

  • Sie verfügen über einige Informationen oder Strukturen, die für NoSQL-Modelle besser geeignet sind, und möchten keine separate NoSQL-Datenbank verwenden.You have some information or structures that are better fit for NoSQL models and you don't want to use separate NoSQL database.
  • Ein Großteil Ihrer Daten eignet sich zwar für das relationale Modell, Sie müssen aber einige Daten im NoSQL-Format modellieren.A majority of your data is suitable for relational model, and you need to model some parts of your data in NoSQL style.
  • Sie möchten die umfangreiche Transact-SQL-Sprache zum Abfragen und Analysieren von relationalen und NoSQL-Daten nutzen und sie in eine Vielzahl von Tools und Anwendung integrieren, die die SQL-Sprache verwenden können.You want to leverage rich Transact-SQL language to query and analyze both relational and NoSQL data, and integrate it with a variety of tools and applications that can use SQL language.
  • Sie möchten Datenbankfunktionen wie In-Memory-Technologien anwenden, um die Leistung von Analyse oder Verarbeitung Ihrer NoSQL-Datenstrukturen zu verbessern. Sie möchten vielleicht auch die Transaktionsreplikation oder lesbare Replikate verwenden, um eine Kopie Ihrer Daten an einem anderen Ort zu erstellen und die primäre Datenbank von einigen Analyseworkloads zu entlasten.You want to apply database features such as in-memory technologies to improve performance of your analytic or processing of your NoSQL data strucutres, use transactional replication or readable replicas to create copy of your data on the other place and offload soem analytic workloads from the primary database.

ÜbersichtOverview

Azure SQL bietet die folgenden Funktionen für mehrere Modelle:Azure SQL provides the following multi-model features:

  • Graphfunktionen ermöglichen es Ihnen, Ihre Daten als Satz aus Knoten und Kanten darzustellen und die standardmäßige, um den MATCH-Operator erweiterte Transact-SQL-Sprache zu verwenden, um die Graphdaten abzufragen.Graph features enable you to represent your data as set of nodes and edges, and use standard Transact-SQL queries enhanced with graph MATCH operator to query the graph data.

  • JSON-Funktionen ermöglichen es Ihnen, JSON-Dokumente in Tabellen zu platzieren sowie relationale Daten in JSON-Dokumente und umgekehrt zu transformieren.JSON features enable you to put JSON documents in tables, transform relational data to JSON documents and vice versa. Sie können die um JSON-Funktionen erweiterte Transact-SQL-Standardsprache zum Analysieren von Dokumenten verwenden. Darüber hinaus können Sie nicht geclusterte Indizes, Columnstore-Indizes oder speicheroptimierte Tabellen verwenden, um Ihre Abfragen zu optimieren.You can use the standard Transact-SQL language enhanced with JSON functions for parsing documents, and use non clustered indexes, columnstore indexes, or memory-optimized tables, to optimize your queries.

  • Räumliche Funktionen ermöglichen es Ihnen, geografische und geometrische Daten zu speichern sowie die Daten mithilfe der räumlichen Indizes zu indizieren und sie mit räumlichen Abfragen abzurufen.Spatial features enables you to store geographical and geometrical data, index them using the spatial indexes, and retrieve the data using spatial queries.

  • Mit XML-Funktionen können Sie XML-Daten in Ihrer Datenbank speichern und indizieren und native XQuery/XPath-Vorgänge für die Arbeit mit XML-Daten verwenden.XML features enable you to store and index XML data in your database and use native XQuery/XPath operations to work with XML data. Azure SQL-Datenbank verfügt über eine spezielle integrierte XML-Abfrage-Engine, die XML-Daten verarbeitet.Azure SQL database has specialized built-in XML query engine that process XML data.

  • Schlüssel-Wert-Paare werden nicht explizit als spezielle Funktionen unterstützt, da sie nativ als zweispaltige Tabellen modelliert werden können.Key-value pairs are not explicitly supported as special features since key-value paris can be natively modeled as two-column tables.

    Hinweis

    Sie können JSON-Pfadausdrücke, XQuery/XPath-Ausdrücke, räumliche Funktionen und Graphabfrageausdrücke in ein und derselben Transact-SQL-Abfrage verwenden, um auf alle in der Datenbank gespeicherten Daten zuzugreifen.You can use JSON Path expression, XQuery/XPath expressions, spatial functions, and graph-query expressions in the same Transact-SQL query to access any data that you stored in the database. Darüber hinaus können alle Tools und Programmiersprachen, die Transact-SQL-Abfragen ausführen können, auch diese Abfrageschnittstelle verwenden, um auf Daten in mehreren Modellen zuzugreifen.Also, any tool or programming language that can execute Transact-SQL queries, can also use that query interface to access multi-model data. Dies ist der entscheidende Unterschied zu solchen Datenbanken mit mehreren Modellen – wie z.B. Azure Cosmos DB –, die spezielle APIs für die verschiedenen Datenmodelle bereitstellen.This is the key difference compared to the multi-model databases such as Azure Cosmos DB that provides specialized API for different data models.

In den folgenden Abschnitten erfahren Sie mehr über die wichtigsten Azure SQL-Datenbank-Funktionen für mehrere Modelle.In the following sections, you can learn about the most important multi-model capabilities of Azures SQL Database.

DiagrammfunktionenGraph features

Azure SQL-Datenbank bietet Graphdatenbankfunktionen, mit denen Sie n:n-Beziehungen in der Datenbank modellieren können.Azure SQL Database offers graph database capabilities to model many-to-many relationships in database. Ein Graph ist eine Sammlung aus Knoten (oder Scheitelpunkten) und Kanten (oder Beziehungen).A graph is a collection of nodes (or vertices) and edges (or relationships). Ein Knoten repräsentiert eine Entität (z.B. eine Person oder eine Organisation), und eine Kante repräsentiert eine Beziehung zwischen den beiden Knoten, die durch die Kante verbunden sind (z.B. „Gefällt mir“-Markierungen oder Freunde).A node represents an entity (for example, a person or an organization) and an edge represents a relationship between the two nodes that it connects (for example, likes or friends). Folgende Features machen eine Graphdatenbank einmalig:Here are some features that make a graph database unique:

  • Kanten oder Beziehungen sind Entitäten der ersten Klasse in einer Graphdatenbank, denen Attribute oder Eigenschaften zugeordnet sein können.Edges or relationships are first class entities in a Graph Database and can have attributes or properties associated with them.
  • Eine einzelne Kante kann flexibel mehrere Knoten in einer Graphdatenbank verbinden.A single edge can flexibly connect multiple nodes in a Graph Database.
  • Musterabgleiche und Navigationsabfragen über mehrere Hops lassen sich ganz einfach ausdrücken.You can express pattern matching and multi-hop navigation queries easily.
  • Transitive Abschlüsse und polymorphe Abfragen lassen sich ebenfalls sehr einfach ausdrücken.You can express transitive closure and polymorphic queries easily.

Graphbeziehungen und Graphabfragefunktionen sind in Transact-SQL integriert und profitieren von der Verwendung von SQL Server als grundlegendes Verwaltungssystem für die Datenbank.The graph relationships and graph query capabilities are integrated into Transact-SQL and receive the benefits of using SQL Server as the foundational database management system. Die Graphverarbeitung ist eine grundlegende Funktion der SQL Server-Datenbank-Engine, weitere Informationen über die Graphverarbeitung finden Sie also in entsprechenden Artikeln zu diesem Thema.Graph processing is the core SQL Server Database Engine feature, so you can find more info about the Graph processing there.

Verwenden einer GraphfunktionWhen to use a graph capability

Eine Graphdatenbank kann keine Ergebnisse erzielen, die nicht auch mit einer relationalen Datenbank erreicht werden können.There is nothing a graph database can achieve, which cannot be achieved using a relational database. Eine Graphdatenbank vereinfacht aber den Ausdruck bestimmter Abfragen.However, a graph database can make it easier to express certain queries. Bei der Entscheidung für die eine oder die andere Lösung spielen folgende Faktoren eine Rolle:Your decision to choose one over the other can be based on following factors:

  • Sie müssen hierarchische Daten modellieren, bei denen ein Knoten über mehrere übergeordnete Elemente verfügen kann, sodass HierarchyId nicht verwendet werden kann.Model hierarchical data where one node can have multiple parents, so HierarchyId cannot be used
  • Ihre Anwendung weist komplexe n:n-Beziehungen auf, und wenn die Anwendung weiterentwickelt wird, kommen neue Beziehungen hinzu.Model has Your application has complex many-to-many relationships; as application evolves, new relationships are added.
  • Sie müssen miteinander verbundene Daten und Beziehungen analysieren.You need to analyze interconnected data and relationships.

JSON-FunktionenJSON features

In Azure SQL-Datenbank können Sie Daten analysieren und abfragen, die im JavaScript Object Notation-Format (JSON) dargestellt werden, und Ihre relationalen Daten als JSON-Text exportieren.Azure SQL Database lets you parse and query data represented in JavaScript Object Notation (JSON) format, and export your relational data as JSON text.

JSON ist ein gängiges Datenformat zum Austauschen von Daten in modernen Web- und mobilen Anwendungen.JSON is a popular data format used for exchanging data in modern web and mobile applications. JSON wird auch zum Speichern von halbstrukturierten Daten in Protokolldateien oder in NoSQL-Datenbanken wie Azure Cosmos DB verwendet.JSON is also used for storing semi-structured data in log files or in NoSQL databases like Azure Cosmos DB. Viele REST-Webdienste geben Ergebnisse als JSON-Text formatiert zurück oder akzeptieren Daten im JSON-Format.Many REST web services return results formatted as JSON text or accept data formatted as JSON. Die meisten Azure-Dienste, z.B. Azure Search, Azure Storageund Azure Cosmos DB verfügen über REST-Endpunkte, die Daten im JSON-Format zurückgeben oder verarbeiten.Most Azure services such as Azure Search, Azure Storage, and Azure Cosmos DB have REST endpoints that return or consume JSON.

Mit Azure SQL-Datenbank können Sie problemlos mit JSON-Daten arbeiten und Ihre Datenbank in moderne Dienste integrieren.Azure SQL Database lets you work with JSON data easily and integrate your database with modern services. Azure SQL-Datenbank stellt die folgenden Funktionen für das Arbeiten mit JSON-Daten bereit:Azure SQL Database provides the following functions for working with JSON data:

JSON-Funktionen

Mithilfe der integrierten Funktionen JSON_VALUE, JSON_QUERY und ISJSON können Sie Daten aus einem JSON-Text extrahieren oder überprüfen, ob er ordnungsgemäß formatiert ist.If you have JSON text, you can extract data from JSON or verify that JSON is properly formatted by using the built-in functions JSON_VALUE, JSON_QUERY, and ISJSON. Mit der Funktion JSON_MODIFY können Sie einen Wert im JSON-Text aktualisieren.The JSON_MODIFY function lets you update value inside JSON text. Bei komplexeren Abfragen und Analysen kann die Funktion OPENJSON ein Array von JSON-Objekten in eine Reihe von Zeilen umwandeln.For more advanced querying and analysis, OPENJSON function can transform an array of JSON objects into a set of rows. Für das zurückgegebene Resultset kann eine beliebige SQL-Abfrage ausgeführt werden.Any SQL query can be executed on the returned result set. Schließlich können Sie mit einer FOR JSON -Klausel in den relationalen Tabellen gespeicherte Daten als JSON-Text formatieren.Finally, there is a FOR JSON clause that lets you format data stored in your relational tables as JSON text.

Weitere Informationen finden Sie unter Erste Schritte mit JSON-Features in der Azure SQL-Datenbank.For more information, see How to work with JSON data in azure SQL Database. JSON ist eine grundlegende Funktion der SQL Server-Datenbank-Engine, weitere Informationen darüber finden Sie also in entsprechenden Artikeln zu diesem Thema.JSON is core SQL Server Database Engine feature, so you can find more info about the JSON feature there.

Verwenden einer JSON-FunktionWhen to use a JSON capability

In bestimmten Szenarien können Dokumentmodelle statt relationaler Modelle verwendet werden:Document models can be used instead of the relational models in some specific scenarios:

  • Ein hohes Maß an Normalisierung des Schemas bringt keine nennenswerten Vorteile, da Sie auf alle Felder der Objekte gleichzeitig zugreifen oder normalisierte Teile der Objekte nie aktualisieren.High-normalization of schema doesn't bring significant benefits because you access the all fields of objects at once, or you never update normalized parts of the objects. Das normalisierte Modell erhöht jedoch aufgrund der großen Anzahl von Tabellen, die Sie zum Abrufen der Daten verknüpfen müssen, die Komplexität Ihrer Abfragen.However, the normalized model increases the complexity of your queries due to the large number of tables that you need to join to get the data.
  • Sie arbeiten mit Anwendungen, die nativ JSON-Dokumente als Kommunikations- oder Datenmodell verwenden, und Sie möchten keine zusätzlichen Ebenen einführen, um relationale Daten in JSON und umgekehrt zu transformieren.You are working with the applications that natively use JSON documents are communication or data models, and you don't want to introduce additional layers that transforms relational data to JSON and vice versa.
  • Sie müssen Ihr Datenmodell vereinfachen, indem Sie untergeordnete Tabellen oder Entität-Objekt-Wert-Muster denormalisieren.You need to simplify your data model by de-normalizing child tables or Entity-Object-Value patterns.
  • Sie müssen im JSON-Format gespeicherte Daten laden oder exportieren, ohne ein weiteres Tool zum Analysieren der Daten zu verwenden.You need to load or export data stored in JSON format without some additional tool that parses the data.

Räumliche FunktionenSpatial features

Räumliche Daten repräsentieren Daten zur physischen Position und Form geometrischer Objekte.Spatial data represents information about the physical location and shape of geometric objects. Diese Objekte können Punktpositionen oder komplexere Objekte wie Länder/Regionen, Straßen oder Seen sein.These objects can be point locations or more complex objects such as countries/regions, roads, or lakes.

Azure SQL-Datenbank unterstützt zwei Arten von räumlichen Daten: geometrische und geografische.Azure SQL Database supports two spatial data types - the geometry data type and the geography data type.

  • Der geometrische Datentyp stellt Daten in einem euklidischen (flachen) Koordinatensystem dar.The geometry type represents data in a Euclidean (flat) coordinate system.
  • Der geografische Datentyp stellt Daten in einem Erdkugel-Koordinatensystem dar.The geography type represents data in a round-earth coordinate system.

Es gibt eine Reihe von räumlichen Objekten, die in Azure SQL-Datenbanken verwendet werden können, z. B. Point, LineString, Polygon usw.There is a number of Spatial objects that can be used in Azure SQL database such as Point, LineString, Polygon, etc.

Azure SQL-Datenbank stellt auch spezielle räumliche Indizes bereit, mit denen Sie die Leistung Ihrer räumlichen Abfragen verbessern können.Azure SQL Database also provides specialized Spatial indexes that can be used to improve performance of your spatial queries.

Die Unterstützung räumlicher Funktionen ist eine grundlegende Funktion der SQL Server-Datenbank-Engine, weitere Informationen darüber finden Sie also in entsprechenden Artikeln zu diesem Thema.Spatial support is core SQL Server Database Engine feature, so you can find more info about the spatial feature there.

XML-FunktionenXML features

SQL Server stellt eine leistungsstarke Plattform zur Entwicklung umfassender Anwendungen für die Verwaltung halbstrukturierter Daten bereit.SQL Server provides a powerful platform for developing rich applications for semi-structured data management. Die Unterstützung für XML ist in alle Komponenten von SQL Server integriert und umfasst Folgendes:Support for XML is integrated into all the components in SQL Server and includes the following:

  • Den XML-Datentyp.The xml data type. XML-Werte können nativ in einer XML-Datentypspalte gespeichert werden, die untypisiert gelassen oder gemäß einer Sammlung von XML-Schemas typisiert werden kann.XML values can be stored natively in an xml data type column that can be typed according to a collection of XML schemas, or left untyped. Sie können die XML-Spalte indizieren.You can index the XML column.
  • Die Möglichkeit, eine XQuery-Abfrage für in Spalten gespeicherte XML-Daten und Variablen des XML-Typs anzugeben.The ability to specify an XQuery query against XML data stored in columns and variables of the xml type. XQuery-Funktionen können in jeder Transact-SQL-Abfrage verwendet werden, die auf das in Ihrer Datenbank verwendete Datenmodell zugreift.XQuery functionalities can be used in any Transact-SQL query that access any data model that you use in your database.
  • Automatische Indizierung aller Elemente in XML-Dokumenten mit dem primären XML-Index oder Angeben der genauen Pfade für die Indizierung mit dem sekundären XML-Index.Automatically index all elements in XML documents using primary XML index or specify the exact paths that should be indexed using secondary XML index.
  • OPENROWSET für das Massenladen von XML-Daten.OPENROWSET that allows bulk loading of XML data.
  • Transformation relationaler Daten in das XML-Format.Transform relational data to XML format.

XML ist eine grundlegende Funktion der SQL Server-Datenbank-Engine, weitere Informationen darüber finden Sie also in entsprechenden Artikeln zu diesem Thema.XML is core SQL Server Database Engine feature, so you can find more info about the XML feature there.

Verwenden einer XML-FunktionWhen to use an XML capability

In bestimmten Szenarien können Dokumentmodelle statt relationaler Modelle verwendet werden:Document models can be used instead of the relational models in some specific scenarios:

  • Ein hohes Maß an Normalisierung des Schemas bringt keine nennenswerten Vorteile, da Sie auf alle Felder der Objekte gleichzeitig zugreifen oder normalisierte Teile der Objekte nie aktualisieren.High-normalization of schema doesn't bring significant benefits because you access the all fields of objects at once, or you never update normalized parts of the objects. Das normalisierte Modell erhöht jedoch aufgrund der großen Anzahl von Tabellen, die Sie zum Abrufen der Daten verknüpfen müssen, die Komplexität Ihrer Abfragen.However, the normalized model increases the complexity of your queries due to the large number of tables that you need to join to get the data.
  • Sie arbeiten mit Anwendungen, die nativ XML-Dokumente als Kommunikations- oder Datenmodell verwenden, und Sie möchten keine zusätzlichen Ebenen einführen, um relationale Daten in XML und umgekehrt zu transformieren.You are working with the applications that natively use XML documents are communication or data models, and you don't want to introduce additional layers that transforms relational data to XML and vice versa.
  • Sie müssen Ihr Datenmodell vereinfachen, indem Sie untergeordnete Tabellen oder Entität-Objekt-Wert-Muster denormalisieren.You need to simplify your data model by de-normalizing child tables or Entity-Object-Value patterns.
  • Sie müssen im XML-Format gespeicherte Daten laden oder exportieren, ohne ein weiteres Tool zum Analysieren der Daten zu verwenden.You need to load or export data stored in XML format without some additional tool that parses the data.

Schlüssel-Wert-PaareKey-value pairs

Azure SQL-Datenbank besitzt keine speziellen Typen oder Strukturen, die Schlüssel-Wert-Paar unterstützen, da Schlüssel-Wert-Strukturen nativ als standardmäßige relationale Tabellen dargestellt werden können:Azure SQL Database don't have specialized types or structures that support key-value pairs since key-value structures can be natively represented as standard relational tables:

CREATE TABLE Collection (
  Id int identity primary key,
  Data nvarchar(max)
)

Sie können diese Schlüssel-Wert-Struktur ohne jede Einschränkung an Ihre Anforderungen anpassen.You can customize this key-value structure to fit your needs without any constraints. Ein Beispiel: Ein Wert kann ein XML-Dokument anstelle des nvarchar(max)-Typs sein. Wenn der Wert ein JSON-Dokument ist, können Sie eine CHECK-Einschränkung einfügen, die die Gültigkeit des JSON-Inhalts überprüft.As an example, the value can be XML document instead of nvarchar(max) type, if the value is JSON document, you can put CHECK constraint that verifies the validity of JSON content. Sie können eine beliebige Anzahl von Werten für einen einzigen Schlüssel in den zusätzlichen Spalten hinzufügen, berechnete Spalten und Indizes hinzufügen, um den Datenzugriff zu vereinfachen und zu optimieren, die Tabelle als speicheroptimierte reine Schematabelle definieren, um die Leistung zu verbessern, und vieles mehr.You can put any number of values related to one key in the additional columns, add computed columns and indexes to simplify and optimize data access, define the table as memory/optimized schema-only table to get better performance, etc.

Ein Praxisbeispiel für die effektive Nutzung des relationalen Modells als Schlüssel-Wert-Paar-Lösung finden Sie im Blogbeitrag How bwin is using In-Memory OLTP to achieve unprecedented performance and scale (Wie bwin In-Memory-OLTP für beispiellose Leistung und Skalierung nutzt). In diesem Beitrag wird die ASP.NET-Cachinglösung erläutert, mit der das Unternehmen 1.200.000 Batches pro Sekunde verarbeitet.See how BWin is using In-Memory OLTP to achieve unprecedented performance and scale for their ASP.NET caching solution that achieved 1.200.000 batches per seconds, as an example how relational model can be effectively used as key-value pair solution in practice.

Nächste SchritteNext steps

Azure SQL-Datenbank-Funktionen für mehrere Modelle sind ebenfalls grundlegende Features der SQL Server-Datenbank-Engine, die von Azure SQL-Datenbank und SQL Server gemeinsam genutzt werden.Multi-model capabilities in Azure SQL Databases are also the core SQL Server Database Engine features that are shared between Azure SQL Database and SQL Server. Weitere Informationen zu diesen Features finden Sie auf den Dokumentationsseiten zu relationalen SQL-Datenbanken:To learn more details about these features, visit the SQL Relational database documentation pages: