Ingerindo metadados de um banco de dados Oracle no Data Catalog
A governança de dados eficiente tem se mostrado um ponto crítico no sucesso de projetos de Big Data. Conseguir documentar onde os dados estão armazenados e qual a finalidade deles é uma tarefa primordial, indiferente à localidade do data source. O Data Catalog é uma opção interessante para ajudar na governança de conjuntos de dados e neste post veremos como realizar a ingestão de metadados a partir de uma base Oracle fazendo uso de um conector open source.
Passo 1 — Diagrama da solução a ser construída
1 — VM para execução de container baseado em imagem gratuita do Oracle XE.
*Vale mencionar que esse banco de dados Oracle poderia estar sendo executada no Oracle BMS, on premises ou em outras nuvens.
2 — VM para execução do conector que irá fazer a leitura de metadados.
3 — Service account key com a role necessária para escrita de metadados no Data Catalog
4 — Data Catalog
Passo 2 — Criação de VM com banco de dados de teste
Antes de prosseguir é importante ressaltar que o procedimento a seguir é apenas para fins de teste e nunca deveria ser utilizado em ambientes corporativos(nem mesmo em ambientes não produtivos). Veja a documentação sobre o Oracle XE
Vamos criar nossa base de dados para fins de teste. [Caso já possua pode pular para o passo 3].
Crie uma VM através do Cloud Shell utilizando comando abaixo.
Será criada a VM oraclexe.
gcloud compute instances create oraclexe \
--zone=us-central1-a \
--machine-type=e2-medium \
--image=projects/cos-cloud/global/images/cos-101-17162-40-56 \
--provisioning-model=STANDARD \
--shielded-secure-boot \
--boot-disk-size=20GB \
--metadata=startup-script='sudo docker run -d --name myoracledb \
-p 1521:1521 -p 5500:5500 \
-e ORACLE_PWD=SENHA_SECRETA \
container-registry.oracle.com/database/express:21.3.0-xe'
Após a criação da VM ainda serão necessários cerca de 5 minutos para conclusão do download da imagem e execução do container com o banco de dados.
Acesse a VM oraclexe via SSH, e execute o comando algumas vezes…
sudo docker ps
Até obter um retorno semelhante com o que segue.
Passo 3 — Criação de usuário, objetos e carga de dados
Executar esses passos para criação de usuário/schema, objetos e carga de dados para fins de teste.
Passo 4 — Criação de VM com conector
A máquina que irá se comunicar com o Data Catalog precisa ter o Oracle Client e o conector datacatalog-oracle-connector instalados. Abaixo segue passo a passo para criação de uma VM no Google Cloud com a configuração que foi utilizada para testes e instalação do Oracle client.
Criar VM para execução do Oracle Client e Connector:
No Cloud Shell, execute o comando abaixo para criar a VM datacatalog-connector-vm:
gcloud compute instances create datacatalog-connector-vm \
--zone=us-central1-a \
--machine-type=e2-medium \
--shielded-secure-boot \
--subnet=default \
--network-tier=PREMIUM \
--image-family=rhel-7 \
--image-project=rhel-cloud \
--boot-disk-device-name=datacatalog-connector-vm
Agora vamos conectar na VM datacatalog-connector-vm via SSH e executar os seguintes passos:
Instalar o wget, nano e python3.
sudo yum install wget -y
sudo yum install nano -y
sudo yum install python3 -y
Baixar o Oracle client:
sudo wget https://download.oracle.com/otn_software/linux/instantclient/219000/oracle-instantclient-basic-21.9.0.0.0-1.el8.x86_64.rpm
Instalar o Oracle client:
sudo yum install oracle-instantclient-basic-21.9.0.0.0-1.el8.x86_64.rpm
Criar o arquivo de configuração:
sudo nano /etc/ld.so.conf.d/oracle.conf
No arquivo criado, incluir o conteúdo abaixo:
/usr/lib/oracle/21/client64/lib/
Carregar a configuração:
sudo ldconfig
Passo 5 — Configuração do conector:
De volta ao cloud shell crie uma service-account para ser usada pelo connector:
gcloud iam service-accounts create sa-datacatalog-connector \
--display-name="sa-datacatalog-connector"
Atribua a role Data Catalog Admin para a service account:
gcloud projects add-iam-policy-binding woven-ceremony-375618 \
--member="serviceAccount:sa-datacatalog-connector@woven-ceremony-375618.iam.gserviceaccount.com" \
--role="roles/datacatalog.categoryAdmin"
Crie uma chave para a service account recém criada. Um arquivo com chave será baixado automaticamente:
gcloud iam service-accounts keys create my-key.json \
--iam-account=sa-datacatalog-connector@woven-ceremony-375618.iam.gserviceaccount.com
Execute a cópia da chave para a VM datacatalog-connector-vm
gcloud compute scp --recurse my-key.json datacatalog-connector-vm: --zone us-central1-a
Agora podemos voltar para o console da VM datacatalog-connector-vm:
Instale o Virtualenv do Python:
sudo pip3 install virtualenv
Crie um novo Virtualenv:
virtualenv --python python3 mydemoenv
Ative o Virtualenv:
source mydemoenv/bin/activate
Instale o conector Oracle no Virtualenv:
mydemoenv/bin/pip install google-datacatalog-oracle-connector
Defina as variáveis de ambiente que serão utilizadas pelo conector:
export GOOGLE_APPLICATION_CREDENTIALS=data_catalog_credentials_file
export ORACLE2DC_DATACATALOG_PROJECT_ID=google_cloud_project_id
export ORACLE2DC_DATACATALOG_LOCATION_ID=google_cloud_location_id
export ORACLE2DC_ORACLE_SERVER=oracle_server
export ORACLE2DC_ORACLE_SERVER_PORT=oracle_server_port
export ORACLE2DC_ORACLE_USERNAME=oracle_username
export ORACLE2DC_ORACLE_PASSWORD=oracle_password
export ORACLE2DC_ORACLE_DATABASE_SERVICE=oracle_db_service
Exemplo com valores preenchidos:
export GOOGLE_APPLICATION_CREDENTIALS=credentials/my-sa.json
export ORACLE2DC_DATACATALOG_PROJECT_ID=woven-ceremony-123123
export ORACLE2DC_DATACATALOG_LOCATION_ID=us-central1
export ORACLE2DC_ORACLE_SERVER=10.121.12.12
export ORACLE2DC_ORACLE_SERVER_PORT=1521
export ORACLE2DC_ORACLE_USERNAME=meuusuario
export ORACLE2DC_ORACLE_PASSWORD=minhasenha
export ORACLE2DC_ORACLE_DATABASE_SERVICE=XE
Agora basta executar o conector para que os metadados sejam carregados no Data Catalog:
google-datacatalog-oracle-connector \
--datacatalog-project-id=$ORACLE2DC_DATACATALOG_PROJECT_ID \
--datacatalog-location-id=$ORACLE2DC_DATACATALOG_LOCATION_ID \
--oracle-host=$ORACLE2DC_ORACLE_SERVER \
--oracle-port=$ORACLE2DC_ORACLE_SERVER_PORT \
--oracle-user=$ORACLE2DC_ORACLE_USERNAME \
--oracle-pass=$ORACLE2DC_ORACLE_PASSWORD \
--oracle-db-service=$ORACLE2DC_ORACLE_DATABASE_SERVICE
Concluída a execução, um novo entry group do Data Catalog será criado. Nome e descrição podem ser atualizados conforme a necessidade.
No entry group foram criadas entradas referentes às tabelas e schemas carregados:
Além disso, tags foram criadas, comentários foram carregados e a URL de origem da base foi preenchida:
Conclusão
Neste post vimos o procedimento para carregar metadados de uma base Oracle no Data Catalog. Uma vez feita a carga dos metadados podemos usar as capacidades de otimização de governança e descoberta de dados oferecidas pela ferramenta.
Vale lembrar que utilizamos IPs públicos durante o procedimento em virtude de se tratar de uma demonstração. Em ambientes corporativos, mesmo que não produtivos, é altamente recomendado trabalhar apenas com IPs privados.
Outras opções de uso do conector utilizado podem ser verificadas no respectivo repositório público.