ApsaraDB for SelectDB oferece suporte a consultas federadas em fontes de dados externas, incluindo data lakes, bancos de dados e arquivos remotos.
Visão geral
ApsaraDB for SelectDB disponibiliza o recurso multi-source data catalog (também conhecido como Multi-Catalog ou Catalog), que permite a conexão com fontes de dados externas, como data lakes e bancos de dados, para uma análise de dados simples e rápida. Esse recurso adiciona uma camada de Catalog acima da hierarquia original de metadados, formando uma estrutura de metadados de três níveis: Catalog -> Database -> Table. Cada Catalog pode ser mapeado diretamente para uma fonte de dados externa. Para obter mais informações sobre as fontes de dados externas suportadas, consulte Análise de data lake e Análise de banco de dados.
ApsaraDB for SelectDB também fornece funções com valor de tabela (TVFs) que mapeiam dados de arquivos de sistemas de armazenamento remoto, como Amazon S3 e HDFS, para tabelas consultáveis, simplificando a análise baseada em arquivos. Para mais detalhes, veja Análise de arquivos.
Com os Catalogs, o ApsaraDB for SelectDB integra e consulta fontes de dados externas juntamente com dados internos, possibilitando análises flexíveis em data warehouses e sistemas de armazenamento.
Caso uma fonte de dados externa esteja implantada na internet pública, a Virtual Private Cloud (VPC) da sua instância ApsaraDB for SelectDB precisa ter acesso de saída à internet. Para instruções de configuração, consulte Como resolvo problemas de conectividade de rede entre uma instância do ApsaraDB for SelectDB e uma fonte de dados?.
Conceitos e operações básicas
-
Internal Catalog
Todos os bancos de dados e tabelas existentes no ApsaraDB for SelectDB pertencem ao Internal Catalog, que é o padrão integrado e não pode ser modificado ou excluído.
-
External Catalog
Crie um External Catalog utilizando o comando
CREATE CATALOG. Em seguida, visualize todos os Catalogs comSHOW CATALOGSou veja a instrução de criação de um Catalog específico comSHOW CREATE CATALOG <catalog_name>;. -
Alternar entre Catalogs
Ao fazer login no ApsaraDB for SelectDB, o Internal Catalog fica ativo por padrão. Utilize o comando
SWITCHpara alternar entre os Catalogs:SWITCH internal; SWITCH hive_catalog;Após a alternância, use
SHOW DATABASESeUSE <db_name>para navegar e trocar de banco de dados no Catalog de destino. A visualização e o acesso aos dados em um External Catalog ocorrem da mesma forma que no Internal Catalog. Atualmente, o ApsaraDB for SelectDB suporta apenas acesso de leitura aos External Catalogs. -
Excluir um Catalog
Os dados em um External Catalog são somente leitura, mas é possível remover o próprio Catalog com o comando
DROP CATALOG <catalog_name>;. O Internal Catalog não pode ser excluído.NotaEssa operação remove apenas as informações de mapeamento do Catalog do ApsaraDB for SelectDB, sem alterar a fonte de dados externa em si.
Mapeamento de tipos de colunas
Ao criar um Catalog, o ApsaraDB for SelectDB sincroniza automaticamente os bancos de dados e tabelas da fonte de dados externa e mapeia os tipos de colunas conforme a fonte de dados e o formato da tabela.
Tipos de dados externos que não podem ser mapeados, como UNION e INTERVAL, recebem o tipo UNSUPPORTED. O exemplo a seguir demonstra o comportamento ao consultar uma coluna UNSUPPORTED:
-- Schema of the synchronized table:
k1 INT,
k2 INT,
k3 UNSUPPORTED,
k4 INT
-- Query results:
SELECT * FROM testtable; // Error: Unsupported type 'UNSUPPORTED_TYPE' in '`k3`
SELECT * except(k3) FROM testtable; // Query OK.
SELECT k1, k3 FROM testtable; // Error: Unsupported type 'UNSUPPORTED_TYPE' in '`k3`
SELECT k1, k4 FROM testtable; // Query OK.
Execute SHOW DATA TYPES; para visualizar os tipos de dados suportados pelo ApsaraDB for SelectDB. Para tipos de dados suportados por fontes externas específicas, consulte Análise de data lake e Análise de banco de dados.
Gerenciamento de permissões
O ApsaraDB for SelectDB utiliza seu gerenciamento de permissões integrado, estendido ao nível de Catalog, para controlar o acesso a bancos de dados e tabelas nos External Catalogs. Para mais informações, veja Gerenciamento de permissões de usuário.
Especifique bancos de dados
Utilize as propriedades include_database_list e exclude_database_list na configuração do Catalog para controlar quais bancos de dados serão sincronizados.
include_database_list: lista separada por vírgulas dos bancos de dados a serem sincronizados. Os nomes dos bancos de dados diferenciam maiúsculas de minúsculas. Por padrão, todos os bancos de dados são sincronizados.exclude_database_list: lista separada por vírgulas dos bancos de dados a serem excluídos da sincronização. Os nomes dos bancos de dados diferenciam maiúsculas de minúsculas. Vazia por padrão, o que significa que nenhum banco de dados é excluído.
Se um banco de dados estiver configurado tanto em
include_database_listquanto emexclude_database_list, a propriedadeexclude_database_listterá precedência.Ao conectar-se a uma fonte Java Database Connectivity (JDBC), é obrigatório usar essas duas propriedades em conjunto com o parâmetro
only_specified_database. Para mais detalhes, consulte Fonte de dados JDBC.
Atualize metadados
Alterações de metadados em uma source de dados externa, como criação ou exclusão de tabelas, ou adição e remoção de colunas, não são sincronizadas automaticamente com o ApsaraDB for SelectDB. É possível atualizar os metadados das seguintes maneiras.
Atualização manual
Utilize o comando REFRESH para atualizar os metadados manualmente.
Sintaxe
REFRESH CATALOG catalog_name;
REFRESH DATABASE [catalog_name.]database_name;
REFRESH TABLE [catalog_name.][database_name.]table_name;
A atualização de um Catalog também invalida caches relacionados, incluindo os caches de partição, schema e arquivo.
Exemplos
-
Atualize um Catalog. Exemplo:
REFRESH CATALOG hive; -
Atualize um banco de dados. Exemplos:
REFRESH DATABASE ctl.database1; REFRESH DATABASE database1; -
Atualize uma tabela. Exemplos:
REFRESH TABLE ctl.db.table1; REFRESH TABLE db.table1; REFRESH TABLE table1;
Atualização agendada
Ative a atualização agendada definindo o parâmetro metadata_refresh_interval_sec durante a criação de um Catalog. O nó mestre Frontend (FE) atualizará periodicamente o Catalog no intervalo especificado. Atualmente, apenas três tipos de fontes de dados suportam atualização agendada:
HMS: Hive Metastore.
ES: Elasticsearch
JDBC: Java Database Connectivity
-- Set the catalog refresh interval to 20 seconds
CREATE CATALOG es PROPERTIES (
"type"="es",
"hosts"="http://127.0.0.1:9200",
"metadata_refresh_interval_sec"="20"
);
Atualização automática
No momento, apenas determinados eventos de uma source de dados Hive disparam uma atualização automática do Catalog. Para mais informações, consulte Fonte de dados Hive.