Recursos de vários modelos do Banco de Dados SQL e da Instância Gerenciada de SQL do Azure

Aplica-se a: Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Os bancos de dados de vários modelos permitem que você armazene e trabalhe com os dados em vários formatos, como dados relacionais, grafos, documentos JSON ou XML, dados espaciais e pares chave-valor.

A família de produtos SQL do Azure usa um modelo relacional que oferece o melhor desempenho para vários aplicativos de finalidade geral. No entanto, os produtos SQL do Azure, como o Banco de Dados SQL e a Instância Gerenciada de SQL do Azure, não são limitados aos dados relacionais. Eles permitem que você use formatos não relacionais que são totalmente integrados ao modelo relacional.

Considere usar os recursos de vários modelos do SQL do Azure nos seguintes casos:

  • Você tem algumas informações ou estruturas que são mais adequadas para modelos NoSQL e não deseja usar um banco de dados NoSQL separado.
  • A maioria dos seus dados é adequada a um modelo relacional e você precisa modelar algumas partes dos dados em estilo NoSQL.
  • Você deseja usar a linguagem Transact-SQL para consultar e analisar dados relacionais e NoSQL e, em seguida, integrar esses dados às ferramentas e aos aplicativos que podem usar a linguagem SQL.
  • Você deseja aplicar recursos de banco de dados, como tecnologias na memória para melhorar o desempenho de sua análise ou o processamento de suas estruturas de dados NoSQL. Você pode usar a replicação transacional ou réplicas legíveis para criar cópias de seus dados e descarregar algumas cargas de trabalho analíticas do banco de dados primário.

As seções abaixo descrevem os recursos de vários modelos mais importantes do SQL do Azure.

Observação

É possível usar expressões de Caminho do JSON, expressões XQuery/XPath, funções espaciais e expressões de consulta de grafo na mesma consulta Transact-SQL para acessar quaisquer dados armazenados no banco de dados. Qualquer ferramenta ou linguagem de programação que possa executar consultas Transact-SQL também pode usar essa interface de consulta para acessar dados de vários modelos. Essa é a principal diferença em relação aos bancos de dados de vários modelos como o Azure Cosmos DB, que oferece APIs especializadas para modelos de dados.

Recursos de grafo

Os produtos SQL do Azure oferecem recursos de bancos de dados de grafo para modelar relações de muitos para muitos em um banco de dados. Um grafo é uma coleção de nós (ou vértices) e bordas (ou relações). Um nó representa uma entidade (por exemplo, uma pessoa ou uma organização). Uma borda representa uma relação entre os dois nós que ela conecta (por exemplo, curtidas ou amigos).

Aqui estão alguns recursos que tornam um banco de dados de grafo único:

  • As bordas são entidades de primeira classe em um banco de dados de grafo. Elas podem ter atributos ou propriedades associados.
  • Uma só borda pode conectar com flexibilidade vários nós de um banco de dados de grafo.
  • É possível expressar facilmente consultas de correspondência de padrões e navegação de salto múltiplo.
  • É possível expressar fechamento transitivo e consultas polimórficas com facilidade.

Os recursos de consulta de grafo e as relações de grafo são integrados à Transact-SQL e recebem os benefícios de usar o mecanismo de banco de dados do SQL Server como o sistema básico de gerenciamento de banco de dados. Os recursos de grafo usam consultas padrão de Transact-SQL aprimoradas com o operador MATCH para consultar os dados do grafo.

É possível usar um banco de dados relacional para realizar qualquer tarefa feita com um banco de dados de grafo. No entanto, um banco de dados de grafo pode facilitar a expressão de determinadas consultas. A sua decisão de escolher um ou outro pode se basear nos seguintes fatores:

  • Você precisa modelar dados hierárquicos em que um nó pode ter vários pais e, portanto, não é possível usar o tipo de dados hierarchyId.
  • Seu aplicativo tem relações complexas de muitos para muitos. À medida que o aplicativo evolui, novas relações são adicionadas.
  • É necessário analisar as relações e os dados interconectados.
  • Você deseja usar critérios de pesquisa T-SQL específicas para grafos, como SHORTEST_PATH.

Recursos JSON

Nos produtos SQL do Azure, é possível analisar e consultar os dados representados no formato JSON (JavaScript Object Notation) e exportar os seus dados relacionais como texto JSON. JSON é um recurso essencial do mecanismo de banco de dados do SQL Server.

Os recursos JSON permitem inserir documentos JSON em tabelas, transformar dados relacionais em documentos JSON e transformar documentos JSON em dados relacionais. É possível usar a linguagem Transact-SQL padrão aprimorada com funções JSON para analisar documentos. Também é possível usar índices não clusterizados, índices columnstore ou tabelas com otimização de memória para otimizar as suas consultas.

JSON é um formato de dados popular para trocar dados em modernos aplicativos móveis e da Web. O JSON também é usado para armazenar dados semiestruturados em arquivos de log ou em bancos de dados NoSQL. Muitos serviços Web REST retornam resultados formatados como texto JSON ou aceitam dados formatados como JSON.

A maioria dos serviços do Azure tem pontos de extremidade REST que retornam ou consomem JSON. Esses serviços são o Azure Cognitive Search, o Armazenamento do Microsoft Azure e o Azure Cosmos DB.

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

  • JSON_MODIFY: permite que você atualize os valores do texto JSON.
  • OPENJSON: pode transformar uma matriz de objetos JSON em um conjunto de linhas, para permitir consultas e análises mais avançadas. Qualquer consulta SQL pode ser executada no conjunto de resultados retornado.
  • FOR JSON: permite formatar os dados armazenados nas tabelas relacionais como texto JSON.

Diagrama que ilustra as funções JSON.

Para ver mais informações, confira Como trabalhar com os dados JSON.

Em alguns cenários específicos, é possível usar modelos de documento em vez de modelos relacionais:

  • A alta normalização do esquema não traz benefícios significativos porque você acessa todos os campos dos objetos de uma vez ou nunca atualiza as partes normalizadas dos objetos. No entanto, o modelo normalizado aumenta a complexidade das consultas porque é necessário ingressar muitas tabelas para obter os dados.
  • Você está trabalhando com aplicativos que usam documentos JSON nativamente para modelos de dados ou comunicação e não quer introduzir mais camadas que transformam dados relacionais em JSON e vice-versa.
  • Você precisa simplificar o modelo de dados desnormalizando as tabelas filhas ou os padrões Entidade-Objeto-Valor.
  • Você precisa carregar ou exportar os dados armazenados no formato JSON sem uma ferramenta adicional que analise os dados.

Recursos XML

Os Recursos XML permitem que você armazene e indexe dados XML no banco de dados e use operações nativas XQuery/XPath para trabalhar com dados XML. Os produtos do SQL do Azure têm um tipo de dados XML integrado e especializado, bem como funções de consulta que processam dados XML.

O mecanismo de banco de dados do SQL Server oferece uma plataforma avançada para desenvolver aplicativos a fim de gerenciar dados semiestruturados. O suporte a XML é integrado a todos os componentes do mecanismo de banco de dados e inclui:

  • A capacidade de armazenar valores XML nativamente em uma coluna de tipo de dados XML que pode ser preenchida de acordo com uma coleção de esquemas XML ou ser deixada sem preencher. É possível indexar a coluna XML.
  • A capacidade de especificar uma consulta XQuery em dados XML armazenados em colunas e variáveis do tipo XML. É possível usar as funcionalidades XQuery em qualquer consulta Transact-SQL que acesse um modelo de dados usado no seu banco de dados.
  • Indexação automática de todos os elementos em documentos XML, usando o índice XML primário. Uma outra opção é 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.

Em alguns cenários específicos, é possível usar modelos de documento em vez de modelos relacionais:

  • A alta normalização do esquema não traz benefícios significativos porque você acessa todos os campos dos objetos de uma vez ou nunca atualiza as partes normalizadas dos objetos. No entanto, o modelo normalizado aumenta a complexidade das consultas porque é necessário ingressar muitas tabelas para obter os dados.
  • Você está trabalhando com aplicativos que usam documentos XML nativamente para modelos de dados ou comunicação e não quer introduzir mais camadas que transformam dados relacionais em JSON e vice-versa.
  • Você precisa simplificar o modelo de dados desnormalizando as tabelas filhas ou os padrões Entidade-Objeto-Valor.
  • Você precisa carregar ou exportar dados armazenados no formato XML sem uma ferramenta adicional que analise os dados.

Recursos espaciais

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

O SQL do Azure dá suporte a dois tipos de dados espaciais:

  • O tipo Geometria representa dados em um sistema de coordenadas Euclidiano (plano).
  • O tipo Geografia representa dados em um sistema de coordenadas esféricas.

Os recursos espaciais do SQL do Azure permitem o armazenamento de dados geométricos e geográficos. É possível usar objetos espaciais do SQL do Azure para analisar e consultar os dados representados no formato JSON e exportar seus dados relacionais como texto JSON. Esses objetos espaciais são Ponto, Cadeia de linha e Polígono. O SQL do Azure também oferece índices espaciais especializados que podem ser usados para melhorar o desempenho das suas consultas espaciais.

O suporte espacial é um recurso essencial do mecanismo de banco de dados do SQL Server.

Pares de chave-valor

Os produtos do SQL do Azure não têm tipos nem estruturas especializados que dão suporte a pares chave-valor, pois as estruturas de chave-valor podem ser representadas nativamente como tabelas relacionais padrão:

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

É possível personalizar essa estrutura de chave-valor para atender às suas necessidades sem restrições. Por exemplo, o valor pode ser um documento XML em vez do tipo nvarchar(max). Se o valor for um documento JSON, você poderá usar uma restrição CHECK que verifica a validade do conteúdo JSON. É possível inserir qualquer número de valores relacionados a uma chave nas colunas adicionais. Por exemplo:

  • Adicione colunas computadas e índices para simplificar e otimizar o acesso a dados.
  • Defina a tabela como uma tabela somente de esquema e com otimização de memória para obter um melhor desempenho.

Para ver um exemplo prático de como é possível utilizar um modelo relacional com eficácia como uma solução de par chave-valor, confira Como o bwin está usando o OLTP in-memory do SQL Server 2016 para atingir um desempenho e uma escala sem precedentes. Nesse estudo de caso, o bwin usou um modelo relacional para sua solução de cache ASP.NET a fim de alcançar 1,2 milhão de lotes por segundo.

Próximas etapas

Os recursos de vários modelos são recursos essenciais do mecanismo de banco de dados do SQL Server que são compartilhados entre os produtos do SQL do Azure. Para saber mais sobre esses recursos, leia estes artigos: