Marcelo Kruger apresenta sobre ganhar desempenho em processos de carga de dados. Ele discute os desafios da carga de grandes volumes de dados de diferentes tipos e fontes. Kruger realizou testes de carga de dados usando diferentes linguagens e conclui que Golang fornece o melhor desempenho, sendo uma boa opção para carga de dados em bancos PostgreSQL.
Patterns & Best Practices para uma Arquitetura de Software Baseada em In-Memo...
Apresentação TDC 2018 - Go e Banco de Dados
1. G O E B A N C O D E D A D O S
M A R C E L O
K R Ü G E R
D A T A I N T E G R A T I O N
T E A M
GANHANDO DESEMPENHO EM PROCESSOS DE CARGA DE DADOS
2. A P R E S E N T A Ç Ã O
FORMAÇÃO Ciências da Computação - UNIVALI/SJ
VIDA
PROFISSIONAL
Digitro Tecnologia: Integração de Dados e DBA (Oracle,
DB2 e PostgreSQL)
Cassol Centerlar: DBA Oracle
Neoway: Especialista de Dados e DBA PostgreSQL
PUBLICAÇÕES Efficient Execution of Conjunctive Complex Queries on
Big Multimedia Databases (Co-autor)
Baquara: A Holistic Ontological Framework for
Movement Analysis with Linked Data (Co-autor)
Fragmentação, caracterização e recuperação de
imagens em bases de dados Oracle (Autor)
3. N E O W A Y
100% Big Data
Fornecer soluções que vão além de exibir dados,
mas sim gerar informação e conhecimento para
tomada de decisão
Não ser mais do mesmo, ser DIFERENTE!
4. B I G D A T A
Grande Volume de Dados, estruturados e não estruturados,
oriundos de diversas fontes
=
Gerar conhecimento para auxiliar na tomada de decisão
5. D E S A F I O S D A C A R G A D E D A D O S
Grande volume de dados
Dados Transacionais, Informações publicas, Dados de
Sensores, ...
Dados em diversos tipos de arquivo
CSV / Texto / Json / XML
Quanto maior o volume, maior o tempo para carregar dados
em uma estrutura
Escalabilidade / Velocidade / Facil manutenção
6. O B A N C O D E D A D O S
Recebe a maior carga dentro de uma estrutura de dados
Recurso compartilhado entre outros processos e usuarios
Uso constante de recursos (CPU / Memoria / Disco)
Maior criticidade frente a outros processos
Como carregar dados de forma eficiente sem
prejudicar o banco de dados?
7. F O R M A S D E R E A L I Z A R C A R G A
D E D A D O S
COPY
PL/SQL
Scripts (BASH)
Softwares para ETL (PDI, )
Via Linguagens
JAVA / C# / Phython / C++ / Go, ....
8. Q U A L U T I L I Z A R ?
Realizado teste de inserção em massa no PostgreSQL, utilizando
as linguagens Java, C#, Python e GO
Estrutura do teste
CPU: i7
Memoria: 8GB
Banco de Dados: PostgreSQL 9.6 em container Docker
Carga de 5 mihões de empresas (CNPJ e Razão Social)
Processo e Banco de Dados estão executando na mesma estrutura.
9. Q U A L U T I L I Z A R ?
0
2
4
6
8
10
Java C# Python Go
Tempo de Execução em cada linguagem (Minutos)
10. Q U A L U T I L I Z A R ?
Golang
Além do desempenho para carga de dados
Programação concorrente/paralela nativa
Desempenho (Baseado em C o/)
Multiplataforma
Open Source
Facilmente escalável
Simples!
11. D E P E N D Ê N C I A S P A R A C A R G A
D O S D A D O S
database/sql
github.com/lib/pq (Driver PostgreSQL)
12. E X T R A
Para melhorar o tempo de carga é possivel ainda recorrer a
estruturas de Pool no PostgreSQL.
13. O B R I G A D O !
M A R C E L O . K R U G E R @ N E O W A Y . C O M . B R
M A R C E L O K R U G E R . C O M . B R