SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Downloaden Sie, um offline zu lesen
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!

Weitere ähnliche Inhalte

Was ist angesagt?

Objects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do códigoObjects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do códigoBonoBee
 
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensDrupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensPaulino Michelazzo
 
Projeto de API, por Gilmar P.S
Projeto de API, por Gilmar P.SProjeto de API, por Gilmar P.S
Projeto de API, por Gilmar P.SThoughtworks
 
Crescendo profissionalmente com o apoio comunidade
Crescendo profissionalmente com o apoio comunidadeCrescendo profissionalmente com o apoio comunidade
Crescendo profissionalmente com o apoio comunidadeFelipe Nascimento
 
Refinamento e boas práticas de programação
Refinamento e boas práticas de programaçãoRefinamento e boas práticas de programação
Refinamento e boas práticas de programaçãoAécio Costa
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Rodrigo Kono
 
Desenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosDesenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosLucas Vegi
 
Unit Test JavaScript
Unit Test JavaScriptUnit Test JavaScript
Unit Test JavaScriptDan Vitoriano
 
Palestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço FilhoPalestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço Filhorafarubert
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panosLaís Lima
 
Engenharia rever sa mentebinaria
Engenharia rever sa   mentebinariaEngenharia rever sa   mentebinaria
Engenharia rever sa mentebinariaPatrese Renan
 
5 meses de python o que aprendi
5 meses de python  o que aprendi5 meses de python  o que aprendi
5 meses de python o que aprendiVinta Software
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkMario Guedes
 
Ferramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPFerramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPAdler Medrado
 
Cacheamento Lado Servidor
Cacheamento Lado ServidorCacheamento Lado Servidor
Cacheamento Lado ServidorMario Guedes
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformanceFelipe Ribeiro
 

Was ist angesagt? (20)

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

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

FISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFlávio Lisboa
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonIgor Sobreira
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreamsJacqueline Abreu
 
Além da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e ErlangAlém da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e ErlangElaine Naomi
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmGuilherme Blanco
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e djangoIgor Sobreira
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsJosé Alexandre Macedo
 
Programando com prazer com DDD
Programando com prazer com DDDProgramando com prazer com DDD
Programando com prazer com DDDGiovanni Bassi
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsVinicius Reis
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agileAlini Rebonatto
 
Lidando com Equipes de Desenvolvimento
Lidando com Equipes de DesenvolvimentoLidando com Equipes de Desenvolvimento
Lidando com Equipes de Desenvolvimento4Soft
 
Scrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento ÁgilScrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento Ágilabacrazy
 

Ähnlich wie Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor (20)

Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
 
FISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHP
 
#Moving br workshop
#Moving br workshop#Moving br workshop
#Moving br workshop
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com Python
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
 
Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
 
Django
DjangoDjango
Django
 
Além da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e ErlangAlém da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e Erlang
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Programando com prazer com DDD
Programando com prazer com DDDProgramando com prazer com DDD
Programando com prazer com DDD
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agile
 
Lidando com Equipes de Desenvolvimento
Lidando com Equipes de DesenvolvimentoLidando com Equipes de Desenvolvimento
Lidando com Equipes de Desenvolvimento
 
Scrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento ÁgilScrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento Ágil
 
FJN 2011
FJN 2011FJN 2011
FJN 2011
 
Xamarin UI Test + BDD Specflow
Xamarin UI Test + BDD SpecflowXamarin UI Test + BDD Specflow
Xamarin UI Test + BDD Specflow
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
 

Mehr von Dickson S. Guedes

Ganhando tempo automatizando com SQL
Ganhando tempo automatizando com SQLGanhando tempo automatizando com SQL
Ganhando tempo automatizando com SQLDickson S. Guedes
 
O mínimo necessário que você precisa conhecer sobre computação quântica
O mínimo necessário que você precisa conhecer sobre computação quânticaO mínimo necessário que você precisa conhecer sobre computação quântica
O mínimo necessário que você precisa conhecer sobre computação quânticaDickson S. Guedes
 
Pattern matching - O que é? Onde vive? Do que se alimenta? Como se reproduz?
Pattern matching - O que é? Onde vive? Do que se alimenta? Como se reproduz?Pattern matching - O que é? Onde vive? Do que se alimenta? Como se reproduz?
Pattern matching - O que é? Onde vive? Do que se alimenta? Como se reproduz?Dickson S. Guedes
 
Primeiros passos machine learning PostgreSQL
Primeiros passos machine learning PostgreSQLPrimeiros passos machine learning PostgreSQL
Primeiros passos machine learning PostgreSQLDickson S. Guedes
 
Dicas de sobrevivência de um DBA sem mouse
Dicas de sobrevivência de um DBA sem mouseDicas de sobrevivência de um DBA sem mouse
Dicas de sobrevivência de um DBA sem mouseDickson S. Guedes
 
Curiosidades que você (talvez) não sabia e se sabia vale a pena lembrar
Curiosidades que você (talvez) não sabia e se sabia vale a pena lembrarCuriosidades que você (talvez) não sabia e se sabia vale a pena lembrar
Curiosidades que você (talvez) não sabia e se sabia vale a pena lembrarDickson S. Guedes
 
Como encontrar uma agulha num palheiro de logs
Como encontrar uma agulha num palheiro de logsComo encontrar uma agulha num palheiro de logs
Como encontrar uma agulha num palheiro de logsDickson S. Guedes
 
Como encontrar uma agulha no palheiro de logs do PostgreSQL
Como encontrar uma agulha no palheiro de logs do PostgreSQLComo encontrar uma agulha no palheiro de logs do PostgreSQL
Como encontrar uma agulha no palheiro de logs do PostgreSQLDickson S. Guedes
 
Gerenciando múltiplas versões do PostgreSQL com pgvm
Gerenciando múltiplas versões do PostgreSQL com pgvmGerenciando múltiplas versões do PostgreSQL com pgvm
Gerenciando múltiplas versões do PostgreSQL com pgvmDickson S. Guedes
 
PGXN - Como distribuir suas extensões com o PostgreSQL
PGXN - Como distribuir suas extensões com o PostgreSQLPGXN - Como distribuir suas extensões com o PostgreSQL
PGXN - Como distribuir suas extensões com o PostgreSQLDickson S. Guedes
 
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Dickson S. Guedes
 
Plante uma árvore, escreva um livro, tenha um filho e contribua com software ...
Plante uma árvore, escreva um livro, tenha um filho e contribua com software ...Plante uma árvore, escreva um livro, tenha um filho e contribua com software ...
Plante uma árvore, escreva um livro, tenha um filho e contribua com software ...Dickson S. Guedes
 
Conhecendo Postgresql.- ENECOMP 2009
Conhecendo Postgresql.- ENECOMP 2009Conhecendo Postgresql.- ENECOMP 2009
Conhecendo Postgresql.- ENECOMP 2009Dickson S. Guedes
 
Minicurso Postgresql - Enecomp 2009
Minicurso Postgresql - Enecomp 2009Minicurso Postgresql - Enecomp 2009
Minicurso Postgresql - Enecomp 2009Dickson S. Guedes
 
Testes unitarios no PostgreSQL com pgTAP
Testes unitarios no PostgreSQL com pgTAPTestes unitarios no PostgreSQL com pgTAP
Testes unitarios no PostgreSQL com pgTAPDickson S. Guedes
 

Mehr von Dickson S. Guedes (20)

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

Kürzlich hochgeladen

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 

Kürzlich hochgeladen (9)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 

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!