Partilhar via


Capacidades multimodelo

Aplica-se a:Banco de Dados SQL do AzureInstância Gerenciada SQL do Azurebanco de dados SQL no Fabric

Bases de dados multimodelo permitem-lhe armazenar e trabalhar com dados em múltiplos formatos, como dados relacionais, grafos, documentos JSON ou XML, dados espaciais e pares-chave-valor.

A família de produtos Azure SQL utiliza um modelo relacional que proporciona o melhor desempenho para uma variedade de aplicações de uso geral. No entanto, produtos Azure SQL como Azure SQL Database e SQL Managed Instance não se limitam a dados relacionais. Permitem-lhe usar formatos não relacionais que estão fortemente integrados no modelo relacional.

Considere usar as capacidades multimodelo do Azure SQL nos seguintes casos:

  • Tens alguma informação ou estruturas que se ajustam melhor a modelos NoSQL e não queres usar uma base de dados NoSQL separada.
  • A maioria dos seus dados é adequada para um modelo relacional, e precisa de modelar algumas partes dos seus dados num estilo NoSQL.
  • Queres usar a linguagem Transact-SQL para consultar e analisar dados relacionais e NoSQL, e depois integrar esses dados com ferramentas e aplicações que possam usar a linguagem SQL.
  • Quer aplicar funcionalidades de base de dados, como tecnologias em memória , para melhorar o desempenho das suas análises ou o processamento das suas estruturas de dados NoSQL. Pode usar replicação transacional ou réplicas legíveis para criar cópias dos seus dados e descarregar algumas cargas analíticas da base de dados principal.

As secções seguintes descrevem as capacidades multimodelo mais importantes do Azure SQL.

Observação

Pode usar expressões JSONPath, expressões XQuery/XPath, funções espaciais e expressões de consulta de grafo na mesma consulta Transact-SQL para aceder a quaisquer dados que tenha armazenado na base de dados. Qualquer ferramenta ou linguagem de programação que consiga executar consultas Transact-SQL pode também usar essa interface de consulta para aceder a dados multimodelo. Esta é a principal diferença em relação a bases de dados multimodelo, como o Azure Cosmos DB, que fornecem APIs especializadas para modelos de dados.

Funcionalidades de gráficos

Os produtos Azure SQL oferecem capacidades de base de dados de grafos para modelar relações muitos-para-muitos numa base de dados. Um grafo é uma coleção de nós (ou vértices) e arestas (ou relações). Um nó representa uma entidade (por exemplo, uma pessoa ou uma organização). Uma aresta representa uma relação entre os dois nós que liga (por exemplo, gostos ou amigos).

Aqui estão alguns recursos que tornam um banco de dados gráfico exclusivo:

  • As arestas são entidades de primeira classe numa base de dados de grafos. Podem ter atributos ou propriedades associados.
  • Uma única aresta pode ligar de forma flexível múltiplos nós numa base de dados de grafos.
  • Você pode expressar correspondência de padrões e consultas de navegação multi-hop facilmente.
  • Você pode expressar fechamento transitivo e consultas polimórficas facilmente.

As relações de grafos e as capacidades de consulta de grafos estão integradas na Transact-SQL e beneficiam da utilização do motor de base de dados SQL Server como sistema fundamental de gestão de bases de dados. As funcionalidades do grafo utilizam consultas Transact-SQL padrão melhoradas com o operador do grafo MATCH para consultar os dados do grafo.

Uma base de dados relacional pode alcançar tudo o que uma base de dados de grafos consegue. No entanto, uma base de dados de grafos pode facilitar a expressão de certas consultas. A sua decisão de escolher um em detrimento do outro pode basear-se nos seguintes fatores:

  • Precisas de modelar dados hierárquicos onde um nó pode ter múltiplos pais, por isso não podes usar o tipo de dados hierarchyId.
  • A sua aplicação tem relações complexas de muitos-para-muitos. À medida que a aplicação evolui, novas relações são adicionadas.
  • Você precisa analisar dados e relacionamentos interconectados.
  • Queres usar condições de pesquisa T-SQL específicas para grafos, como SHORTEST_PATH.

Funcionalidades JSON

Nos produtos Azure SQL, pode analisar e consultar dados representados no formato JavaScript Object Notation (JSON ) e exportar os seus dados relacionais como texto JSON. JSON é uma funcionalidade central do motor de base de dados SQL Server.

Funcionalidades JSON permitem-lhe colocar documentos JSON em tabelas, transformar dados relacionais em documentos JSON e transformar documentos JSON em dados relacionais. Pode usar a linguagem Transact-SQL padrão melhorada com funções JSON para analisar documentos. Também pode usar índices não agrupados, índices de coluna ou tabelas otimizadas para memória para otimizar as suas consultas.

JSON é um formato de dados popular para a troca de dados em aplicações web e móveis modernas. O JSON também é utilizado para armazenar dados semiestruturados em ficheiros de registo ou em bases de dados NoSQL. Muitos serviços web REST devolvem resultados formatados como texto JSON ou aceitam dados formatados como JSON.

A maioria dos serviços Azure tem endpoints REST que retornam ou consomem JSON. Estes serviços incluem Azure Cognitive Search, Azure Storage e Azure Cosmos DB.

Se tiver texto JSON, pode extrair dados do JSON ou verificar que o JSON está corretamente formatado usando as funções incorporadas JSON_VALUE, JSON_QUERY e ISJSON. As outras funções são:

  • JSON_MODIFY: Permite atualizar valores dentro do texto JSON.
  • OPENJSON: Pode transformar um array de objetos JSON num conjunto de linhas, para consultas e análises mais avançadas. Qualquer consulta SQL pode ser executada no conjunto de resultados devolvido.
  • PARA JSON: Permite formatar dados armazenados nas tabelas relacionais como texto JSON.

Diagrama que ilustra funções JSON.

Para mais informações, consulte Como trabalhar com dados JSON.

Pode usar modelos de documentos em vez dos modelos relacionais em alguns cenários específicos:

  • Uma alta normalização do esquema não traz benefícios significativos porque acedes a todos os campos dos objetos ao mesmo tempo, ou nunca atualizas as partes normalizadas dos objetos. No entanto, o modelo normalizado aumenta a complexidade das suas consultas porque precisa de juntar um grande número de tabelas para obter os dados.
  • Está a trabalhar com aplicações que usam documentos JSON nativamente para comunicação ou modelos de dados, e não quer introduzir mais camadas que transformem dados relacionais em JSON e vice-versa.
  • Precisa de simplificar o seu modelo de dados desnormalizando tabelas filhas ou padrões Entidade-Objeto-Valor.
  • É necessário carregar ou exportar dados armazenados em formato JSON sem uma ferramenta adicional que analise os dados.

Funcionalidades XML

As funcionalidades XML permitem-lhe armazenar e indexar dados XML na sua base de dados e utilizar operações nativas XQuery/XPath para trabalhar com dados XML. Os produtos Azure SQL têm um tipo de dado XML especializado incorporado e funções de consulta que processam dados XML.

O motor de base de dados SQL Server fornece uma plataforma poderosa para desenvolver aplicações para gerir dados semiestruturados. O suporte para XML está integrado em todos os componentes do motor da base de dados e inclui:

  • A capacidade de armazenar valores XML nativamente numa coluna de tipos de dados XML que podem ser tipados de acordo com uma coleção de esquemas XML ou deixados sem tipos. Podes indexar a coluna XML.
  • A capacidade de especificar uma consulta XQuery contra dados XML armazenados em colunas e variáveis do tipo XML. Pode usar as funcionalidades do XQuery em qualquer consulta Transact-SQL que aceda a um modelo de dados que utiliza na sua base de dados.
  • Indexação automática de todos os elementos em documentos XML utilizando o índice XML primário. Ou pode especificar os caminhos exatos que devem ser indexados usando o índice XML secundário.
  • OPENROWSET, que permite o carregamento em massa de dados XML.
  • A capacidade de transformar dados relacionais em formato XML.

Pode usar modelos de documentos em vez dos modelos relacionais em alguns cenários específicos:

  • Uma alta normalização do esquema não traz benefícios significativos porque acedes a todos os campos dos objetos ao mesmo tempo, ou nunca atualizas as partes normalizadas dos objetos. No entanto, o modelo normalizado aumenta a complexidade das suas consultas porque precisa de juntar um grande número de tabelas para obter os dados.
  • Está a trabalhar com aplicações que usam documentos XML nativamente para comunicação ou modelos de dados, e não quer introduzir mais camadas que transformem dados relacionais em JSON e vice-versa.
  • Precisa de simplificar o seu modelo de dados desnormalizando tabelas filhas ou padrões Entidade-Objeto-Valor.
  • É necessário carregar ou exportar dados armazenados em formato XML sem uma ferramenta adicional que analise os dados.

Características espaciais

Os dados espaciais representam informação sobre a localização física e a forma dos objetos. Esses objetos podem ser locais pontuais ou objetos mais complexos, como países/regiões, estradas ou lagos.

O Azure SQL suporta dois tipos de dados espaciais:

  • O tipo de geometria representa dados num sistema de coordenadas euclidianas (planas).
  • O tipo de geografia representa dados num sistema de coordenadas da Terra redonda.

As funcionalidades espaciais no Azure SQL permitem-lhe armazenar dados geométricos e geográficos. Pode usar objetos espaciais no Azure SQL para analisar e consultar dados representados em formato JSON, e exportar os seus dados relacionais como texto JSON. Estes objetos espaciais incluem Point, LineString e Polygon. O Azure SQL também fornece índices espaciais especializados que pode usar para melhorar o desempenho das suas consultas espaciais.

O suporte espacial é uma funcionalidade central do motor de base de dados SQL Server.

Pares chave-valor

Os produtos Azure SQL não têm tipos ou estruturas especializadas que suportem pares-chave-valor, porque as estruturas chave-valor podem ser representadas nativamente como tabelas relacionais padrão:

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

Pode personalizar esta estrutura de chave-valor para se adequar às suas necessidades sem quaisquer restrições. Por exemplo, o valor pode ser um documento XML em vez do nvarchar(max) tipo. Se o valor for um documento JSON, pode usar uma CHECK restrição que verifique a validade do conteúdo JSON. Pode colocar qualquer número de valores relacionados com uma chave nas colunas adicionais. Por exemplo:

  • Adicione colunas e índices computados para simplificar e otimizar o acesso aos dados.
  • Defina a tabela como uma tabela apenas com esquema, otimizada para memória, para melhorar o desempenho.

Para um exemplo de como um modelo relacional pode ser usado eficazmente como solução de par-chave-valor na prática, veja Como a bwin está a usar o SQL Server 2016 In-Memory OLTP para alcançar um desempenho e uma escala sem precedentes. Neste estudo de caso, o bwin utilizou um modelo relacional para a sua solução de cache de ASP.NET, alcançando 1,2 milhões de lotes por segundo.

Próximos passos

As capacidades multimodelo são funcionalidades centrais do motor de base de dados SQL Server que são partilhadas entre os produtos Azure SQL. Para saber mais sobre estas funcionalidades, consulte estes artigos: