O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

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

78 visualizações

Publicada em

Palestra apresentada no PGConf.BR 2018 sobre linguagens de programação, interação entre DBA e Devs, paradigmas de programação...

Publicada em: Tecnologia
  • Seja o primeiro a comentar

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

  1. 1. Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor? por Dickson S. Guedes
  2. 2. Definição de “melhor”...
  3. 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. 4. Situação de muitas empresas com os papéis DBA e DEV Silo DBA Silo DEV
  5. 5. Situação de muitas empresas com os papéis DBA e DEV PÁ!Silo DBA Silo DEV
  6. 6. Situação de muitas empresas com os papéis DBA e DEV PÁ! PÁ!Silo DBA Silo DEV
  7. 7. Situação de muitas empresas com os papéis DBA e DEV PÁ! PÁ! QUE SILOS SÃO ESSES?
  8. 8. É sobre o que?
  9. 9. É sobre empatia
  10. 10. É sobre empatia conhecimento
  11. 11. É sobre empatia conhecimento humildade
  12. 12. É sobre empatia conhecimento humildade e acima de tudo ...
  13. 13. entregar valor!
  14. 14. Mas… como que aprender várias linguagens vai me permitir isto?
  15. 15. Então vamos ver alguns exemplos
  16. 16. Java Muito utilizada no mundo “Enterprise” Orientação a Objeto ORM Hibernate Troca de mensagens @Annotations
  17. 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. 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. 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. 20. C ● Compatibilidade com vários sistemas operacionais ● Suíte de testes do PostgreSQL ● Usando PostgreSQL no raspberryPI ○ http://www.pgconf.com.br/raspberrypi/
  21. 21. Ruby Metaprogramação Migrations Testes Rails tooling: gem, rvm, renv, rails new
  22. 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. 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. 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. 25. Javascript funcional, JSON, Promises Event driven async Data Driven Document (D3.js)
  26. 26. Exemplo D3.js Data Driven Documents Javascript CSV d3.csv(‘aquivo.csv’, function(data) { ... });
  27. 27. Erlang/Elixir funcional, supervisors, atores, deixe falhar não é sobre sintaxe macros imutabilidade pattern matching recursividade
  28. 28. Me levaram a ... ● PGEx ○ entender o protocolo do PostgreSQL ● ExJSON ○ Só me divertir mesmo… ● Funções de agregação no PostgreSQL
  29. 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. 30. Rust segurança, FFI escrever em Rust no lugar de C cross-compilation
  31. 31. Me levou a ... ● prsql ○ um cliente de linha de comando como o psql
  32. 32. Então é uma questão de ...
  33. 33. Conectar pontos! comunicação, percepção, linguagem, informação, reflexão, pensamento
  34. 34. O que procurar numa linguagem?
  35. 35. O porquê da linguagem
  36. 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. 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. 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. 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. 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. 41. Tudo isso foi apenas um índice..
  42. 42. 50% concluído Os outros 50% estão com vocês... FIM... twitter.com/guediz | github.com/guedes … e obrigado pelos peixes!

×