Funcionalidades de varios modelos de Azure SQL Database e Instancia administrada de SQLMulti-model capabilities of Azure SQL Database & SQL Managed Instance

SE APLICA A: Azure SQL Database Azure SQL Managed Instance

Las bases de datos de varios modelos permiten almacenar y trabajar con datos representados en varios formatos como datos relacionales, grafos, documentos JSON o XML, pares clave-valor, etc.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, and so on.

Cuándo usar las funcionalidades multimodeloWhen to use multi-model capabilities

La familia de productos de Azure SQL está diseñada para trabajar con el modelo relacional que proporciona el mejor rendimiento en la mayoría de los casos para diversas aplicaciones de uso general.The Azure SQL family of products are 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. Sin embargo, la familia de productos de Azure SQL no se limita únicamente a los datos relacionales.However, the Azure SQL family of products are not limited to relational-data only. La familia de productos de Azure SQL permite usar una variedad de formatos no relacionales que están estrechamente integrados en el modelo relacional.The Azure SQL family of products enable you to use a variety of non-relational formats that are tightly integrated into the relational model. Considere la posibilidad de usar funcionalidades de varios modelos de la familia de productos de Azure SQL en los casos siguientes:You should consider using multi-model capabilities of the Azure SQL family of products in the following cases:

  • Tiene cierta información o estructuras que se ajustan mejor a para los modelos de NoSQL y no quiere usar una base de datos de NoSQL independiente.You have some information or structures that are better fit for NoSQL models and you don't want to use separate NoSQL database.
  • La mayoría de los datos es adecuada para el modelo relacional y necesita modelar algunas partes de los datos en el estilo de NoSQL.A majority of your data is suitable for relational model, and you need to model some parts of your data in NoSQL style.
  • Quiere aprovechar el amplio lenguaje Transact-SQL para consultar y analizar datos relacionales y NoSQL, e integrarlos con una variedad de herramientas y aplicaciones que pueden usar el lenguaje SQL.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.
  • Quiere aplicar características de base de datos, como tecnologías en memoria para mejorar el rendimiento del análisis o el procesamiento de las estructuras de datos NoSQL, usar la replicación transaccional o réplicas legibles para crear la copia de los datos en el otro lugar y descargar algunas cargas de trabajo de análisis desde la base de datos principal.You want to apply database features such as in-memory technologies to improve performance of your analytic or processing of your NoSQL data structures, use transactional replication or readable replicas to create copy of your data on the other place and offload some analytic workloads from the primary database.

Información generalOverview

La familia de productos de Azure SQL proporciona las siguientes características de varios modelos:The Azure SQL family of products provide the following multi-model features:

  • Las características de Graph permiten representar los datos como un conjunto de nodos y bordes, además de usar las consultas de Transact-SQL estándares mejoradas con el operador MATCH de grafos para consultar los datos del grafo.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.

  • Las características de JSON permiten colocar documentos JSON en tablas, transformar datos relacionales para documentos JSON y viceversa.JSON features enable you to put JSON documents in tables, transform relational data to JSON documents and vice versa. Puede usar el lenguaje Transact-SQL estándar mejorado con las funciones JSON para analizar documentos y usar índices no agrupados, índices de almacén de columnas o tablas optimizadas para memoria, a fin de optimizar las consultas.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.

  • Las características espaciales permiten almacenar datos geográficos y geométricos, indexarlos con los índices espaciales y recuperar los datos mediante consultas espaciales.Spatial features enables you to store geographical and geometrical data, index them using the spatial indexes, and retrieve the data using spatial queries.

  • Las características XML permiten almacenar e indexar datos XML en la base de datos y utilizar operaciones XQuery y XPath nativas para trabajar con datos XML.XML features enable you to store and index XML data in your database and use native XQuery/XPath operations to work with XML data. La familia de productos de Azure SQL tiene un motor de consultas XML especializado integrado que procesa datos XML.The Azure SQL family of products have a specialized built-in XML query engine that process XML data.

  • Los pares clave-valor no se admiten de forma explícita como características especiales, ya que se pueden modelar de forma nativa como tablas de dos columnas.Key-value pairs are not explicitly supported as special features since key-value pairs can be natively modeled as two-column tables.

    Nota

    Puede usar la expresión de ruta de acceso JSON, las expresiones XQuery y XPath, las funciones espaciales y las expresiones de consulta de grafos en la misma consulta de Transact-SQL para acceder a los datos almacenados en la base de datos.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. Además, cualquier herramienta o lenguaje de programación que puede ejecutar consultas de Transact-SQL, también puede usar esa interfaz de consulta para obtener acceso a datos de varios modelos.Also, any tool or programming language that can execute Transact-SQL queries, can also use that query interface to access multi-model data. Esta es la diferencia clave en comparación con las bases de datos de varios modelos como Azure Cosmos DB que proporciona una API especializada para diferentes modelos de datos.This is the key difference compared to the multi-model databases such as Azure Cosmos DB that provides specialized API for different data models.

En las secciones siguientes, aprenderá las funcionalidades de varios modelos más importantes de la familia de productos de Azure SQL.In the following sections, you can learn about the most important multi-model capabilities of the Azure SQL family of products .

Características de grafosGraph features

La familia de productos de Azure SQL ofrece funcionalidades de base de datos de grafos para modelar las relaciones de varios a varios en la base de datos.The Azure SQL family of products offer graph database capabilities to model many-to-many relationships in database. Un grafo es una colección de nodos (o vértices) y bordes (o relaciones).A graph is a collection of nodes (or vertices) and edges (or relationships). Un nodo representa una entidad (por ejemplo, una persona o una organización) y un borde representa una relación entre los dos nodos que conecta (por ejemplo, "Me gusta" o amigos).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). Estas son algunas características que hacen que una base de datos de grafos sea única:Here are some features that make a graph database unique:

  • Los bordes o las relaciones son entidades de primera clase en una base de datos de grafos y pueden tener atributos o propiedades asociados a ellas.Edges or relationships are first class entities in a Graph Database and can have attributes or properties associated with them.
  • Un solo borde puede conectar flexiblemente varios nodos en una base de datos de grafos.A single edge can flexibly connect multiple nodes in a Graph Database.
  • Puede expresar fácilmente coincidencias de patrones y consultas de navegación en saltos múltiples.You can express pattern matching and multi-hop navigation queries easily.
  • Puede expresar fácilmente consultas polimórficas y cierres transitivos.You can express transitive closure and polymorphic queries easily.

Las relaciones de grafos y funcionalidades de consulta de grafos están integradas en Transact-SQL y reciben las ventajas de usar el motor de base de datos de SQL Server como sistema fundamental de administración de base de datos.The graph relationships and graph query capabilities are integrated into Transact-SQL and receive the benefits of using the SQL Server database engine as the foundational database management system.

Cuándo usar una funcionalidad de grafoWhen to use a graph capability

No hay nada que una base de datos de grafos puede conseguir, que no se puede lograr mediante una base de datos relacional.There is nothing a graph database can achieve, which cannot be achieved using a relational database. Sin embargo, una base de datos de grafos puede facilitar la expresión de determinadas consultas.However, a graph database can make it easier to express certain queries. La decisión para elegir una u otra puede basarse en los siguientes factores:Your decision to choose one over the other can be based on following factors:

  • Datos jerárquicos del modelo donde un nodo puede tener varios elementos primarios, por lo que no se puede usar HierarchyId.Model hierarchical data where one node can have multiple parents, so HierarchyId cannot be used
  • La aplicación tiene relaciones complejas de varios a varios; a medida que la aplicación evoluciona, se agregan nuevas relaciones.Model has Your application has complex many-to-many relationships; as application evolves, new relationships are added.
  • Necesita analizar las relaciones y los datos interconectados.You need to analyze interconnected data and relationships.

Característica de JSONJSON features

La familia de productos de Azure SQL permite analizar y consultar datos representados en formato de notación de objetos JavaScript (JSON), y exportar los datos relacionales como texto JSON.The Azure SQL family of products let you parse and query data represented in JavaScript Object Notation (JSON) format, and export your relational data as JSON text.

JSON es un formato de datos conocido que se usa para intercambiar datos en aplicaciones web y móviles modernas.JSON is a popular data format used for exchanging data in modern web and mobile applications. JSON también se utiliza para almacenar datos semiestructurados en archivos de registro o en bases de datos NoSQL como Azure Cosmos DB.JSON is also used for storing semi-structured data in log files or in NoSQL databases like Azure Cosmos DB. Muchos servicios web REST devuelven resultados con formato de texto JSON o bien aceptan datos con este formato.Many REST web services return results formatted as JSON text or accept data formatted as JSON. La mayoría de los servicios de Azure, como Azure Cognitive Search, Azure Storage y Azure Cosmos DB, tienen puntos de conexión REST que devuelven o consumen JSON.Most Azure services such as Azure Cognitive Search, Azure Storage, and Azure Cosmos DB have REST endpoints that return or consume JSON.

La familia de productos de Azure SQL le permite trabajar fácilmente con datos JSON e integrar su base de datos con servicios modernos; además, proporciona las siguientes funciones para trabajar con datos JSON:The Azure SQL family of products let you work with JSON data easily and integrate your database with modern services, and provides the following functions for working with JSON data:

Funciones JSON

Si tiene texto JSON, puede extraer datos de JSON o comprobar que el formato JSON sea correcto con las funciones integradas JSON_VALUE, JSON_QUERY y ISJSON.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. La función JSON_MODIFY le permite actualizar valores dentro del texto JSON.The JSON_MODIFY function lets you update value inside JSON text. Para consultas y análisis más avanzados, la función OPENJSON puede transformar una matriz de objetos JSON en un conjunto de filas.For more advanced querying and analysis, OPENJSON function can transform an array of JSON objects into a set of rows. Se puede ejecutar cualquier consulta SQL en el conjunto de resultados devuelto.Any SQL query can be executed on the returned result set. Por último, hay una cláusula FOR JSON que permite dar formato de texto JSON a los datos almacenados en las tablas relacionales.Finally, there is a FOR JSON clause that lets you format data stored in your relational tables as JSON text.

Para más información, consulte Cómo trabajar con datos JSON.For more information, see How to work with JSON data. JSON es una característica principal del motor de base de datos de SQL Server.JSON is a core SQL Server database engine feature.

Cuándo usar una funcionalidad de JSONWhen to use a JSON capability

Los modelos de documento se pueden utilizar en lugar de los modelos relacionales en algunos escenarios concretos:Document models can be used instead of the relational models in some specific scenarios:

  • La alta normalización del esquema no ofrece ventajas significativas, ya que accede a todos los campos de objetos a la vez o nunca actualiza las partes normalizadas de los objetos.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. Sin embargo, el modelo normalizado aumenta la complejidad de las consultas debido al gran número de tablas que se deben unir para obtener los datos.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.
  • Está trabajando con las aplicaciones que usan de forma nativa los documentos de JSON como modelos de datos o comunicación y no desea introducir capas adicionales que transforman los datos relacionales en JSON y viceversa.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.
  • Se necesita simplificar el modelo de datos anulando la normalización de las tablas secundarias o los patrones de valor de objeto de entidad.You need to simplify your data model by de-normalizing child tables or Entity-Object-Value patterns.
  • Deberá cargar o exportar los datos almacenados en formato JSON sin alguna herramienta adicional que analice los datos.You need to load or export data stored in JSON format without some additional tool that parses the data.

Características espacialesSpatial features

Los datos espaciales representan información sobre la ubicación física y la forma de objetos geométricos.Spatial data represents information about the physical location and shape of geometric objects. Estos objetos pueden ser ubicaciones de punto u objetos más complejos, como países o regiones, carreteras o lagos.These objects can be point locations or more complex objects such as countries/regions, roads, or lakes.

Los dos tipos de datos espaciales admitidos son:The two supported spatial data types:

  • El tipo geométrico representa los datos en un sistema de coordenadas euclidiano (plano).The geometry type represents data in a Euclidean (flat) coordinate system.
  • El tipo geográfico representa los datos en un sistema de coordenadas elipsoidales.The geography type represents data in a round-earth coordinate system.

Hay una serie de objetos espaciales que se pueden usar en la familia de productos de Azure SQL, que permiten analizar y consultar los datos representados en formato de notación de objetos JavaScript (JSON) y exportar los datos relacionales como texto JSON.There are a number of Spatial objects that can be used in the Azure SQL family of products let you parse and query data represented in JavaScript Object Notation (JSON) format, and export your relational data as JSON text. Por ejemplo, Point, LineString, Polygon, etc.such as Point, LineString, Polygon, and so on.

La familia de productos de Azure SQL proporciona también índices espaciales especializados que se pueden usar para mejorar el rendimiento de las consultas espaciales.The Azure SQL family of products also provide specialized Spatial indexes that can be used to improve performance of your spatial queries.

La compatibilidad espacial es una característica fundamental del motor de base de datos de SQL Server.Spatial support is a core SQL Server database engine feature.

Características de XMLXML features

El motor de base de datos de SQL Server proporciona una plataforma eficaz para desarrollar aplicaciones completas para la administración de datos semiestructurados.The SQL Server database engine provides a powerful platform for developing rich applications for semi-structured data management. La compatibilidad con XML está integrada en todos los componentes del motor de base de datos e incluye lo siguiente:Support for XML is integrated into all the components of the database engine and includes the following:

  • El tipo de datos XML.The xml data type. Los valores XML se pueden almacenar de forma nativa en una columna de tipo de datos xml cuyo tipo se puede determinar según una colección de esquemas XML, o se puede dejar sin tipo.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. Puede indexar la columna XML.You can index the XML column.
  • La capacidad de especificar una consulta con datos XQuery almacenados en columnas y variables del tipo xml.The ability to specify an XQuery query against XML data stored in columns and variables of the xml type. Las funcionalidades de XQuery pueden usarse en cualquier consulta de Transact-SQL que tiene acceso a cualquier modelo de datos que se utiliza en la base de datos.XQuery functionalities can be used in any Transact-SQL query that access any data model that you use in your database.
  • Indexe automáticamente todos los elementos en documentos XML mediante el índice XML principal o especifique las rutas de acceso exactas que se deben indexar mediante el índice XML secundario.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 que permite la carga masiva de datos XML.OPENROWSET that allows bulk loading of XML data.
  • Transforme datos relacionales en formato XML.Transform relational data to XML format.

XML es una característica fundamental del motor de base de datos de SQL Server.XML is a core SQL Server database engine feature.

Cuándo usar una funcionalidad de XMLWhen to use an XML capability

Los modelos de documento se pueden utilizar en lugar de los modelos relacionales en algunos escenarios concretos:Document models can be used instead of the relational models in some specific scenarios:

  • La alta normalización del esquema no ofrece ventajas significativas, ya que accede a todos los campos de objetos a la vez o nunca actualiza las partes normalizadas de los objetos.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. Sin embargo, el modelo normalizado aumenta la complejidad de las consultas debido al gran número de tablas que se deben unir para obtener los datos.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.
  • Está trabajando con las aplicaciones que usan de forma nativa los documentos de XML como modelos de datos o comunicación y no desea introducir capas adicionales que transforman los datos relacionales en XML y viceversa.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.
  • Se necesita simplificar el modelo de datos anulando la normalización de las tablas secundarias o los patrones de valor de objeto de entidad.You need to simplify your data model by de-normalizing child tables or Entity-Object-Value patterns.
  • Deberá cargar o exportar los datos almacenados en formato XML sin alguna herramienta adicional que analice los datos.You need to load or export data stored in XML format without some additional tool that parses the data.

Pares de clave-valorKey-value pairs

La familia de productos de Azure SQL no tiene tipos ni estructuras especializados que admitan pares de clave-valor, puesto que las estructuras de clave-valor pueden representarse de forma nativa como tablas relacionales estándar:The Azure SQL family of products 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)
)

Puede personalizar esta estructura clave-valor para satisfacer sus necesidades sin restricciones.You can customize this key-value structure to fit your needs without any constraints. Por ejemplo, el valor puede ser el documento XML en lugar del tipo nvarchar(max), si el valor es el documento JSON, puede poner la restricción CHECK que comprueba la validez del contenido JSON.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. Puede colocar cualquier número de valores relacionados con una clave en las columnas adicionales, agregar columnas calculadas e índices para simplificar y optimizar el acceso a datos, definir la tabla como tabla de solo esquema optimizado y de memoria para obtener un mejor rendimiento, etc.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.

Consulte Cómo BWin usa OLTP en memoria para lograr un rendimiento y escala sin precedentes para su solución de almacenamiento en caché de ASP.NET que logró 1.200.000 lotes por segundo, como ejemplo de cómo un modelo relacional se puede usar eficazmente como solución de par clave-valor en la práctica.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.

Pasos siguientesNext steps

Las funcionalidades de varios modelos de la familia de productos de Azure SQL también son las características fundamentales del motor de base de datos de SQL Server que se comparten entre la familia de productos de Azure SQL.Multi-model capabilities in the Azure SQL family of products are also the core SQL Server database engine features that are shared among the Azure SQL family of products. Para obtener más información acerca de estas características, visite las páginas de documentación de base de datos relacional de SQL:To learn more details about these features, visit the SQL Relational database documentation pages: