SQL = papel & tinta
14 de Março de 2017, 12:33 - sem comentários aindaHoje eu me deparei com uma pessoa que perguntava sobre uma ferramenta para ajudar a escrever consultas SQL graficamente. Estava quase respondendo o cara quando lembrei que um dia eu já fui assim.
O primeiro banco de dados relacional com qual eu já trabalhei foi o Access 2.0. Sim senhores, eu já fiz isso, há muito tempo atrás. E havia uma coisa que eu gostava muito nele que era uma ferramenta gráfica para construir consultas. Você arrastava as tabelas lá, depois os campos e ia colocando propriedades aqui e ali. Eu realmente gostava daquilo, parecia tudo mais simples para mim. Usar SQL puro me parecia muito complexo e desnecessário. Mas as minhas consultas foram ficando mais complexas com o tempo. E eu comecei a brigar com o Access que não entendia o que eu queria fazer. Ele não entendia o que eu queria ou não tinha opções suficientes. Quando eu comecei a trabalhar com PostgreSQL, eu portei meus primeiros sistemas do Access para ele e tive que escrever minhas consultas em SQL.
Mas o PostgreSQL tem o psql, um cliente em modo texto simples, mas muito poderoso. Ele herda a tradição do shell do Unix de utilizar uma biblioteca conhecida como readline, coisa que o Oracle ignorou por motivos pra lá de obscuros no SQL*Plus. Uma vez que você se acostuma com o readline no shell, passa a imaginar que toda a linha de comando deveria ser assim. E pode ser. O PostgreSQL e o MySQL usam e funciona muito bem. O fato é que em pouco tempo eu passei a escrever SQL bem mais rápido do que eu fazia minhas consultas no Access. Com um bom editor de texto, recortar, colar, copiar e mover se torna muito mais rápido do que arrastar as coisas com o mouse. Também passei rapidamente a fazer coisas mais complexas e eficientes também. O lema do SQL é dizer “WHAT NOT HOW”. Cada consulta SQL antigamente significava todo um programa escrito só para realizar aquela operação. Hoje o otimizador de consultas executa este programa dinamicamente para você. Mas você ainda tem que aprender a comunicar o que quer para o banco de dados. Escrever e estruturar o raciocínio ainda é um exercício de escrita. Saber escrever é tão importante quanto conhecer algoritmos. No caso do SQL você não se preocupa mais com o HOW, apenas com o WHAT. Claro que tive que estudar um também. Recomendo sempre os livros do Joe Celko para quem quer e deve ir além. Alguns clássicos nunca morrem.
Quando você aprende a escrever SQL de forma organizada, passa a entender melhor como o banco de dados funciona. Existe uma linha de raciocínio que você segue em geral:
- Escrevo o FROM e digo quais tabelas vão fazer parte da minha consulta, qua a origem das informações envolvidas;
- Depois escrevo o WHERE e digo quais registros dessas tabelas deverão ser retornados;
- Após o SELECT digo quais campos vão aparecer no resultado;
- Somente depois coloco coisas como GROUP BY, HAVING, LIMIT outras cláusulas, sempre revisando as três etapas anteriores.
E vejam como a arquitetura do seu banco de dados começa a ser uma preocupação:
- Quando escrevo o FROM, penso no tamanho das tabelas e as ligações (JOINs) entre elas;
- Quando escrevo o WHERE, penso nos índices existentes nas tabelas e seletividade dos dados que estou trazendo;
- Quando escrevo o SELECT, penso na apresentação dos dados para a aplicação, se preciso formatar, calcular ou agrupar alguns dados.
Esse tipo de preocupação faz toda a diferença, não apenas para o DBA, mas para o programador também. Não sou radicalmente contra o uso de ferramentas de ORM, nem de bancos NoSQL, mas aprender SQL ainda é um exercício importante de lógica e de arquitetura da sua aplicação. Portanto, pegue papel & tinta ou seu melhor editor de textos…. e mãos à obra!
DatabaseCast 75: O papel do DBA na nuvem
2 de Fevereiro de 2017, 15:12 - sem comentários aindaNo final de 2016 eu fui dar duas palestras no Interopmix e recebi o agradável convite de participar de um DatabaseCast especial, gravado com as pessoas do evento.
O tópico é quente e bem atual, com a guerra dos grandes provedores da Cloud com Amazon, Azure, Google e o novo azarão, a Oracle! Se o futuro está na Cloud eu não posso afirmar, mas cada vez mais temos clientes que nascem e migram para a Cloud. Bancos de dados na nuvem são um desafio interessante, pois muito do que se fala sobre como novidade não se aplicam a bancos de dados. Então é um caminho que tem muita nova no caminho e muita bobagem também.
Foi uma honra gravar novamente com os Srs. Wagner Crivelini e Mauro Pichiliani. Também uma grande responsabilidade em gravar ao lado de grandes nomes como Alex Zaballa e Ricardo Portilho.
Vejam o podcast e deixem seus comentários, até a próxima.
Sobre certificações em TI
5 de Janeiro de 2017, 21:46 - sem comentários aindaO colega Fábio Prado me pediu minha opinião sobre certificações, para ajudar num artigo dele sobre o assunto…. então resolvi deixar registrado por aqui. Quem me conhece sabe que sou uma pessoa de opiniões fortes, tanto na forma quanto no conteúdo. Então vou tentar fazer um esforço de escrever de forma um pouco mais racional, para não acharem que se trata apenas de torcida organizada sobre o assunto.
Eu tomei contato com as certificações pela primeira vez na década de 90, quando estavam em alta as certificações da Novell. Já nesta época tirar uma certificação era sinônimo de reconhecimento profissional e investimento em termos de tempo e dinheiro. Tirar uma certificação lhe daria credibilidade no mercado, mas lhe custaria tempo para estudar e dinheiro para pagar cursos oficiais, provas e livros. A primeira coisa que fica claro é que as certificações são uma fonte de receita fácil para quem vende um produto. Vender certificação pode incluir a venda de livros oficiais, pagar para fazer a prova e até mesmo te obrigar a fazer um curso oficial para obter o tal certificado, que no final é um pedaço de papel, como o diploma da faculdade.
Em 2016 participei de um debate sobre a regulamentação do mercado de TI. Minha opinião sobre o assunto é semelhante a da SBC (Sociedade Brasileira de Computação): Não contribui com o mercado, não contribui com o profissional, não contribui com as instituições de ensino, mas pode contribuir com um pequeno grupo de pessoas interessadas em criar umas um conselho regulador e cobrar taxas para que os profissionais exerçam sua profissão. Assim como você não precisa de um diploma de jornalismo para trabalhar como jornalista, você não precisa de um diploma para trabalhar com informática. Isso não significa que os cursos de jornalismo ou de informática deixaram de existir, não é mesmo? A mesma lógica se aplica às certificações, mas de formas diferentes.
Existem diversos tipos de certificação. Então seria uma boa ideia separar cada uma delas. Existem certificações voltadas para profissionais que estão iniciando sua carreira no mercado de informática. Uma vez dei um curso para pessoas que queriam tirar certificação Oracle. Nenhum deles tinha experiência prática como DBA e nem estava interessado em aprender do começo. Além da experiência, a bibliografia deles no assunto era nula ou quase nula. Ou seja, eles queriam apenas passar na prova. E como profissional e educador, isso me incomodou profundamente, nunca mais dei um curso desse tipo. Estas provas em geral são apenas um questionário preenchido num computador com uma duração definida. Existem provas que você pode até mesmo fazer em casa no seu computador. Eu já tirei certificação Oracle assim. Estudei uma tarde e fiz a prova à noite. Passei fácil e não precisei colar.
O que uma prova assim diz sobre a minha pessoa?
- Eu tenho bons conhecimentos sobre o assunto ou
- Eu tenho uma boa capacidade de memorização ou
- Eu tive acesso à uma boa “cola”
Certificações para iniciantes podem ser uma porta de entrada para o mercado de trabalho. Quando o mercado de trabalho está fraco, sobram candidatos e as empresas costumam colocar a certificação como um pré requisito para a vaga. Quando o mercado está aquecido, achar um bom profissional é mais difícil e estas regras são mais flexíveis. O problema é que ao contratar o profissional que tem mais certificações, que fez cursos oficiais e coisa e tal, você pode estar perdendo os melhores profissionais, os autodidatas, os que tem experiência prática mas não tem certificação, etc. E para o profissional, significa ter um custo enorme a mais para ingressar no mercado. Agora se você não é autodidata e quer fazer um curso para aprender sobre determinada tecnologia, existem excelentes opções, mais baratas e melhores que os cursos oficiais daquela tecnologia. Eles não em o “selo” do fornecedor, mas são ministrados por profissionais reconhecidos, como por exemplo os cursos do próprio Fábio Prado ou do Ricardo Portilho, falando aqui sobre Oracle.
Na Timbira temos uma boa tradição em cursos também. Como não existe certificação para PostgreSQL, os cursos são focados em problemas reais dos nossos clientes. Muitas vezes fazemos cursos sob medida para um cliente, para atacar um problema real que ele tem. Fazemos também o que chamamos de “Cursotoria”, uma consultoria misturada com treinamento que dá ao cliente um resultado concreto e onde todos os participantes se envolvem mais energicamente.
Existem certificações mais avançadas e no estilo “hands on”. Ou seja, te dão um terminal com uma situação problema e você tem um tempo limitado para resolve-lo. São certificações muito mais confiáveis em termos de metodologia, as pessoas que passam nestes exames realmente tem que ter mais conhecimento e experiência. Em geral as pessoas que passam nestas provas são profissionais já reconhecidos no mercado e que podem pagar caro pelo custo deste tipo de certificação. Em alguns casos você só pode fazer a prova nos EUA por exemplo. Se o profissional já é experiente, uma certificação não amplia muito a sua empregabilidade. Profissionais de alto nível são raros no mercado e a maioria já está bem empregada, com ou sem certificação.
Na comunidade de PostgreSQL houve uma longa discussão se deveríamos ou não criar uma certificação oficial. Após pesar os prós e contras, a comunidade decidiu em não criar, ou pelo menos não focar esforços nisso. Existe muita coisa importante para fazer em prol do PostgreSQL e certificação não é uma delas no momento. A avaliação da maioria é que ter um produto com boa qualidade é o que faz ele competitivo no mercado e tem muita coisa no roadmap pela frente. Divulgação e ações de advocacy também são importantes e precisam melhorar, mas as certificações não tem sido uma barreira para o crescimento até o momento. Pelo menos essa é a percepção que eu tenho acompanhando a comunidade internacional.
Existe um cenário onde eu concordo que a certificação tem seu valor. Em órgãos públicos, contratar empresas para prestar serviço é um grande desafio. Há tempos atrás a Caixa Econômica Federal fez uma licitação onde a empresa que prestaria suporte em PostgreSQL tinha que comprovar que possui profissionais que atuaram no desenvolvimento do PostgreSQL nos últimos anos. Hoje, quase todos os desenvolvedores ativos do PostgreSQL no Brasil estão na Timbira. É complicado fazer uma licitação onde o critério elimina a concorrência. Por isso outras empresas não adotaram este tipo de edital. A maioria prefere exigir que as empresas tenham profissionais certificados em determinada tecnologia. Isso afasta as empresas pernetas que ganham licitações com um preço muito baixo e sem profissionais qualificados. Realmente licitações públicas são um problema sério no Brasil. Este é um caso onde a certificação pode ajudar. Mas ainda acho que isso é uma forma crua de contornar um problema maior: o modelo de licitação pública que é ruim e dificilmente pune as empresas ruins. Os certificados de capacidade técnica em licitações também são fornecidos pelo Zé da esquina e falsificados sem o menor pudor. Se os maus fornecedores fossem punidos com mais rigor, os picaretas sumiriam. É um assunto longo e extenso que não diz respeito ao tema aqui discutido, nem tenho tanto conhecimento assim para entrar nesta seara. O ponto é que as certificações podem ser uma muleta válida neste tipo de situação. Veja que isso não inclui a contratação direta de profissionais, que deve ser feita por concurso público, onde as certificações não fazem a menor diferença, pois a prova do concurso pode ser moldada às expectativas do contratante com muito mais assertividade.
As certificações podem sim ser um bom guia de estudos. Mas ainda acredito que a bibliografia hoje disponível pode lhe guiar muito melhor. Acredito que as certificações tem um certo fetiche para os profissionais. Ser reconhecido e alcançar um objetivo lhe confere algum status e dá uma sensação de realização que é importante para o ser humano. Eu gosto de ter este tipo de realização de outra forma, enfrentando outros desafios. Você pode não ter desafios reais no seu trabalho, mas pode criar seus próprios desafios e metas pessoais. Montar um laboratório e tentar atingir um objetivo prático ainda é na minha opinião a melhor forma de aprender. Foi assim que eu comecei com banco de dados, catalogando os discos do meu pai num banco de dados. É assim que faço até hoje com meu laboratório em casa. É assim que consigo compartilhar boa parte do conhecimento que tenho acumulado nestes anos como profissional de informática.
Pesquisa "Uso do PostgreSQL no Brasil 2016"
21 de Dezembro de 2016, 0:46 - sem comentários aindaApós 5 anos do lançamento desta pesquisa em 2011, chegou a hora de ver o que mudou nesse período. Em 2011 estávamos nos tempos do 9.0, maravilhados com o novo Standby do PostgreSQL. No final de 2016 já vemos que muita coisa melhorou. Então convidamos você a preencher nosso questionário e dizer como estão suas bases PostgreSQL em produção. O resultado da pesquisa será divulgado num podcast no começo de 2017.
Contamos com a sua participação! Preencha o questionário aqui.
Programa de índio: "Postgres nas nuvens"
13 de Dezembro de 2016, 11:59 - sem comentários aindaNesta quarta-feira 14/12/16 estaremos ao vivo gravando mais um Programa de índio com convidados especiais:
- Carlos Eduardo Smanioto
- Diogo Biazus
- Fábio Telles Rodriguez
- Matheus Oliveira
- Sebastian Webber
Desta vez o tema serão os bancos de dados na nuvem, particularmente (mas não somente) o PostgreSQL.