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

Aplica-se a:Banco de Dados SQL do Azure

A funcionalidade de consulta elástica (em pré-visualização) permite-lhe executar uma consulta Transact-SQL que abrange várias bases de dados na Base de Dados SQL do Azure. Permite-lhe realizar consultas entre várias bases de dados, para aceder a tabelas remotas e ligar ferramentas de terceiros e da Microsoft (Excel, Power BI, Tableau, entre outros) para consultar escalões de dados com várias bases de dados. Com esta funcionalidade, pode aumentar horizontalmente as consultas para grandes escalões de dados e visualizar os resultados em relatórios BI (business intelligence).

Por que usar consultas elásticas

Base de Dados SQL do Azure

Consulte bancos de dados no Banco de Dados SQL do Azure completamente em T-SQL. Isso permite a consulta somente leitura de bancos de dados remotos e fornece uma opção para os clientes atuais do SQL Server migrarem aplicativos usando nomes de três e quatro partes ou servidor vinculado ao Banco 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 dimensionada

Elastic query used on scaled-out data tier

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.
  • Particionamento Horizontal - Compartilhamento (Topologia 2): Os dados são particionados horizontalmente para distribuir linhas em uma camada de dados dimensionada. Com essa abordagem, o esquema é idêntico em todos os bancos de dados participantes. Esta abordagem também é chamada de "fragmentação". O compartilhamento pode ser executado e gerenciado usando (1) as bibliotecas de ferramentas de banco de dados elástico ou (2) autofragmentação. 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.

Nota

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 ETL onde uma grande quantidade de dados está sendo transferida de banco de dados remoto. Para cargas de trabalho de relatórios pesadas ou cenários de armazenamento de dados com consultas mais complexas, considere também o uso do 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. Não são necessárias alterações na base de dados remota. 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 a 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 fazer referência à fonte de dados subjacente.

Dados de referência: a topologia é usada para o gerenciamento de dados de referência. Na figura abaixo, duas tabelas (T1 e T2) com dados de referência são mantidas em um banco de dados dedicado. 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

Vertical partitioning - Using elastic query to query reference data

Consulta entre bancos de dados: as consultas elásticas habilitam casos de uso que exigem consulta em vários bancos de dados no Banco de dados SQL. 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 fazer referência 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

Vertical partitioning - Using elastic query to query across various databases

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 mapa de fragmentos de banco de dados elástico para representar os bancos de dados da camada de dados. Normalmente, apenas um único mapa de estilhaços é usado nesse cenário e um banco de dados dedicado com recursos de consulta elástica (nó principal) serve como ponto de entrada para relatar consultas. Apenas esta base de dados dedicada necessita de acesso ao mapa de estilhaços. 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 estilhaços, consulte Gerenciamento de mapas de estilhaços.

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

Horizontal partitioning - Using elastic query for reporting over sharded data tiers

Nota

O Elastic Query Database (nó principal) pode ser um banco de dados separado ou pode ser o mesmo banco de dados que hospeda o mapa de estilhaços. 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 a quantidade esperada 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 podem ser encontradas em elastic query for horizontal partitioning.

Para começar a codificar, consulte Introdução à consulta elástica para particionamento horizontal (fragmentação).

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 você planeja consultar centenas ou milhares de bancos de dados de uma só vez, certifique-se de que seu aplicativo cliente tenha a lógica de repetição incorporada ou considere aproveitar os trabalhos de banco de dados elástico (visualização) e consultar subconjuntos menores de bancos de dados, consolidando os resultados de cada consulta em um único destino.

Consulta 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 abaixo. Você pode encontrar mais informações e exemplos de consultas T-SQL nos tópicos de documentação para particionamento horizontal e 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 do Banco de Dados SQL do Azure. Observe que topologias em que seus bancos de dados remotos estão em um data center diferente do ponto de extremidade de consulta elástica são suportadas, mas a saída de dados de bancos de dados remotos é cobrada regularmente taxas do Azure.

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

  • A execução da primeira consulta elástica pode levar até alguns minutos em recursos menores e na camada 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.
  • Importar/Exportar 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 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ástico 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 tabelas 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 LOB original em suas consultas.
  • As colunas do tipo de dados nvarchar(max) no conjunto de resultados desabilitam as 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.

Partilhe os seus comentários

Compartilhe comentários sobre sua experiência com consultas elásticas conosco abaixo, nos fóruns do MSDN ou no Stack Overflow. Estamos interessados em todos os tipos de feedback sobre o serviço (defeitos, arestas ásperas, lacunas de recursos).

Próximos passos