Skip to content
Snippets Groups Projects
Commit 9945699a authored by j-armenio's avatar j-armenio
Browse files

add: Conexão com o Clickhouse

parent f069cecf
No related branches found
No related tags found
No related merge requests found
# Conexão com o Clickhouse
---
O superset não tem por padrão o driver de conexão com o `clickhouse` instalado, então devemos instalar manualmente, seguindo o tutorial em https://superset.apache.org/docs/configuration/databases#clickhouse.
## Instalando o conector clickhouse
Para que o conector seja instalado toda vez que for feita uma nova imagem do superset (utilizando o dockerfile disponível por padrão) deve ser criado o arquivo `./docker/requirements-local.txt` e colocado dentro dele:
```txt
clickhouse-connect>=0.6.8
```
Em seguida é necessário comentar as seguintes linhas do arquivo `.gitignore`:
```gitignore
# docker/requirements-local.txt
# docker/*local*
```
### O arquivo `./docker/requirements-local.txt`
É um arquivo de configuração de pacotes do python, como um `requirements.txt` do pip.Ele serve para assegurar que os pacotes Python sejam instalados ao executar algum `docker compose`.
## Conectando ao clickhouse
Para conectar ao clickhouse basta acessar o Superset no navegador, ir nas configurações clicar em adicionar novo Database e inserir os seguintes dados:
- Host: host do banco de dados clickhouse
- Port: porta que o banco está servindo
- Database: qual banco de dados acessar
- User: Qual usuário vai conectar no banco
- Password: Qual a senha que deve ser utilizada par o User conectar no banco
- Database Name: Como deve ser chamado o database dentro do Superset
### Conectando ao clickhouse (programaticamente)
É possível criar essa conexão automaticamente ao subir o Superset, para evitar ter de criar sempre que uma nova imagem for construida ou apagar o banco de metadados do superset.
Para isso vamos utilizar o arquivo `./docker/docker-init.sh`. Esse script é executado para iniciar o superset, nele temos acesso a executar o comando:
```bash
superset set_database_uri --database_name "$SUPERSET_CLICKHOUSE_DATABASE_NAME" --uri "$SUPERSET_CLICKHOUSE_URI"
```
Para mater um padrão de código, o trecho adicionado deve ser parecido com
```bash
# =================== C3SL-docs Conectando o clickhouse ===================
if [ "$SUPERSET_CONNECT_CLICKHOUSE" = "yes" ]; then
echo_step "5" "Starting" "Coonectando com clickhouse (clickhouse@c3sl.ufpr.br)"
SUPERSET_CLICKHOUSE_URI="clickhousedb://$SUPERSET_CLICKHOUSE_USERNAME:$SUPERSET_CLICKHOUSE_PASSWORD@$SUPERSET_CLICKHOUSE_HOST:$SUPERSET_CLICKHOUSE_PORT/$SUPERSET_CLICKHOUSE_DATABSE"
superset set_database_uri --database_name "$SUPERSET_CLICKHOUSE_DATABASE_NAME" --uri "$SUPERSET_CLICKHOUSE_URI"
echo_step "5" "Complete" "Coonectando com clickhouse (clickhouse@c3sl.ufpr.br)"
fi
# =================== C3SL-docs Conectando o clickhouse ===================
```
Ele cria uma nova conexão com o database já cofigurado anteriormente.
##### :mega: NÃO TENTA CRIAR NOVA CONEXÃO SE ELA JÁ EXISTE.
### Configurando as variáveis de conexão
São necessárias algumas variáveis de credenciais para que seja criado o database, elas devem se criadas e adicionadas em `./docker/.env`. São elas:
```bash
# =================== C3SL-docs Conectando o clickhouse ===================
SUPERSET_CONNECT_CLICKHOUSE=yes
SUPERSET_CLICKHOUSE_USERNAME=depp
SUPERSET_CLICKHOUSE_PASSWORD='<password>'
SUPERSET_CLICKHOUSE_HOST=clickhouse.c3sl.ufpr.br
SUPERSET_CLICKHOUSE_PORT=8123
SUPERSET_CLICKHOUSE_DATABSE=dados_educacionais
SUPERSET_CLICKHOUSE_DATABASE_NAME='ClickHouse - DEPP'
# =================== C3SL-docs Conectando o clickhouse ===================
```
##### :mega: Ver com equipe de BD as credenciais para preencher as variáveis.
##### :warning: Descobrir forma de não deixar essas variáveis "hardcoded" no repositório, criar script de prod.
......@@ -15,7 +15,7 @@ Para não colocar o plugin em `/tmp` crie um diretório que fica fora da raiz do
Siga o tutorial até a parte que ele pede para executar `npm run dev-server`. Sim, vamos rodar local o superset-frontend (mas apenas ele, o backend e banco ainda vão estar no docker). Para que o superset não crie o serviço webpack no docker precisamos marcar a flag `BUILD_SUPERSET_FRONTEND_IN_DOCKER=false` e depois executar o `docker compose up` na raiz do projeto. Após subir o docker podemos rodar `npm run dev-server`.
Baseado no que já vimos de [como rodar o frontend local]() você pode escolher como quer rodar
Baseado no que já vimos de [como rodar o frontend local](/Criacao_teste_producao_do_frontend.md) você pode escolher como quer rodar
- `npm run dev`: Sem servidor webpack
- `npm run dev-server`: Com servidor webpack
......
# Criação, teste e produção do frontend Superset
---
O superset atual é formado por vários processos:1
O superset atual é formado por vários processos:
* backend
* banco
......
# Dev Front Remoto
---
No momento a melhor solução que encontramos para o desenvolvimento usando Superset é: rodar o frontend local nas máquinas de cada dev, conectados ao backend de uma VM de desenvolvimento.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment