{"id":904,"date":"2018-12-09T00:03:51","date_gmt":"2018-12-09T03:03:51","guid":{"rendered":"http:\/\/thesqltimes.com\/blog\/?p=904"},"modified":"2018-12-11T22:38:35","modified_gmt":"2018-12-12T01:38:35","slug":"um-generalista-a-mais-no-mercado","status":"publish","type":"post","link":"https:\/\/thesqltimes.com\/blog\/2018\/12\/09\/um-generalista-a-mais-no-mercado\/","title":{"rendered":"Um Generalista a mais no mercado?"},"content":{"rendered":"<div class=\"pld-like-dislike-wrap pld-template-1\">\r\n    <div class=\"pld-like-wrap  pld-common-wrap\">\r\n    <a href=\"javascript:void(0)\" class=\"pld-like-trigger pld-like-dislike-trigger  \" title=\"Muito \u00fatil!\" data-post-id=\"904\" data-trigger-type=\"like\" data-restriction=\"cookie\" data-already-liked=\"0\">\r\n                        <i class=\"fas fa-thumbs-up\"><\/i>\r\n                <\/a>\r\n    <span class=\"pld-like-count-wrap pld-count-wrap\">    <\/span>\r\n<\/div><\/div><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de Leitura:<\/span> <span class=\"rt-time\"> 6<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span><p>Depois de um longo tempo sem postagem no blog, estou voltando aqui com algumas novidades. O tempo tem sido crucial, e muitas mudan\u00e7as aconteceram em minha carreira e vida pessoal. Com isso acabei me afastando do blog. O post hoje conta um pouco do que aconteceu e o que espero pro ano de 2019!<\/p>\n<p>&nbsp;<\/p>\n<h1><strong>Novos conhecimentos, mesmos meios<\/strong><\/h1>\n<p style=\"text-align: justify;\">Depois de longos anos trabalhando com plataforma Microsoft, exclusivamente SQL Server e Windows, finalmente encarei a chance de conhecer outros produtos. N\u00e3o um espec\u00edfico, mas diversos: o problema aparecia, e tinha que resolver.\u00a0 Mysql, PostgreSQL, Oracle, DB2, sqlite, etc. Em um primeiro momento, acostumar com essas novas tecnologias \u00e9 dif\u00edcil, e chega at\u00e9 ser desanimador.\u00a0 O SQL Server realmente \u00e9 um produto incr\u00edvel, e possui muitas features que tornam o dia-a-dia de um DBA muito mais f\u00e1cil, por\u00e9m nada b\u00e1sico. Possui uma engine poderosa, capaz de suportar os mais severos workloads, oriundos das mais exigentes aplica\u00e7\u00f5es do planeta. Por um outro lado, existem muitas features interessantes, e que at\u00e9 faltam no SQL Server.<\/p>\n<p style=\"text-align: justify;\">Junto com o receio de se tornar um generalista, resolvi encarar o desafio. O resultado dessa experi\u00eancia,\u00a0conto um pouco a seguir.<\/p>\n<h3>A maior mudan\u00e7a: Linux<\/h3>\n<p style=\"text-align: justify;\">Sem d\u00favida,\u00a0o maior conhecimento adquirido foi o Linux. Apesar de passar a maior parte do tempo em uma tela preta, sem usar mouse, diferente do Windows, isso n\u00e3o me trouxe limita\u00e7\u00e3o. A princ\u00edpio, parece que aquilo \u00e9 realmente uma caixa preta e qualquer mensagem significa o caos. Besteira. Um ambiente robusto, cheio\u00a0 de controles, l\u00f3gica, configura\u00e7\u00f5es, desafios. Nada diferente do Windows. Apenas um jeito diferente.<\/p>\n<p style=\"text-align: justify;\">Aprender a usar Linux foi um dos, sen\u00e3o o maior, conhecimento que adquiri depois de aprender a programar e SQL Server. Eu n\u00e3o escondo para os meus colegas que sou fascinado pelo &#8220;internals&#8221; do SO, e o Linux me apresentou centenas de oportunidades para aprofundar mais esse conhecimento. H\u00e1 quem diga que Windows \u00e9 melhor, ou que Linux \u00e9 melhor, ou ainda que Debian \u00e9 melhor que CentOs, e vice-versa (feliz por entender agora o que esses termos significam). A velha hist\u00f3ria das compara\u00e7\u00f5es&#8230; Seguramente, posso dizer que \u00e9 uma tremenda perda de tempo cair nessa discuss\u00e3o.<\/p>\n<p style=\"text-align: justify;\">Hoje sou um apaixonado por <a href=\"https:\/\/www.gnu.org\/software\/bash\/manual\/\">bash<\/a>, e meu velho <a href=\"https:\/\/docs.microsoft.com\/en-us\/powershell\/\">powershell<\/a>. Estou mesmo satisfeito por conhecer mais Linux, e poder explorar o melhor dos dois mundos. Agora, n\u00e3o importa se o problema \u00e9 um <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tux_(mascot)\">pinguim <\/a>adoecido, ou uma <a href=\"https:\/\/www.google.com.br\/search?q=microsoft+windows+logo&amp;source=lnms&amp;tbm=isch&amp;sa=X&amp;ved=0ahUKEwjUjazt3JHfAhXGk5AKHRVYALcQ_AUIDigB&amp;biw=1745&amp;bih=881\">janela <\/a>quebrada. Estarei aqui com as melhores ferramentas para resolv\u00ea-los.<\/p>\n<p>&nbsp;<\/p>\n<h3>Uma nova gama de op\u00e7\u00f5es de configura\u00e7\u00e3o e conceitos<\/h3>\n<p style=\"text-align: justify;\">Tive o prazer de atuar em problemas diversos em outras tecnologias de banco. Do mais simples aos mais complexos. Um dos meus primeiros desafios nos PostgreSQL foi apenas liberar o acesso de um usu\u00e1rio a partir de um novo IP.\u00a0 H\u00e1 um arquivo de configura\u00e7\u00e3o que voc\u00ea precisa editar pra isso. Ali\u00e1s, \u00e9 uma abordagem interessante. Diferente do SQL, h\u00e1 recursos nativos em outros bancos, como o PostgreSQL e no MySQL,\u00a0 em que voc\u00ea consegue limitar o acesso do usu\u00e1rio a partir de um endere\u00e7o. Realmente necess\u00e1rio? Uma discurs\u00e3o interessante pra uma conversa numa mesa de bar! \ud83d\ude06<\/p>\n<p style=\"text-align: justify;\">Acostumar-se como o SQL Server instala seus bin\u00e1rios, me fez ficar confuso com algumas tecnologias. Por\u00e9m, comparar o conceito de inst\u00e2ncia do SQL Server, com os outros SGBDs, tornou as coisas mais claras no Oracle e no DB2.\u00a0 No Oracle, o procedimento de instala\u00e7\u00e3o, reconhecido na comunidade t\u00e9cnica por ser &#8220;dif\u00edcil&#8221;,\u00a0 vai ficando mais claro a medida que voc\u00ea entende os conceitos. Muita coisa s\u00e3o apenas padr\u00f5es, que, repassando de gera\u00e7\u00e3o em gera\u00e7\u00e3o, se torna um &#8220;\u00e9 assim que se faz, pronto e acabou&#8221;. Cheguei at\u00e9 o ponto de criar novas inst\u00e2ncias Oracle manualmente, e me admirei com o fato que com apenas copiando alguns arquivos, voc\u00ea sobe uma &#8220;monstruosa&#8221; nova inst\u00e2ncia&#8230;\u00a0 Minha dica \u00e9: entenda os conceitos de inst\u00e2ncia em &#8220;Oracle&#8221; e DB2 e voc\u00ea sair\u00e1 vitorioso no primeiro contato com essas plataformas!<\/p>\n<h3>Planos de execu\u00e7\u00e3o e Otimiza\u00e7\u00e3o de Queries<\/h3>\n<p style=\"text-align: justify;\">Uma das maiores causadoras de problemas em produ\u00e7\u00e3o, a famosa lentid\u00e3o de queries, n\u00e3o \u00e9 exclusivo do SQL Server. H\u00e1 sempre uma demanda para &#8220;pega as queries mais lenta e otimiza&#8221;. Essa nova jornada me trouxe um valioso conhecimento: Aprender a ler planos de execu\u00e7\u00e3o no PostgreSQL, MySQL, etc. Sem muitas op\u00e7\u00f5es gr\u00e1ficas, me acostumei com a leitura do plano em texto.\u00a0 A complexidade do Query Optimizer (QO) do SQL server deixou o caminho mais f\u00e1cil para <a href=\"https:\/\/dev.mysql.com\/doc\/refman\/5.5\/en\/execution-plan-information.html\">entender compreender o MySQL<\/a>, que apesar de mais simples, toma decis\u00f5es eficientes e inteligentes, que poupa trabalhos dos desenvolvedores. Por\u00e9m, me ajudou a entender muito mais r\u00e1pido os operadores do PostgreSQL, que possui uma gama infinita, com muito mais op\u00e7\u00f5es para controlar as decis\u00f5es de seu <a href=\"https:\/\/www.postgresql.org\/docs\/11\/using-explain.html\">otimizador<\/a>, entretanto, com muita coisa semelhante do QO do SQL.<\/p>\n<p style=\"text-align: justify;\">Num outro cen\u00e1rio, precisei avaliar o porqu\u00ea de um simples banco no MySQL, em um portal de internet de um importante org\u00e3o do pa\u00eds, estava lento. Pra quem vem do SQL, \u00e9 meio complicado lidar com a falta de uma <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/system-dynamic-management-views\/sys-dm-exec-requests-transact-sql?view=sql-server-2017\">sys.dm_exec_requests,<\/a> ou <a href=\"http:\/\/whoisactive.com\/\">sp_WhoIsActive<\/a>. Mas, o meio de encontrar o problema \u00e9 o mesmo: descubra a query, ou as queries lentas, e quais s\u00e3o seus gargalos. Aliado com as ferramentas do SO, conseguimos entender o problema, onde estava a limita\u00e7\u00e3o, e resolvemos isso usando recursos do Linux!<\/p>\n<p style=\"text-align: justify;\">Tamb\u00e9m, apareceu uma chance incr\u00edvel de operar um DB2, identificar locks, criar usu\u00e1rios, resolver gargalos, e at\u00e9 gerenciar uma replica\u00e7\u00e3o de dados!<\/p>\n<h3>Manipula\u00e7\u00e3o de Dados<\/h3>\n<p style=\"text-align: justify;\">Apareceu um desafio de auxiliar um processo de Auditoria de uma importante rede internacional de supermercados. Era necess\u00e1rio exportar conte\u00fado de um banco Oracle. N\u00e3o t\u00ednhamos SSIS, nem interface gr\u00e1fica. O desafio era tudo via linha de comando, era o que podia. Utilizamos a vers\u00e3o <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/tools\/sqlcmd-utility?view=sql-server-2017\">sqlcmd<\/a>\u00a0do oracle, o <a href=\"https:\/\/docs.oracle.com\/cd\/B19306_01\/server.102\/b14357\/qstart.htm\">sqlplus<\/a>. Com uma gama de op\u00e7\u00f5es, conseguimos exportar o conte\u00fado com sucesso.\u00a0 O reconhecimento do vice-presidente desta empresa,\u00a0 fez todo o esfor\u00e7o de usar powershell, para gerar um script bash que executava o sqlplus, valer a pena!<\/p>\n<h3>A triste e velha hist\u00f3ria da recupera\u00e7\u00e3o<\/h3>\n<p style=\"text-align: justify;\">Infelizmente, apesar de tantas diferen\u00e7as, um problema comum: Recupera\u00e7\u00e3o. &#8220;O banco deu pau e n\u00e3o tem backup&#8221;.\u00a0 H\u00e1 quem diga que saber internals dos produtos \u00e9 uma perda de tempo. Talvez sim, para aqueles que possuem recursos para suprir esse tipo de problema, ou mesmo que conseguem se convencer que tudo acabou nessas situa\u00e7\u00f5es.<\/p>\n<p style=\"text-align: justify;\">Al\u00e9m de conhecer novas formas, ferramentas e tipos de backup\/restore (e em agluns casos, apenas diferente sintaxe, para os mesmos comandos), conseguir trabalhar em casos de recupera\u00e7\u00e3o de bancos sem backup.\u00a0 Costurando bits, analisando logs, etc. Igual sempre foi no SQL nessas situa\u00e7\u00f5es.\u00a0 Alguns produtos apresentam uma comunidade forte, e documenta\u00e7\u00e3o boa, outros nem tanto. A comunidade SQL Server realmente \u00e9 um destaque quando se trata de conhecimentos mais avan\u00e7ados. Mas, \u00e9 sensacional o fato de voc\u00ea poder ollhar no c\u00f3digo-fonte do produto, gastar algumas horinhas apenas fazendo pesquisa de fun\u00e7\u00f5es C++, entendedo as l\u00f3gicas, em meios a poucos coment\u00e1rios de c\u00f3digo.<\/p>\n<p>&nbsp;<\/p>\n<h1><strong>Novos\u00a0times<\/strong><\/h1>\n<p style=\"text-align: justify;\">Uma das maiores\u00a0 novidades, e, que, com muito orgulho, anuncio, foi a de entrar para o time da <a href=\"https:\/\/www.fabriciolima.net\/\">Fabr\u00edcio Lima Solu\u00e7\u00f5es em Bancos de Dados<\/a>.\u00a0 O meu foco \u00e9 o trabalho com SQL e Azure. Um time que j\u00e1 \u00e9 muito forte e realmente tem sido animador. Al\u00e9m dos casos que aparecem, temos grupos de estudo, colocamos as experi\u00eancias de todos para gerar solu\u00e7\u00f5es \u00f3timas. \u00c9 incr\u00edvel o que esses caras fazem, e n\u00e3o \u00e9 exagero a hashtag #AlwaysTunningYourData, porque \u00e9 pra isso que todo esse conhecimento serve: pra fazer com que o seu SQL Server voe, seguindo as melhores e mais eficientes pr\u00e1ticas.<\/p>\n<p style=\"text-align: justify;\">Uma oportunidade que, chegou em um momento em que eu estava me distanciando do operacional de banco de dados, na <a href=\"https:\/\/www.stefanini.com\/pt-br\/\">Stefanini<\/a>.\u00a0Tendendo para automa\u00e7\u00f5es de a\u00e7\u00f5es e servi\u00e7os da infraestrutura, exig\u00eancia da pr\u00f3pria Adminstra\u00e7\u00e3o de Banco de Dados, cheguei em uma equipe de inova\u00e7\u00e3o. Aqui aprendi <a href=\"https:\/\/www.python.org\/\">python<\/a>, <a href=\"https:\/\/www.docker.com\/\">docker<\/a>(e j\u00e1 entrando em <a href=\"https:\/\/kubernetes.io\/\">kubernetes<\/a>),\u00a0servi\u00e7os cognitivos, machine learning, etc. Uma incr\u00edvel oportunidade em um momento que todo o mundo j\u00e1 se volta para essas tecnologias!<\/p>\n<p style=\"text-align: justify;\">Realmente tenho muito orgulho dos times que fa\u00e7o parte hoje. Ambos se beneficam das experi\u00eancias adquiridas em cada um, e me apoiam. Isso faz toda diferen\u00e7a e realmente estou muito empolgado para 2019!<\/p>\n<p>&nbsp;<\/p>\n<h1><strong>Na realidade, nada novo&#8230;<\/strong><\/h1>\n<p>Apesar dessas novidades,\u00a0 a ess\u00eancia n\u00e3o mudou. Ainda continuo apaixonado por assuntos de tecnologia, e gasto horas tentando entender os porqu\u00eas. Se aparece um problema, seja com python, seja com sql no linux, sql no docker, db2 em Windows, eu passo algumas horas analisando cada log, cada mensagem, juntando as pe\u00e7as, consultando informa\u00e7\u00f5es, abrindo ferramentas de monitoramento e trace. Tudo est\u00e1 interligado. Cada conhecimento em uma tecnologia, cada forma de resolver o problema, preenche uma vasta biblioteca na minha cabe\u00e7a (e no meu OneNote,\u00a0 Dropbox, etc.) com tudo que preciso para <strong>resolver os problemas.<\/strong><\/p>\n<p>E \u00e9 nisso que se tem se resumindo meu dia-a-dia. Continuo sim, atuando em bancos de dados, especialmente na infraestrutura, resolvendo diretamente casos cr\u00edticos ou discutindo com uma equipe como resolver. Continuo abrindo o <a href=\"https:\/\/docs.microsoft.com\/en-us\/sysinternals\/downloads\/process-explorer\">Process Explorer<\/a>,\u00a0mas agora abro\u00a0<a href=\"https:\/\/linux.die.net\/man\/1\/htop\">htop<\/a>, <a href=\"http:\/\/man7.org\/linux\/man-pages\/man1\/ps.1.html\">ps <\/a>ou <a href=\"http:\/\/man7.org\/linux\/man-pages\/man1\/top.1.html\">top <\/a>tamb\u00e9m. Ainda, nos casos mais bizarros, abro o <a href=\"https:\/\/docs.microsoft.com\/en-us\/sysinternals\/downloads\/procmon\">Process Monitor<\/a>, mas tamb\u00e9m abro o <a href=\"https:\/\/linux.die.net\/man\/1\/strace\">strace <\/a>agora. Mais do que nunca tenho brincando com o <a href=\"https:\/\/docs.microsoft.com\/en-us\/windows-hardware\/drivers\/debugger\/debugger-download-tools\">Windbg<\/a>\u00a0( e ainda n\u00e3o abrir um debugger no Linux, mas estamos quase l\u00e1\u00a0 :-D). Leio internals de Windows, e tamb\u00e9m j\u00e1 l\u00ed o incr\u00edvel <a href=\"https:\/\/www.amazon.com\/Linux-Kernel-Development-Robert-Love\/dp\/0672329468\">Kernel Development<\/a> do Linux. E tamb\u00e9m frequentemente consulto o <a href=\"https:\/\/github.com\/torvalds\/linux\">c\u00f3digo-fonte<\/a> para tirar algumas d\u00favidas (uma delas, foi auxiliar no entendimento do\u00a0&#8220;Load Average&#8221;).<\/p>\n<p>Espero trazer mais em 2019 (e nesse finalzinho de 2018 tamb\u00e9m)! Mostrar como usar ferramentas, explicar conceitos, etc. Tudo o que j\u00e1 vinha escrito neste blog, por\u00e9m com mais gama de experi\u00eancia, tecnologias e ferramentas! E ent\u00e3o, ser\u00e1 que eu me tornei mesmo um Generalista? N\u00e3o! Ainda estou envolvido com tecnologias espec\u00edficas! Mas, estou acompanhando a TI, e indo com as novidades, levando tudo que aprendi at\u00e9 hoje para esse mundo! E tem dado certo, muito certo!<\/p>\n<p>Pra fechar, novamente, a imagem que abre esse post: reflete o que foi esses meus 9 anos na \u00e1rea de TI, retirado da minha palestra no <a href=\"https:\/\/www.sqlsaturday.com\/811\/eventhome.aspx\">SQL Saturday 811<\/a>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-908 size-large\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/RodrigoSQLSat811-1024x523.png\" alt=\"\" width=\"1024\" height=\"523\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/RodrigoSQLSat811-1024x523.png 1024w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/RodrigoSQLSat811-300x153.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/RodrigoSQLSat811-768x392.png 768w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2018\/12\/RodrigoSQLSat811.png 1844w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Depois de um longo tempo sem postagem no blog, estou voltando aqui com algumas novidades. O tempo tem sido crucial, e muitas mudan\u00e7as aconteceram em minha carreira e vida pessoal. Com isso acabei me afastando do blog. O post hoje conta um pouco do que aconteceu e o que espero pro ano de 2019! &nbsp;&hellip;&nbsp;<a href=\"https:\/\/thesqltimes.com\/blog\/2018\/12\/09\/um-generalista-a-mais-no-mercado\/\" rel=\"bookmark\"><span class=\"screen-reader-text\">Um Generalista a mais no mercado?<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":908,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[2,10,4,208,93],"tags":[213,214,143,211,212,209,47,96,210,73,87],"series":[],"class_list":["post-904","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-apresentacoes","category-carreira","category-diversao","category-linux","category-windows","tag-bancos-de-dados","tag-bash","tag-carreira","tag-docker","tag-kubernetes","tag-linux","tag-microsoft","tag-powershell","tag-python","tag-sql-server","tag-windows"],"_links":{"self":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/904","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/comments?post=904"}],"version-history":[{"count":13,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/904\/revisions"}],"predecessor-version":[{"id":918,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/904\/revisions\/918"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/media\/908"}],"wp:attachment":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/media?parent=904"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/categories?post=904"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/tags?post=904"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/series?post=904"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}