Recursos de vários modelos do Banco de Dados SQL do Azure e da Instância Gerenciada SQL
Aplica-se a:Banco de Dados SQL do Azure Instância Gerenciada SQLdo Azure
Os bancos de dados multimodelo permitem armazenar e trabalhar com dados em vários formatos, como dados relacionais, gráficos, documentos JSON ou XML, dados espaciais e pares chave-valor.
A família de produtos SQL do Azure usa um modelo relacional que fornece o melhor desempenho para uma variedade de aplicativos de uso geral. No entanto, os produtos SQL do Azure, como o Banco de Dados SQL do Azure e a Instância Gerenciada do SQL, não estão limitados a dados relacionais. Eles permitem que você use formatos não relacionais que estão fortemente 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 para um modelo relacional, e você precisa modelar algumas partes dos seus dados em um estilo NoSQL.
- Você deseja usar a linguagem Transact-SQL para consultar e analisar dados relacionais e NoSQL e, em seguida, integrar esses dados com ferramentas e aplicativos que podem usar a linguagem SQL.
- Você deseja aplicar recursos de banco de dados, como tecnologias in-memory, para melhorar o desempenho de suas análises ou o processamento de suas estruturas de dados NoSQL. Você pode usar 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 a seguir descrevem os recursos multimodelo mais importantes do Azure SQL.
Nota
Você pode usar expressões JSONPath, expressões XQuery/XPath, funções espaciais e expressões de consulta gráfica 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 dos bancos de dados multimodelo, como o Azure Cosmos DB, que fornecem APIs especializadas para modelos de dados.
Funcionalidades de gráficos
Os produtos SQL do Azure oferecem recursos de banco de dados gráfico para modelar relações muitos-para-muitos em um banco 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 ela conecta (por exemplo, curtidas ou amigos).
Aqui estão alguns recursos que tornam um banco de dados gráfico exclusivo:
- As bordas são entidades de primeira classe em um banco de dados gráfico. Eles podem ter atributos ou propriedades associados a eles.
- Uma única aresta pode conectar de forma flexível vários nós em um banco de dados gráfico.
- 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 gráfico e os recursos de consulta de gráficos são integrados ao Transact-SQL e recebem os benefícios de usar o mecanismo de banco de dados do SQL Server como o sistema de gerenciamento de banco de dados fundamental. Os recursos de gráfico usam consultas Transact-SQL padrão aprimoradas com o operador de gráfico para consultar os dados do gráfico MATCH
.
Um banco de dados relacional pode alcançar qualquer coisa que um banco de dados gráfico consiga. No entanto, um banco de dados gráfico pode facilitar a expressão de determinadas consultas. A sua decisão de escolher um em detrimento do outro pode basear-se nos seguintes fatores:
- Você precisa modelar dados hierárquicos onde um nó pode ter vários pais, portanto, não pode usar o tipo de dados hierarchyId.
- Seu aplicativo tem relações complexas de muitos para muitos. À medida que o aplicativo evolui, novos relacionamentos são adicionados.
- Você precisa analisar dados e relacionamentos interconectados.
- Você deseja usar condições de pesquisa T-SQL específicas do gráfico, como SHORTEST_PATH.
Recursos JSON
Nos produtos SQL do Azure, você pode analisar e consultar dados representados no formato JSON (JavaScript Object Notation) e exportar seus dados relacionais como texto JSON. JSON é um recurso principal do mecanismo de banco de dados do SQL Server.
Os recursos JSON permitem colocar documentos JSON em tabelas, transformar dados relacionais em documentos JSON e transformar documentos JSON em dados relacionais. Você pode usar a linguagem Transact-SQL padrão aprimorada com funções JSON para analisar documentos. Você também pode usar índices não clusterizados, índices columnstore ou tabelas com otimização de memória para otimizar suas consultas.
JSON é um formato de dados popular para a troca de dados em aplicações web e móveis modernas. 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 incluem a Pesquisa Cognitiva do Azure, o Armazenamento do Azure e o Azure Cosmos DB.
Se você tiver texto JSON, poderá extrair dados do 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 atualizar valores dentro do texto JSON.
- OPENJSON: Pode transformar uma matriz de objetos JSON em um conjunto de linhas, para consultas e análises mais avançadas. Qualquer consulta SQL pode ser executada no conjunto de resultados retornado.
- FOR JSON: Permite formatar dados armazenados em suas tabelas relacionais como texto JSON.
Para obter mais informações, consulte Como trabalhar com dados JSON.
Você pode usar modelos de documento em vez dos modelos relacionais em alguns cenários específicos:
- A alta normalização do esquema não traz benefícios significativos porque você acessa todos os campos dos objetos de uma só vez ou nunca atualiza partes normalizadas dos objetos. No entanto, o modelo normalizado aumenta a complexidade de suas consultas porque você precisa unir um grande número de tabelas para obter os dados.
- Você está trabalhando com aplicativos que usam nativamente documentos JSON para comunicação ou modelos de dados e não deseja introduzir mais camadas que transformam dados relacionais em JSON e vice-versa.
- Você precisa simplificar seu modelo de dados desnormalizando tabelas filhas ou padrões Entity-Object-Value.
- Você precisa carregar ou exportar dados armazenados no formato JSON sem uma ferramenta adicional que analise os dados.
Recursos XML
Os recursos XML permitem armazenar e indexar dados XML em seu banco de dados e usar operações XQuery/XPath nativas para trabalhar com dados XML. Os produtos SQL do Azure têm um tipo de dados XML interno especializado e funções de consulta que processam dados XML.
O mecanismo de banco de dados do SQL Server fornece uma plataforma poderosa para o desenvolvimento de aplicativos para gerenciar dados semiestruturados. O suporte para XML é integrado em 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 digitada de acordo com uma coleção de esquemas XML ou deixada sem tipo. Você pode indexar a coluna XML.
- A capacidade de especificar uma consulta XQuery em relação a dados XML armazenados em colunas e variáveis do tipo XML. Você pode usar as funcionalidades XQuery em qualquer consulta Transact-SQL que acesse um modelo de dados que você usa em seu banco de dados.
- Indexação automática de todos os elementos em documentos XML usando o índice XML primário. Ou você 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.
Você pode usar modelos de documento em vez dos modelos relacionais em alguns cenários específicos:
- A alta normalização do esquema não traz benefícios significativos porque você acessa todos os campos dos objetos de uma só vez ou nunca atualiza partes normalizadas dos objetos. No entanto, o modelo normalizado aumenta a complexidade de suas consultas porque você precisa unir um grande número de tabelas para obter os dados.
- Você está trabalhando com aplicativos que usam nativamente documentos XML para comunicação ou modelos de dados e não deseja introduzir mais camadas que transformam dados relacionais em JSON e vice-versa.
- Você precisa simplificar seu modelo de dados desnormalizando tabelas filhas ou padrões Entity-Object-Value.
- Você precisa carregar ou exportar dados armazenados em formato XML sem uma ferramenta adicional que analise os dados.
Características espaciais
Os dados espaciais representam informações 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 dá suporte a dois tipos de dados espaciais:
- O tipo de geometria representa dados num sistema de coordenadas Euclidianas (planas).
- O tipo de geografia representa dados em um sistema de coordenadas de Terra redonda.
Os recursos espaciais no SQL do Azure permitem armazenar dados geométricos e geográficos. Você pode usar objetos espaciais no SQL do Azure para analisar e consultar dados representados no formato JSON e exportar seus dados relacionais como texto JSON. Esses objetos espaciais incluem Point, LineString e Polygon. O SQL do Azure também fornece índices espaciais especializados que você pode usar para melhorar o desempenho de suas consultas espaciais.
O suporte espacial é um recurso central do mecanismo de banco de dados do SQL Server.
Pares chave-valor
Os produtos SQL do Azure 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)
)
Você pode personalizar essa estrutura de valor-chave para atender às suas necessidades sem restrições. Como exemplo, o valor pode ser um documento XML em vez do nvarchar(max)
tipo. Se o valor for um documento JSON, você poderá usar uma CHECK
restrição que verifique a validade do conteúdo JSON. Você pode colocar qualquer número de valores relacionados a 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 otimizada para memória e somente esquema para obter um melhor desempenho.
Para obter um exemplo de como um modelo relacional pode ser usado efetivamente como uma solução de par chave-valor na prática, consulte Como a bwin está usando o OLTP In-Memory do SQL Server 2016 para obter desempenho e escala sem precedentes. Neste estudo de caso, a bwin utilizou um modelo relacional para a sua solução de cache ASP.NET para atingir 1,2 milhões de lotes por segundo.
Próximos passos
Os recursos de vários modelos são os principais recursos do mecanismo de banco de dados do SQL Server que são compartilhados entre os produtos SQL do Azure. Para saber mais sobre esses recursos, consulte estes artigos: