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

Dickson S. Guedes
Dickson S. GuedesDatabase Administrator em Confesol - Confederação Nacional das Cooperativas de Crédito
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!
1 de 42

Recomendados

Entendendo um pouco melhor o que é Ruby por
Entendendo um pouco melhor o que é RubyEntendendo um pouco melhor o que é Ruby
Entendendo um pouco melhor o que é Rubycodeland
534 visualizações17 slides
Phpreact flisol-fb-2014 por
Phpreact flisol-fb-2014Phpreact flisol-fb-2014
Phpreact flisol-fb-2014Adler Medrado
1K visualizações22 slides
Entendendo Conceitos Caching com PHP por
Entendendo Conceitos Caching com PHPEntendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHPAdler Medrado
1.8K visualizações19 slides
Refatorar é preciso! 2.0 por
Refatorar é preciso! 2.0Refatorar é preciso! 2.0
Refatorar é preciso! 2.0Daniel Archer Marques Cramer
632 visualizações65 slides
Programação funcional que funciona por
Programação funcional que funcionaProgramação funcional que funciona
Programação funcional que funcionaRodrigo Serradura
1.1K visualizações89 slides
Sobre TDD - Tech Friday da Everis Uberlândia por
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaRogerio Fontes
66 visualizações19 slides

Mais conteúdo relacionado

Mais procurados

Objects calisthenics - Os 10 mandamentos do rei do código por
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
654 visualizações94 slides
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens por
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
1.1K visualizações47 slides
Projeto de API, por Gilmar P.S por
Projeto de API, por Gilmar P.SProjeto de API, por Gilmar P.S
Projeto de API, por Gilmar P.SThoughtworks
2.3K visualizações52 slides
Crescendo profissionalmente com o apoio comunidade por
Crescendo profissionalmente com o apoio comunidadeCrescendo profissionalmente com o apoio comunidade
Crescendo profissionalmente com o apoio comunidadeFelipe Nascimento
475 visualizações34 slides
Refinamento e boas práticas de programação por
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
6K visualizações57 slides
Behaviour Driven Development por
Behaviour Driven DevelopmentBehaviour Driven Development
Behaviour Driven DevelopmentMaurício Linhares
351 visualizações23 slides

Mais procurados(20)

Objects calisthenics - Os 10 mandamentos do rei do código por BonoBee
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
BonoBee654 visualizações
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens por Paulino Michelazzo
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
Paulino Michelazzo1.1K visualizações
Projeto de API, por Gilmar P.S por Thoughtworks
Projeto de API, por Gilmar P.SProjeto de API, por Gilmar P.S
Projeto de API, por Gilmar P.S
Thoughtworks2.3K visualizações
Crescendo profissionalmente com o apoio comunidade por Felipe Nascimento
Crescendo profissionalmente com o apoio comunidadeCrescendo profissionalmente com o apoio comunidade
Crescendo profissionalmente com o apoio comunidade
Felipe Nascimento475 visualizações
Refinamento e boas práticas de programação por Aécio Costa
Refinamento e boas práticas de programaçãoRefinamento e boas práticas de programação
Refinamento e boas práticas de programação
Aécio Costa6K visualizações
Behaviour Driven Development por Maurício Linhares
Behaviour Driven DevelopmentBehaviour Driven Development
Behaviour Driven Development
Maurício Linhares351 visualizações
Boas práticas técnica para um código limpo (Clean Code) por Rodrigo Kono
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 Kono28.3K visualizações
Desenvolvimento web: PHP orientado a objetos por Lucas Vegi
Desenvolvimento web: PHP orientado a objetosDesenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetos
Lucas Vegi3.8K visualizações
Unit Test JavaScript por Dan Vitoriano
Unit Test JavaScriptUnit Test JavaScript
Unit Test JavaScript
Dan Vitoriano496 visualizações
Palestra Faculdade Lourenço Filho por rafarubert
Palestra Faculdade Lourenço FilhoPalestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço Filho
rafarubert511 visualizações
Javascript por debaixo dos panos por Laís Lima
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panos
Laís Lima729 visualizações
Engenharia rever sa mentebinaria por Patrese Renan
Engenharia rever sa   mentebinariaEngenharia rever sa   mentebinaria
Engenharia rever sa mentebinaria
Patrese Renan140 visualizações
5 meses de python o que aprendi por Vinta Software
5 meses de python  o que aprendi5 meses de python  o que aprendi
5 meses de python o que aprendi
Vinta Software527 visualizações
Conhecendo o Novo REST Framework por Mario Guedes
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST Framework
Mario Guedes7.9K visualizações
Tdd com Node.js por Camila Sass
Tdd com Node.jsTdd com Node.js
Tdd com Node.js
Camila Sass30 visualizações
Ferramentas Livres Para Desenvolvimento com PHP por Adler Medrado
Ferramentas Livres Para Desenvolvimento com PHPFerramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHP
Adler Medrado3.8K visualizações
Cacheamento Lado Servidor por Mario Guedes
Cacheamento Lado ServidorCacheamento Lado Servidor
Cacheamento Lado Servidor
Mario Guedes5.3K visualizações
PHP Jedi - Boas Práticas e Alta Performance por Felipe Ribeiro
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
Felipe Ribeiro7.8K visualizações

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

Domain-Driven Design por
Domain-Driven DesignDomain-Driven Design
Domain-Driven DesignComunidade NetPonto
1.6K visualizações74 slides
Apresentação faef por
Apresentação faefApresentação faef
Apresentação faefLucas Simões Maistro
544 visualizações53 slides
FISL12. Web Services e Computação em Nuvem com PHP por
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
878 visualizações95 slides
#Moving br workshop por
#Moving br workshop#Moving br workshop
#Moving br workshopFernanda Ferreira
58 visualizações69 slides
Django - Desenvolvimento web ágil com Python por
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonIgor Sobreira
8.1K visualizações80 slides
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams por
#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
500 visualizações56 slides

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

Domain-Driven Design por Comunidade NetPonto
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
Comunidade NetPonto1.6K visualizações
FISL12. Web Services e Computação em Nuvem com PHP por Flávio Lisboa
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
Flávio Lisboa878 visualizações
#Moving br workshop por Fernanda Ferreira
#Moving br workshop#Moving br workshop
#Moving br workshop
Fernanda Ferreira58 visualizações
Django - Desenvolvimento web ágil com Python por Igor Sobreira
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com Python
Igor Sobreira8.1K visualizações
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams por Jacqueline Abreu
#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
Jacqueline Abreu500 visualizações
Django por flisolmaringa
DjangoDjango
Django
flisolmaringa1.2K visualizações
Além da programação funcional com Elixir e Erlang por Elaine Naomi
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
Elaine Naomi76 visualizações
Desenvolvimento Agil Com Doctrine Orm por Guilherme Blanco
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
Guilherme Blanco10.7K visualizações
Desenvolvimento web com python e django por Igor Sobreira
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
Igor Sobreira2.6K visualizações
Quebrando barreiras entre desenvolvimento e operação de software com DevOps por José Alexandre Macedo
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
José Alexandre Macedo1.4K visualizações
Programando com prazer com DDD por Giovanni Bassi
Programando com prazer com DDDProgramando com prazer com DDD
Programando com prazer com DDD
Giovanni Bassi4.3K visualizações
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js por Vinicius Reis
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
Vinicius Reis355 visualizações
Automação de testes para equipes agile por Alini Rebonatto
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agile
Alini Rebonatto931 visualizações
Lidando com Equipes de Desenvolvimento por 4Soft
Lidando com Equipes de DesenvolvimentoLidando com Equipes de Desenvolvimento
Lidando com Equipes de Desenvolvimento
4Soft540 visualizações
Scrum e o Ambiente de Desenvolvimento Ágil por abacrazy
Scrum e o Ambiente de Desenvolvimento ÁgilScrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento Ágil
abacrazy235 visualizações
FJN 2011 por Italo Maia
FJN 2011FJN 2011
FJN 2011
Italo Maia104 visualizações
Xamarin UI Test + BDD Specflow por Cleiton Felipe Moraes
Xamarin UI Test + BDD SpecflowXamarin UI Test + BDD Specflow
Xamarin UI Test + BDD Specflow
Cleiton Felipe Moraes172 visualizações

Mais de Dickson S. Guedes

Ganhando tempo automatizando com SQL por
Ganhando tempo automatizando com SQLGanhando tempo automatizando com SQL
Ganhando tempo automatizando com SQLDickson S. Guedes
15 visualizações50 slides
O mínimo necessário que você precisa conhecer sobre computação quântica por
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
27 visualizações80 slides
Pattern matching - O que é? Onde vive? Do que se alimenta? Como se reproduz? por
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
401 visualizações47 slides
Primeiros passos machine learning PostgreSQL por
Primeiros passos machine learning PostgreSQLPrimeiros passos machine learning PostgreSQL
Primeiros passos machine learning PostgreSQLDickson S. Guedes
736 visualizações17 slides
Dicas de sobrevivência de um DBA sem mouse por
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
270 visualizações14 slides
Destistificando o EXPLAIN por
Destistificando o EXPLAIN Destistificando o EXPLAIN
Destistificando o EXPLAIN Dickson S. Guedes
260 visualizações39 slides

Mais de Dickson S. Guedes(20)

Ganhando tempo automatizando com SQL por Dickson S. Guedes
Ganhando tempo automatizando com SQLGanhando tempo automatizando com SQL
Ganhando tempo automatizando com SQL
Dickson S. Guedes15 visualizações
O mínimo necessário que você precisa conhecer sobre computação quântica por Dickson S. Guedes
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
Dickson S. Guedes27 visualizações
Pattern matching - O que é? Onde vive? Do que se alimenta? Como se reproduz? por Dickson 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?
Dickson S. Guedes401 visualizações
Primeiros passos machine learning PostgreSQL por Dickson S. Guedes
Primeiros passos machine learning PostgreSQLPrimeiros passos machine learning PostgreSQL
Primeiros passos machine learning PostgreSQL
Dickson S. Guedes736 visualizações
Dicas de sobrevivência de um DBA sem mouse por Dickson S. Guedes
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
Dickson S. Guedes270 visualizações
Destistificando o EXPLAIN por Dickson S. Guedes
Destistificando o EXPLAIN Destistificando o EXPLAIN
Destistificando o EXPLAIN
Dickson S. Guedes260 visualizações
Falando "Postgrês" por Dickson S. Guedes
Falando "Postgrês"Falando "Postgrês"
Falando "Postgrês"
Dickson S. Guedes222 visualizações
Se meu elefante falasse por Dickson S. Guedes
Se meu elefante falasseSe meu elefante falasse
Se meu elefante falasse
Dickson S. Guedes692 visualizações
Curiosidades que você (talvez) não sabia e se sabia vale a pena lembrar por Dickson S. Guedes
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
Dickson S. Guedes1.4K visualizações
O Elefante Poliglota por Dickson S. Guedes
O Elefante PoliglotaO Elefante Poliglota
O Elefante Poliglota
Dickson S. Guedes727 visualizações
Como encontrar uma agulha num palheiro de logs por Dickson S. Guedes
Como encontrar uma agulha num palheiro de logsComo encontrar uma agulha num palheiro de logs
Como encontrar uma agulha num palheiro de logs
Dickson S. Guedes651 visualizações
Como encontrar uma agulha no palheiro de logs do PostgreSQL por Dickson S. Guedes
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
Dickson S. Guedes857 visualizações
Gerenciando múltiplas versões do PostgreSQL com pgvm por Dickson S. Guedes
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
Dickson S. Guedes624 visualizações
PGXN - Como distribuir suas extensões com o PostgreSQL por Dickson S. Guedes
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
Dickson S. Guedes385 visualizações
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL) por Dickson 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)
Dickson S. Guedes1.1K visualizações
Plante uma árvore, escreva um livro, tenha um filho e contribua com software ... por 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 ...
Dickson S. Guedes764 visualizações
Conhecendo Postgresql.- ENECOMP 2009 por Dickson S. Guedes
Conhecendo Postgresql.- ENECOMP 2009Conhecendo Postgresql.- ENECOMP 2009
Conhecendo Postgresql.- ENECOMP 2009
Dickson S. Guedes433 visualizações
Minicurso Postgresql - Enecomp 2009 por Dickson S. Guedes
Minicurso Postgresql - Enecomp 2009Minicurso Postgresql - Enecomp 2009
Minicurso Postgresql - Enecomp 2009
Dickson S. Guedes220 visualizações
Testes unitarios no PostgreSQL com pgTAP por Dickson S. Guedes
Testes unitarios no PostgreSQL com pgTAPTestes unitarios no PostgreSQL com pgTAP
Testes unitarios no PostgreSQL com pgTAP
Dickson S. Guedes812 visualizações

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!