-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #42 from VitorM3/feat/docs
Feat/docs
- Loading branch information
Showing
9 changed files
with
134 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
# Arquitetura do Projeto | ||
|
||
<br> | ||
|
||
![System Architecture](./assets/architecture.png "Arquitetura do Sistema") | ||
|
||
<br> | ||
|
||
--- | ||
|
||
## Banco relacional | ||
|
||
A ingestão de dados é feita a partir de um banco de dados relacional, onde são armazenados os dados brutos do sistema de E-commerce. | ||
|
||
## ETL | ||
|
||
Fluxo da pipeline explicado em [ETL](./etl.md) | ||
|
||
|
||
## Ferramentas | ||
|
||
Para saber mais sobre as ferramentas utilizadas no projeto, acesse [Ferramentas](./ferramentas.md) | ||
|
||
## Banco dimensional | ||
|
||
O banco dimensional é o responsável por armazenar os dados de forma otimizada para a realização de consultas analíticas. O mesmo possui as seguintes tabelas: | ||
|
||
- **Dimensão de Categorias de Produtos** | ||
- **Dimensão de Localização** | ||
- **Dimensão de Vendedores** | ||
- **Dimensão de Clientes** | ||
- **Fato de Vendas** |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
# ETL | ||
|
||
## Introdução | ||
O Processo de ETL consiste em enviar dados de uma base para outra (ou para um data lake) da forma mais otimizada possível e realizando as devidas formatações e transformações. | ||
|
||
## Ferramentas | ||
|
||
- Apache Airflow - Ferramenta de orquestração de pipelines | ||
- Apache Spark - Ferramenta de processamento de dados | ||
- PySpark - Biblioteca Python para processamento de dados | ||
- MiniO - Object Storage | ||
- PostgreSql - Banco de dados relacional | ||
|
||
## Passos Executados | ||
|
||
1. Através do Apache Airflow nós realizamos a chamada de uma Dag (processo de pipeline que neste caso será utilizado para realizar o envio de dados de uma base de dados de Ecommerce para uma base de dados dimensional), possibilitando assim, melhor análise dos dados. A Dag ETL (Dag configurada no Airflow para realizar esta operação) realizará a chamada do processo **etl_get_data** que tem como objetivo buscar os dados do banco PostgreSql e criar arquivos `.csv` contendo 1000 dados cada, facilitando assim a leitura destes. | ||
|
||
2. Após o processo **etl_get_data** ser concluido, realizamos a chamada do processo **etl_leading**, que tem como objetivo ler os arquivos `.csv` contendo os dados do banco e enviar eles para o **MiniO** que neste contexto servirá como Object Storage. Estes arquivos são salvos no MiniO no formato `parquet`. | ||
|
||
3. Sendo concluido o processo da camada leading, o Airflow realiza a chamada do processo **etl_bronze** que tem como objetivo ler os arquivos `parquet` e criar uma **Delta Table** destes, otimizando assim as consultas subsequentes. | ||
|
||
4. Posteriormente, será chamado o processo **etl_silver** que será responsável pela transformação dos dados nos padrões necessários | ||
|
||
5. Último processo dentro da arquitetura medalhão, o **etl_gold**, que enviará os dados que estão nas tabelas delta para o banco dimensional **PostgreSql**. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
# Ferramentas | ||
|
||
--- | ||
|
||
## Introdução | ||
|
||
Este documento descreve as ferramentas utilizadas no projeto, incluindo as tecnologias de banco de dados, linguagens de programação, ferramentas de orquestração de pipelines e armazenamento de objetos. | ||
|
||
Utilizamos as seguintes ferramentas: | ||
|
||
- **PostgreSQL** - Banco de dados relacional | ||
- **Python** - Linguagem de programação utilizada para criar os scripts de extração, transformação e carga de dados | ||
- **Docker** - Containerização de aplicações | ||
- **Apache Spark** - Processamento de dados em larga escala | ||
- **Apache Airflow** - Orquestrador de tarefas | ||
- **Visual Studio Code** - Editor de código | ||
- **Astro CLI** - Ferramenta de linha de comando para gerenciamento de infraestrutura | ||
- **Minio** - Armazenamento de objetos | ||
|
||
## Descrição | ||
|
||
<br> | ||
|
||
**PostgreSQL** | ||
|
||
O PostgreSQL é um sistema de gerenciamento de banco de dados relacional de código aberto e amplamente utilizado. Ele oferece suporte a recursos avançados de SQL e é conhecido por sua confiabilidade, escalabilidade e extensibilidade. | ||
|
||
**Python** | ||
|
||
Python é uma linguagem de programação de alto nível, interpretada e de propósito geral. É amplamente utilizada em ciência de dados, desenvolvimento web, automação de tarefas e muito mais. No projeto de Ecommerce, utilizamos Python para criar scripts de ETL e outras tarefas de processamento de dados. | ||
|
||
**Docker** | ||
|
||
Docker é uma plataforma de código aberto que facilita a criação, implantação e execução de aplicativos em contêineres. Ele permite que os desenvolvedores empacotem uma aplicação com todas as suas dependências em um contêiner, garantindo que ela funcione de forma consistente em qualquer ambiente. | ||
|
||
**Apache Spark** | ||
|
||
Apache Spark é um framework de processamento de dados em larga escala, conhecido por sua velocidade e facilidade de uso. Ele oferece suporte a várias linguagens de programação, incluindo Python, e é amplamente utilizado para análise de dados, machine learning e processamento de streaming. | ||
|
||
**Apache Airflow** | ||
|
||
Apache Airflow é uma plataforma de orquestração de pipelines de dados, que permite agendar, monitorar e executar tarefas de forma automatizada. Ele oferece suporte a fluxos de trabalho complexos e é altamente configurável, tornando-o uma escolha popular para a automação de processos de ETL e análise de dados. | ||
|
||
**Visual Studio Code** | ||
|
||
Visual Studio Code é um editor de código leve, poderoso e altamente personalizável, desenvolvido pela Microsoft. Ele oferece suporte a várias linguagens de programação e possui uma ampla variedade de extensões que facilitam o desenvolvimento de aplicativos e scripts. | ||
|
||
**Astro CLI** | ||
|
||
Astro CLI é uma ferramenta de linha de comando para gerenciamento de infraestrutura, desenvolvida pela Astronomer. Ela simplifica a implantação e o gerenciamento de pipelines de dados baseados em Apache Airflow, permitindo que os usuários criem, execute e monitorem tarefas de forma eficiente. | ||
|
||
**Minio** | ||
|
||
Minio é um serviço de armazenamento de objetos de código aberto, compatível com o Amazon S3. Ele oferece escalabilidade, alta disponibilidade e segurança para o armazenamento de dados não estruturados, como imagens, vídeos e arquivos de log. | ||
|
||
|
||
## Instalação | ||
|
||
Para instalar as ferramentas utilizadas no projeto, basta ir na raiz do projeto e executar o comando: | ||
|
||
```bash | ||
docker compose up | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
[Link da apresentação no Canva](https://www.canva.com/design/DAGJdL3BhgE/kQi-wUCPOrfQJElrjXXcVg/edit?utm_content=DAGJdL3BhgE&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton) |