Partilhar via


Visão geral da consulta elástica do Banco de Dados SQL do Azure (visualização)

Aplica-se a: do Banco de Dados SQL do Azure

O recurso de consulta elástica (na visualização) permite executar uma consulta Transact-SQL (T-SQL) que abrange vários bancos de dados no Banco de Dados SQL do Azure. Ele permite que você execute consultas entre bancos de dados para acessar tabelas remotas e conectar ferramentas da Microsoft e de terceiros (Excel, Power BI, Tableau, etc.) para consultar camadas de dados com vários bancos de dados. Usando esse recurso, você pode expandir consultas para grandes camadas de dados e visualizar os resultados em relatórios de business intelligence (BI).

Por que usar consultas elásticas

Banco de Dados SQL do Azure

Consulte bancos de dados no Banco de Dados SQL do Azure completamente em T-SQL. Isso permite consulta de apenas leitura em bases de dados remotas e fornece uma opção para os clientes atuais do SQL Server migrarem as aplicações usando nomes de três e quatro partes ou servidor vinculado à Base de Dados SQL.

Disponível em todos os níveis de serviço

A consulta elástica tem suporte em todas as camadas de serviço do Banco de Dados SQL do Azure. Consulte a seção sobre Limitações de visualização abaixo sobre limitações de desempenho para níveis de serviço mais baixos.

Enviar parâmetros para bancos de dados remotos

As consultas elásticas agora podem enviar parâmetros SQL para os bancos de dados remotos para execução.

Execução de procedimento armazenado

Execute chamadas de procedimento armazenado remoto ou funções remotas usando sp_execute _remote.

Flexibilidade

As tabelas externas com consulta elástica podem referir-se a tabelas remotas com um esquema ou nome de tabela diferente.

Cenários de consulta elástica

O objetivo é facilitar a consulta de cenários em que vários bancos de dados contribuem com linhas em um único resultado geral. A consulta pode ser composta pelo usuário ou aplicativo diretamente ou indiretamente por meio de ferramentas conectadas ao banco de dados. Isso é especialmente útil ao criar relatórios, usar ferramentas comerciais de BI ou integração de dados, ou qualquer aplicativo que não possa ser alterado. Com uma consulta elástica, você pode consultar vários bancos de dados usando a experiência familiar de conectividade do SQL Server em ferramentas como Excel, Power BI, Tableau ou Cognos. Uma consulta elástica permite acesso fácil a uma coleção inteira de bancos de dados por meio de consultas emitidas pelo SQL Server Management Studio ou Visual Studio e facilita a consulta entre bancos de dados do Entity Framework ou de outros ambientes ORM. A Figura 1 mostra um cenário em que um aplicativo de nuvem existente (que usa a biblioteca cliente de banco de dados elástico ) se baseia em uma camada de dados dimensionada e uma consulta elástica é usada para relatórios entre bancos de dados.

Figura 1 Consulta elástica usada na camada de dados escalada

Captura de ecrã da consulta Elastic usada na camada de dados em escala.

Os cenários de cliente para consulta elástica são caracterizados pelas seguintes topologias:

  • Particionamento vertical - Consultas entre bancos de dados (Topologia 1): Os dados são particionados verticalmente entre vários bancos de dados em uma camada de dados. Normalmente, diferentes conjuntos de tabelas residem em bancos de dados diferentes. Isso significa que o esquema é diferente em bancos de dados diferentes. Por exemplo, todas as tabelas para inventário estão em um banco de dados, enquanto todas as tabelas relacionadas à contabilidade estão em um segundo banco de dados. Casos de uso comuns com essa topologia exigem que se consulte ou compile relatórios entre tabelas em vários bancos de dados.

  • Fragmentação Horizontal - (Topologia 2): os dados são particionados horizontalmente para distribuir linhas numa camada de dados escalada. Com essa abordagem, o esquema é idêntico em todos os bancos de dados participantes. Essa abordagem também é chamada de fragmentação . A fragmentação pode ser realizada e gerida usando (1) as bibliotecas de ferramentas de bases de dados elásticas ou (2) fragmentação automática. Uma consulta elástica é usada para consultar ou compilar relatórios em muitos fragmentos. Os fragmentos geralmente são bancos de dados dentro de um pool elástico. Você pode pensar na consulta elástica como uma maneira eficiente de consultar todos os bancos de dados do pool elástico de uma só vez, desde que os bancos de dados compartilhem o esquema comum.

Observação

A consulta elástica funciona melhor para cenários de relatório em que a maior parte do processamento (filtragem, agregação) pode ser executada no lado da fonte externa. Não é adequado para operações de ETL onde uma grande quantidade de dados está sendo transferida de bancos de dados remotos. Para cargas de trabalho de relatório pesadas ou cenários de armazenamento de dados com consultas mais complexas, considere também usar Azure Synapse Analytics.

Particionamento vertical - consultas entre bancos de dados

Para começar a codificar, consulte Introdução à consulta entre bancos de dados (particionamento vertical).

Uma consulta elástica pode ser usada para disponibilizar dados localizados em um banco de dados no Banco de dados SQL para outros bancos de dados no Banco de dados SQL. Isso permite que consultas de um banco de dados façam referência a tabelas em qualquer outro banco de dados remoto no Banco de dados SQL. A primeira etapa é definir uma fonte de dados externa para cada banco de dados remoto. A fonte de dados externa é definida no banco de dados local a partir do qual você deseja obter acesso às tabelas localizadas no banco de dados remoto. Nenhuma alteração é necessária no banco de dados remoto. Para cenários típicos de particionamento vertical em que bancos de dados diferentes têm esquemas diferentes, as consultas elásticas podem ser usadas para implementar casos de uso comuns, como acesso a dados de referência e consulta entre bancos de dados.

Importante

Você deve possuir permissão ALTER ANY EXTERNAL DATA SOURCE. Esta permissão está incluída com a permissão ALTER DATABASE. As permissões ALTER ANY EXTERNAL DATA SOURCE são necessárias para referenciar a fonte de dados subjacente.

Dados de referência: A topologia é usada para o gerenciamento de dados de referência. Na figura seguinte, duas tabelas (T1 e T2) com dados de referência são mantidas numa base de dados dedicada. Usando uma consulta elástica, agora você pode acessar as tabelas T1 e T2 remotamente de outros bancos de dados, como mostra a figura. Use a topologia 1 se as tabelas de referência forem pequenas ou se as consultas remotas na tabela de referência tiverem predicados seletivos.

Figura 2 Particionamento vertical - Usando consulta elástica para consultar dados de referência

Captura de tela de Particionamento vertical - Usando consulta elástica para consultar dados de referência.

Consulta entre bases de dados: As consultas elásticas permitem casos de uso que exigem consultas em vários bancos de dados no SQL Database. A Figura 3 mostra quatro bancos de dados diferentes: CRM, Inventário, RH e Produtos. As consultas realizadas em um dos bancos de dados também precisam acessar um ou todos os outros bancos de dados. Usando uma consulta elástica, você pode configurar seu banco de dados para esse caso executando algumas instruções DDL simples em cada um dos quatro bancos de dados. Após essa configuração única, o acesso a uma tabela remota é tão simples quanto se referir a uma tabela local a partir de suas consultas T-SQL ou de suas ferramentas de BI. Essa abordagem é recomendada se as consultas remotas não retornarem resultados grandes.

Figura 3 Particionamento vertical - Usando a consulta elástica para consultar vários bancos de dados

Captura de tela do particionamento vertical - Usando a consulta elástica para consultar vários bancos de dados.

As etapas a seguir configuram consultas de banco de dados elástico para cenários de particionamento vertical que exigem acesso a uma tabela localizada em bancos de dados remotos no Banco de dados SQL com o mesmo esquema:

Depois de executar as instruções DDL, você pode acessar a tabela remota mytable como se fosse uma tabela local. O Banco de Dados SQL do Azure abre automaticamente uma conexão com o banco de dados remoto, processa sua solicitação no banco de dados remoto e retorna os resultados.

Particionamento horizontal - fragmentação

Usar a consulta elástica para executar tarefas de relatório em uma camada de dados fragmentada, ou seja, particionada horizontalmente, requer um de mapa de estilhaço de banco de dados elástico para representar os bancos de dados da camada de dados. Normalmente, apenas um único mapa de fragmentos é usado neste cenário, e um banco de dados dedicado com capacidades de consulta elástica (nó principal) serve como ponto de entrada para consultas de relatórios. Apenas esta base de dados dedicada necessita de acesso ao mapa de shards. A Figura 4 ilustra essa topologia e sua configuração com o banco de dados de consulta elástico e o mapa de estilhaços. Para obter mais informações sobre a biblioteca cliente de banco de dados elástico e a criação de mapas de fragmentos, consulte Gerenciamento de mapas de fragmentos.

Figura 4 Particionamento horizontal - Usando consulta elástica para geração de relatórios em camadas de dados fragmentadas

Captura de ecrã de Particionamento horizontal - Usando consulta elástica para relatórios em camadas de dados fragmentadas.

Observação

O banco de dados de consulta elástica (nó principal) pode ser um banco de dados separado ou pode ser o mesmo banco de dados que armazena o mapa de fragmentos. Seja qual for a configuração escolhida, certifique-se de que a camada de serviço e o tamanho de computação desse banco de dados sejam altos o suficiente para lidar com o número esperado de solicitações de login/consulta.

As etapas a seguir configuram consultas de banco de dados elástico para cenários de particionamento horizontal que exigem acesso a um conjunto de tabelas localizadas em (normalmente) vários bancos de dados remotos no Banco de dados SQL:

Depois de executar essas etapas, você pode acessar a tabela particionada horizontalmente mytable como se fosse uma tabela local. O Banco de Dados SQL do Azure abre automaticamente várias conexões paralelas aos bancos de dados remotos onde as tabelas são fisicamente armazenadas, processa as solicitações nos bancos de dados remotos e retorna os resultados. Mais informações sobre as etapas necessárias para o cenário de particionamento horizontal estão disponíveis em consulta elástica para particionamento horizontal.

Para começar a programar, consulte Guia de Introdução ao Elastic Query para Sharding (Particionamento Horizontal).

Importante

A execução bem-sucedida da consulta elástica em um grande conjunto de bancos de dados depende muito da disponibilidade de cada um dos bancos de dados durante a execução da consulta. Se um dos bancos de dados não estiver disponível, toda a consulta falhará. Se planeia consultar centenas ou milhares de bases de dados de uma só vez, certifique-se de que a sua aplicação cliente tenha a lógica de reintento incorporada ou considere utilizar trabalhos elásticos e consultar subconjuntos mais pequenos de bases de dados, consolidando os resultados de cada consulta num único destino.

Consulta de T-SQL

Depois de definir suas fontes de dados externas e suas tabelas externas, você pode usar cadeias de conexão regulares do SQL Server para se conectar aos bancos de dados onde definiu suas tabelas externas. Em seguida, você pode executar instruções T-SQL em suas tabelas externas nessa conexão com as limitações descritas posteriormente neste artigo. Você pode encontrar mais informações e exemplos de consultas T-SQL nos artigos de documentação para de particionamento horizontal e de particionamento vertical.

Conectividade para ferramentas

Você pode usar cadeias de conexão regulares do SQL Server para conectar seus aplicativos e ferramentas de BI ou integração de dados a bancos de dados que tenham tabelas externas. Verifique se o SQL Server tem suporte como uma fonte de dados para sua ferramenta. Uma vez conectado, consulte o banco de dados de consulta elástica e as tabelas externas nesse banco de dados, assim como faria com qualquer outro banco de dados do SQL Server ao qual você se conecta com sua ferramenta.

Importante

As consultas elásticas só têm suporte ao se conectar com a Autenticação do SQL Server.

Custo

A consulta elástica está incluída no custo da Base de Dados SQL do Azure. Há suporte para topologias em que seus bancos de dados remotos estão em um data center diferente do ponto de extremidade de consulta elástica, mas a saída de dados de bancos de dados remotos é cobrada regularmente taxas do Azure.

Limitações de pré-visualização

  • A primeira execução de uma consulta elástica pode demorar alguns minutos em recursos mais limitados e nas camadas de serviço Standard e General Purpose. Esse tempo é necessário para carregar a funcionalidade de consulta elástica; O desempenho de carregamento melhora com níveis de serviço e tamanhos de computação mais altos.

  • Ainda não há suporte para scripts de fontes de dados externas ou tabelas externas do SSMS ou SSDT.

  • A Importação/Exportação para o Banco de Dados SQL ainda não oferece suporte a fontes de dados externas e tabelas externas. Se você precisar usar Importar/Exportar, solte esses objetos antes de exportar e recrie-os depois de importar.

  • Atualmente, a consulta elástica oferece suporte apenas ao acesso somente leitura a tabelas externas. No entanto, você pode usar a funcionalidade de Transact-SQL completa no banco de dados onde a tabela externa está definida. Isso pode ser útil para, por exemplo, persistir resultados temporários usando, por exemplo, SELECT <column_list> INTO <local_table>, ou para definir procedimentos armazenados no banco de dados de consulta elástica que se referem a tabelas externas.

  • Exceto para nvarchar(max), os tipos de LOB (incluindo tipos espaciais) não são suportados em definições de tabela externas. Como solução alternativa, você pode criar uma exibição no banco de dados remoto que converte o tipo LOB em nvarchar(max), definir sua tabela externa sobre a exibição em vez da tabela base e, em seguida, convertê-la de volta no tipo de LOB original em suas consultas.

  • Colunas de tipo de dados nvarchar(max) no conjunto de resultados desabilitam técnicas avançadas de processamento em lote usadas na implementação do Elastic Query e podem afetar o desempenho da consulta para uma ordem de grandeza, ou até mesmo duas ordens de magnitude em casos de uso não canônicos em que uma grande quantidade de dados não agregados está sendo transferida como resultado da consulta.

  • Atualmente, não há suporte para estatísticas de coluna em tabelas externas. As estatísticas de tabela são suportadas, mas precisam ser criadas manualmente.

  • Não há suporte para cursores para tabelas externas no Banco de Dados SQL do Azure.

  • A consulta elástica funciona apenas com o Banco de Dados SQL do Azure. Não é possível usá-lo para consultar uma instância do SQL Server.

  • Atualmente, não há suporte para links privados com consulta elástica para os bancos de dados que são destinos de fontes de dados externas.