SlideShare uma empresa Scribd logo
Porque aprender várias
linguagens me tornou um DBA
(e desenvolvedor) melhor?
por Dickson S. Guedes
Definição de “melhor”...
É sobre o quê?
● Vou ganhar mais dinheiro?
● Vou ficar mais inteligente?
● Vou aprender novas linguagens de programação?
● Vou dominar o mundo?
● Vou ser mais feliz?
Situação de muitas empresas com
os papéis DBA e DEV
Silo DBA
Silo DEV
Situação de muitas empresas com
os papéis DBA e DEV
PÁ!Silo DBA
Silo DEV
Situação de muitas empresas com
os papéis DBA e DEV
PÁ!
PÁ!Silo DBA
Silo DEV
Situação de muitas empresas com
os papéis DBA e DEV
PÁ!
PÁ!
QUE SILOS SÃO
ESSES?
É sobre o que?
É sobre empatia
É sobre empatia
conhecimento
É sobre empatia
conhecimento
humildade
É sobre empatia
conhecimento
humildade
e acima de tudo ...
entregar valor!
Mas…
como que aprender várias
linguagens vai me
permitir isto?
Então vamos ver alguns exemplos
Java
Muito utilizada no mundo
“Enterprise”
Orientação a Objeto
ORM
Hibernate
Troca de mensagens
@Annotations
Coisas que você verá no Java
● JDBC, Dialect
● compra.getProduto().getCategoria().getNomeCategoria()
● use JOIN FETCH
● PreparedStatement
○ SELECT a, b FROM tb WHERE c = 1234 AND d > 1000;
○ SELECT a, b FROM tb WHERE c = $1 AND d > $2;
Coisas que você verá no Java
● CREATE TEMP TABLE foo -> WITH foo as ( …. )
● Exemplos
…
@Column(name="DESC", nullable=false, length=512)
public String getDescription() { return description; }
@Column(name="ORDER_COST", updatable=false, precision=12, scale=2)
public BigDecimal getCost() { return cost; }
...
C
ponteiros
struct
o cuidado com a memória
o código do PostgreSQL
armazenamento dos dados
o dado crú, o void* e o tipo..
C
● Compatibilidade com vários sistemas operacionais
● Suíte de testes do PostgreSQL
● Usando PostgreSQL no raspberryPI
○ http://www.pgconf.com.br/raspberrypi/
Ruby
Metaprogramação
Migrations
Testes
Rails
tooling: gem, rvm, renv, rails new
Do Ruby ao banco evolutivo e ao pgvm
● Mudanças incrementais
● Git
● Testes
● pgvm inspirado no rvm
● pgxn-utils inspirado no rails new
● method_missing
Python
Zen do Python
Explícito melhor que implícito
Melhor pedir perdão que
permissão e o conceito de
transação
Dataframes
ORM SQL Alchemy
pip
Do Python ao Django, do Django ao SETL
from setl import *
inicializa = [
Initialize(‘inicializa_banco’, force=True),
]
extrai = [
SQL(‘produtos’),
SQL(‘pessoas’),
CSV(‘pedidos_externos’, file=’PED.csv’),
]
finaliza = [
Run(‘limpa_logs’),
]
SETL.run(initializers=inicializa,
extractors=extrai,
finalizers=finaliza);
Javascript
funcional, JSON, Promises
Event driven
async
Data Driven Document (D3.js)
Exemplo D3.js
Data Driven Documents
Javascript
CSV
d3.csv(‘aquivo.csv’, function(data)
{
...
});
Erlang/Elixir
funcional, supervisors, atores,
deixe falhar
não é sobre sintaxe
macros
imutabilidade
pattern matching
recursividade
Me levaram a ...
● PGEx
○ entender o protocolo do PostgreSQL
● ExJSON
○ Só me divertir mesmo…
● Funções de agregação no PostgreSQL
CREATE AGGREGATE e recursividade??
CREATE AGGREGATE media (float8)
(
sfunc = acumula_float8,
stype = float8[],
finalfunc = media_float8,
initcond = '{0,0,0}'
);
acumula_float8 vai concatenando os valores em um array
media_float8 recebe o array no final, soma os valores e divide
pelo número de elementos
Rust
segurança, FFI
escrever em Rust no lugar de C
cross-compilation
Me levou a ...
● prsql
○ um cliente de linha de comando como o psql
Então é uma
questão de ...
Conectar
pontos!
comunicação, percepção,
linguagem, informação, reflexão,
pensamento
O que procurar numa linguagem?
O porquê da linguagem
Porque surgiram?
Ruby:
originalmente planejada e desenvolvida no Japão em 1995, por Yukihiro "Matz"
Matsumoto, para ser usada como linguagem de script.
Matz queria uma linguagem de script que fosse mais poderosa do que Perl, e
mais orientada a objetos do que Python
suporta programação funcional, orientada a objetos, imperativa e reflexiva.
inspirada principalmente por Python, Perl, Smalltalk, Eiffel, Ada e Lisp
Porque surgiram?
Python:
projetada com a filosofia de enfatizar a importância do esforço do programador
sobre o esforço computacional.
prioriza a legibilidade do código sobre a velocidade ou expressividade.
combina uma sintaxe concisa e clara com os recursos de sua biblioteca padrão e
por módulos e frameworks desenvolvidos por terceiros
Porque surgiram?
Javascript:
originalmente implementada como parte dos navegadores web para que scripts
pudessem ser executados do lado do cliente e interagissem com o usuário sem a
necessidade deste script passar pelo servidor, controlando o navegador,
realizando comunicação assíncrona e alterando o conteúdo do documento
exibido.
concebida para ser uma linguagem script com orientação a objetos baseada em
protótipos, tipagem fraca e dinâmica e funções de primeira classe
Porque surgiram?
Erlang
é uma linguagem de programação de uso geral e um sistema para execução
desenvolvida pela Ericsson para suportar aplicações distribuídas e tolerantes a falhas a
serem executadas em um ambiente de tempo real e ininterrupto
hot swapping, criar e gerenciar processos é uma tarefa trivial em Erlang
a comunicação entre processos é feita por troca de mensagens
Algumas palestras que podem explorar melhor os
temas que abordei aqui ...
Como ser um DBA na era DevOps - Sebastian Webber
Criando uma extensão para PostgreSQL - Marcone Viana Peres
Usando PostgreSQL no raspberryPI - Gustavo Sperandio
Go e PostgreSQL, ganhando desempenho em processos de carga de dados -
Marcelo Kruger
Tudo isso foi apenas um índice..
50% concluído
Os outros 50% estão com vocês...
FIM...
twitter.com/guediz | github.com/guedes … e obrigado pelos peixes!

Mais conteúdo relacionado

PPT
Entendendo um pouco melhor o que é Ruby
ODP
Phpreact flisol-fb-2014
PDF
Entendendo Conceitos Caching com PHP
PDF
Refatorar é preciso! 2.0
PDF
Programação funcional que funciona
PPTX
Sobre TDD - Tech Friday da Everis Uberlândia
PDF
Frameworks PHP
PPTX
Big data da teoria à prática
Entendendo um pouco melhor o que é Ruby
Phpreact flisol-fb-2014
Entendendo Conceitos Caching com PHP
Refatorar é preciso! 2.0
Programação funcional que funciona
Sobre TDD - Tech Friday da Everis Uberlândia
Frameworks PHP
Big data da teoria à prática

Mais procurados (20)

PDF
Objects calisthenics - Os 10 mandamentos do rei do código
PDF
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
PDF
Projeto de API, por Gilmar P.S
PDF
Crescendo profissionalmente com o apoio comunidade
PDF
Refinamento e boas práticas de programação
PPTX
Behaviour Driven Development
PPTX
Boas práticas técnica para um código limpo (Clean Code)
PPT
Desenvolvimento web: PHP orientado a objetos
PDF
Refatorar é preciso. Palestra TDC 2014
PPTX
Unit Test JavaScript
ODP
Palestra Faculdade Lourenço Filho
PDF
Javascript por debaixo dos panos
PDF
Engenharia rever sa mentebinaria
PPTX
5 meses de python o que aprendi
PPTX
Conhecendo o Novo REST Framework
PDF
Tdd com Node.js
PDF
Ferramentas Livres Para Desenvolvimento com PHP
PDF
Cacheamento Lado Servidor
PDF
Código limpo php
PDF
PHP Jedi - Boas Práticas e Alta Performance
Objects calisthenics - Os 10 mandamentos do rei do código
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Projeto de API, por Gilmar P.S
Crescendo profissionalmente com o apoio comunidade
Refinamento e boas práticas de programação
Behaviour Driven Development
Boas práticas técnica para um código limpo (Clean Code)
Desenvolvimento web: PHP orientado a objetos
Refatorar é preciso. Palestra TDC 2014
Unit Test JavaScript
Palestra Faculdade Lourenço Filho
Javascript por debaixo dos panos
Engenharia rever sa mentebinaria
5 meses de python o que aprendi
Conhecendo o Novo REST Framework
Tdd com Node.js
Ferramentas Livres Para Desenvolvimento com PHP
Cacheamento Lado Servidor
Código limpo php
PHP Jedi - Boas Práticas e Alta Performance
Anúncio

Semelhante a Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor (20)

PPTX
Domain-Driven Design
PPTX
Apresentação faef
PDF
FISL12. Web Services e Computação em Nuvem com PHP
PPTX
#Moving br workshop
KEY
Django - Desenvolvimento web ágil com Python
PDF
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
PPT
Apresentação faef
PDF
PDF
Curso - Introdução - Aprendendo o Básico de Laravel
PDF
Além da programação funcional com Elixir e Erlang
PPT
Desenvolvimento Agil Com Doctrine Orm
PDF
Desenvolvimento web com python e django
PDF
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
PPTX
Programando com prazer com DDD
PDF
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
PPS
Automação de testes para equipes agile
PDF
Lidando com Equipes de Desenvolvimento
PPT
Scrum e o Ambiente de Desenvolvimento Ágil
PDF
FJN 2011
PPTX
Xamarin UI Test + BDD Specflow
Domain-Driven Design
Apresentação faef
FISL12. Web Services e Computação em Nuvem com PHP
#Moving br workshop
Django - Desenvolvimento web ágil com Python
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
Apresentação faef
Curso - Introdução - Aprendendo o Básico de Laravel
Além da programação funcional com Elixir e Erlang
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento web com python e django
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Programando com prazer com DDD
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Automação de testes para equipes agile
Lidando com Equipes de Desenvolvimento
Scrum e o Ambiente de Desenvolvimento Ágil
FJN 2011
Xamarin UI Test + BDD Specflow
Anúncio

Mais de Dickson S. Guedes (20)

PDF
Ganhando tempo automatizando com SQL
PDF
O mínimo necessário que você precisa conhecer sobre computação quântica
PDF
Pattern matching - O que é? Onde vive? Do que se alimenta? Como se reproduz?
PDF
Primeiros passos machine learning PostgreSQL
PDF
Dicas de sobrevivência de um DBA sem mouse
PDF
Destistificando o EXPLAIN
PDF
Falando "Postgrês"
PDF
Se meu elefante falasse
PDF
Curiosidades que você (talvez) não sabia e se sabia vale a pena lembrar
PDF
O Elefante Poliglota
PDF
Como encontrar uma agulha num palheiro de logs
PDF
Como encontrar uma agulha no palheiro de logs do PostgreSQL
PDF
Gerenciando múltiplas versões do PostgreSQL com pgvm
PDF
PGXN - Como distribuir suas extensões com o PostgreSQL
PDF
Pgxn.pgday
PDF
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
PDF
Plante uma árvore, escreva um livro, tenha um filho e contribua com software ...
PDF
Conhecendo Postgresql.- ENECOMP 2009
PDF
Minicurso Postgresql - Enecomp 2009
PDF
Testes unitarios no PostgreSQL com pgTAP
Ganhando tempo automatizando com SQL
O mínimo necessário que você precisa conhecer sobre computação quântica
Pattern matching - O que é? Onde vive? Do que se alimenta? Como se reproduz?
Primeiros passos machine learning PostgreSQL
Dicas de sobrevivência de um DBA sem mouse
Destistificando o EXPLAIN
Falando "Postgrês"
Se meu elefante falasse
Curiosidades que você (talvez) não sabia e se sabia vale a pena lembrar
O Elefante Poliglota
Como encontrar uma agulha num palheiro de logs
Como encontrar uma agulha no palheiro de logs do PostgreSQL
Gerenciando múltiplas versões do PostgreSQL com pgvm
PGXN - Como distribuir suas extensões com o PostgreSQL
Pgxn.pgday
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Plante uma árvore, escreva um livro, tenha um filho e contribua com software ...
Conhecendo Postgresql.- ENECOMP 2009
Minicurso Postgresql - Enecomp 2009
Testes unitarios no PostgreSQL com pgTAP

Último (19)

PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Processos na gestão de transportes, TM100 Col18
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Processos na gestão de transportes, TM100 Col18
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Apple Pippin Uma breve introdução. - David Glotz
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Aula04-Academia Heri- Tecnologia Geral 2025
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Custos e liquidação no SAP Transportation Management, TM130 Col18
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Aula 18 - Manipulacao De Arquivos python
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
COBITxITIL-Entenda as diferença em uso governança TI
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...

Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor

  • 1. Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor? por Dickson S. Guedes
  • 3. É sobre o quê? ● Vou ganhar mais dinheiro? ● Vou ficar mais inteligente? ● Vou aprender novas linguagens de programação? ● Vou dominar o mundo? ● Vou ser mais feliz?
  • 4. Situação de muitas empresas com os papéis DBA e DEV Silo DBA Silo DEV
  • 5. Situação de muitas empresas com os papéis DBA e DEV PÁ!Silo DBA Silo DEV
  • 6. Situação de muitas empresas com os papéis DBA e DEV PÁ! PÁ!Silo DBA Silo DEV
  • 7. Situação de muitas empresas com os papéis DBA e DEV PÁ! PÁ! QUE SILOS SÃO ESSES?
  • 8. É sobre o que?
  • 14. Mas… como que aprender várias linguagens vai me permitir isto?
  • 15. Então vamos ver alguns exemplos
  • 16. Java Muito utilizada no mundo “Enterprise” Orientação a Objeto ORM Hibernate Troca de mensagens @Annotations
  • 17. Coisas que você verá no Java ● JDBC, Dialect ● compra.getProduto().getCategoria().getNomeCategoria() ● use JOIN FETCH ● PreparedStatement ○ SELECT a, b FROM tb WHERE c = 1234 AND d > 1000; ○ SELECT a, b FROM tb WHERE c = $1 AND d > $2;
  • 18. Coisas que você verá no Java ● CREATE TEMP TABLE foo -> WITH foo as ( …. ) ● Exemplos … @Column(name="DESC", nullable=false, length=512) public String getDescription() { return description; } @Column(name="ORDER_COST", updatable=false, precision=12, scale=2) public BigDecimal getCost() { return cost; } ...
  • 19. C ponteiros struct o cuidado com a memória o código do PostgreSQL armazenamento dos dados o dado crú, o void* e o tipo..
  • 20. C ● Compatibilidade com vários sistemas operacionais ● Suíte de testes do PostgreSQL ● Usando PostgreSQL no raspberryPI ○ http://www.pgconf.com.br/raspberrypi/
  • 22. Do Ruby ao banco evolutivo e ao pgvm ● Mudanças incrementais ● Git ● Testes ● pgvm inspirado no rvm ● pgxn-utils inspirado no rails new ● method_missing
  • 23. Python Zen do Python Explícito melhor que implícito Melhor pedir perdão que permissão e o conceito de transação Dataframes ORM SQL Alchemy pip
  • 24. Do Python ao Django, do Django ao SETL from setl import * inicializa = [ Initialize(‘inicializa_banco’, force=True), ] extrai = [ SQL(‘produtos’), SQL(‘pessoas’), CSV(‘pedidos_externos’, file=’PED.csv’), ] finaliza = [ Run(‘limpa_logs’), ] SETL.run(initializers=inicializa, extractors=extrai, finalizers=finaliza);
  • 25. Javascript funcional, JSON, Promises Event driven async Data Driven Document (D3.js)
  • 26. Exemplo D3.js Data Driven Documents Javascript CSV d3.csv(‘aquivo.csv’, function(data) { ... });
  • 27. Erlang/Elixir funcional, supervisors, atores, deixe falhar não é sobre sintaxe macros imutabilidade pattern matching recursividade
  • 28. Me levaram a ... ● PGEx ○ entender o protocolo do PostgreSQL ● ExJSON ○ Só me divertir mesmo… ● Funções de agregação no PostgreSQL
  • 29. CREATE AGGREGATE e recursividade?? CREATE AGGREGATE media (float8) ( sfunc = acumula_float8, stype = float8[], finalfunc = media_float8, initcond = '{0,0,0}' ); acumula_float8 vai concatenando os valores em um array media_float8 recebe o array no final, soma os valores e divide pelo número de elementos
  • 30. Rust segurança, FFI escrever em Rust no lugar de C cross-compilation
  • 31. Me levou a ... ● prsql ○ um cliente de linha de comando como o psql
  • 34. O que procurar numa linguagem?
  • 35. O porquê da linguagem
  • 36. Porque surgiram? Ruby: originalmente planejada e desenvolvida no Japão em 1995, por Yukihiro "Matz" Matsumoto, para ser usada como linguagem de script. Matz queria uma linguagem de script que fosse mais poderosa do que Perl, e mais orientada a objetos do que Python suporta programação funcional, orientada a objetos, imperativa e reflexiva. inspirada principalmente por Python, Perl, Smalltalk, Eiffel, Ada e Lisp
  • 37. Porque surgiram? Python: projetada com a filosofia de enfatizar a importância do esforço do programador sobre o esforço computacional. prioriza a legibilidade do código sobre a velocidade ou expressividade. combina uma sintaxe concisa e clara com os recursos de sua biblioteca padrão e por módulos e frameworks desenvolvidos por terceiros
  • 38. Porque surgiram? Javascript: originalmente implementada como parte dos navegadores web para que scripts pudessem ser executados do lado do cliente e interagissem com o usuário sem a necessidade deste script passar pelo servidor, controlando o navegador, realizando comunicação assíncrona e alterando o conteúdo do documento exibido. concebida para ser uma linguagem script com orientação a objetos baseada em protótipos, tipagem fraca e dinâmica e funções de primeira classe
  • 39. Porque surgiram? Erlang é uma linguagem de programação de uso geral e um sistema para execução desenvolvida pela Ericsson para suportar aplicações distribuídas e tolerantes a falhas a serem executadas em um ambiente de tempo real e ininterrupto hot swapping, criar e gerenciar processos é uma tarefa trivial em Erlang a comunicação entre processos é feita por troca de mensagens
  • 40. Algumas palestras que podem explorar melhor os temas que abordei aqui ... Como ser um DBA na era DevOps - Sebastian Webber Criando uma extensão para PostgreSQL - Marcone Viana Peres Usando PostgreSQL no raspberryPI - Gustavo Sperandio Go e PostgreSQL, ganhando desempenho em processos de carga de dados - Marcelo Kruger
  • 41. Tudo isso foi apenas um índice..
  • 42. 50% concluído Os outros 50% estão com vocês... FIM... twitter.com/guediz | github.com/guedes … e obrigado pelos peixes!