(English version at the bottom)
Tive o prazer de bater um papo com Fabiano Neves Amorim, engenheiro de projetos que possui uma sólida experiência em banco de dados, tornando-se uma das referências sobre SQL no Brasil. Além de obter diversas certificações nesse setor, Fabiano ganhou em 2011 o prestigioso prêmio da Microsoft Most Valuable Professional (MVP) SQL Server, que reconhece profissionais de excelência pelas suas contribuições na comunidade. Nossa conversa abordou alguns pontos da carreira do Fabiano, bem como dicas práticas para profissionais melhorarem suas habilidades em banco de dados.
Fabiano iniciou sua trajetória como programador de software criando aplicações para palmtops, dispositivo precursor dos smartphones e tablets atuais. Durante esse período, Fabiano utilizava as linguagens de programação C++ e Delphi e teve a oportunidade de trabalhar em um projeto que o levou a otimizar um banco de dados. Após esse projeto bem-sucedido, ele decidiu se especializar nessa área. Embora a programação de banco de dados relacionais seja bem diferente da programação de software tradicional, Fabiano trazia uma bagagem de boas práticas de desenvolvimento, tais como conceitos de manutenção e limpeza de código.
Outro exemplo de projeto que marcou sua trajetória, foi quando foi chamado para otimizar um banco de dados para uma grande empresa nacional de mídia financeira. A demanda era clara, o cliente havia necessidade de melhorar o sistema de modo a aguentar a crescente demanda que estava no processo de escala massiva. As tecnologias usadas foram o SQL Server 2008 R2 e o Microsoft SQL Server. Algumas das técnicas de otimização usadas pelo entrevistado foram a melhor utilização do hardware da CPU disponível, configurando uma computação em paralelo por meio de multi-threading. Dessa forma, foi possível rodar processos simultâneos, nos dezesseis threads disponíveis, utilizando todos os cores do servidor. Para dar uma ordem de grandeza dos números dessa aplicação, a operação requeria inserções no banco de dados de alguns milhões de linhas em poucos segundos. Mesmo se a computação da operação é otimizada e realizada em paralelo, os dados inseridos deviam seguir uma ordem precisa, obrigando o entrevistado a construir métodos sofisticados de controle e execução. Algumas das técnicas avançadas do SQL Server utilizadas foram: SqlBulkCopy, Traceflags, Read Commited Snapshot Isolation (RCSI) e a compressão dos dados por linha.
Perguntado sobre as tendências atuais das aplicações SQL, Fabiano observou uma migração crescente para ambientes em nuvem. Dispositivos de memória e processamento dos servidores, tais como memória RAM, Redundant Array of Inexpensive Disks (RAID) e Network attached storage (NAS), que eram antigamente configurados e mantidos pelas próprias empresas em seus locais, agora são geridos por empresas de tecnologia em data centers. Nesse caso, grande parte do problema é abstraído e uma simples especificação técnica da aplicação é necessária, como, por exemplo, “precisamos de cem mil I/Os por segundo com baixa latência”.
De um lado, essa mudança pode simplificar o trabalho da empresa e permitir que ela foque nas suas áreas de negócio, porém não sabemos ainda qual será o efeito desse distanciamento do hardware no futuro. Novas gerações terão menos contato com esses dispositivos e os tratarão como mais uma caixa preta. Profissionais como o Fabiano que trabalham na otimização de grandes bancos de dados em produção, podem perder um pouco o poder de otimização feita para um hardware específico, como mencionado no exemplo acima. Além disso, se de um lado é simples delegar para a nuvem essa responsabilidade, certas aplicações sensíveis, como bancárias e certos tipos de indústria, como a farmacêutica, tendem a haver uma maior resistência a essa migração. Um dos motivos é a falta de infra-estrutura de rede entre as fontes dos dados e os bancos de dados, mesmo com a chegada de novas tecnologias em um futuro breve como o 5G. Outro motivo de resistência são os riscos associados à segurança cibernética durante o transporte dos dados entre a fonte e o banco de dados na nuvem.
Fabiano ressaltou duas vertentes para quem quiser iniciar nesse campo. A primeira, mais direta, seria uma imersão imediata, se possível trabalhando em um projeto real. Esse é um método muito semelhante com a sua própria história quando era desenvolvedor de software. A segunda vertente, mais lenta, podendo durar até alguns anos, seria de progressivamente o profissional se dedicar de modo autodidático, complementando com cursos online e presenciais. Três dicas de cursos foram sugeridas, de modo a ajudar o profissional a passar de um nível básico a um patamar intermediário e até avançado. O primeiro é o curso do Fabrício Lima, o segundo é o curso do Brent Ozar e o terceiro é o site Pluralsight onde existem cursos não somente de SQL mas também de outros assuntos relacionados. Gostaria de adicionar que independentemente da vertente escolhida, é fundamental que o profissional tenha curiosidade e uma vontade de aprender.
Há anos Fabiano atua como consultor e teve a oportunidade de participar em projetos de diversos tipos de aplicações. Algumas dicas sugeridas para aplicações industriais são, por exemplo, na partição dos dados armazenados no banco de dados, com uma divisão diária. Essa partição diária, comparada a uma partição semanal ou mensal, ajuda na manutenção, mas também no movimento dos dados, além de manter o servidor em produção leve para rodar as aplicações desejadas.
Em projetos industriais de SCADA, tipicamente os dados são inseridos na forma temporal, como, por exemplo, os dados de um sensor de temperatura de um forno, inseridos no banco de dados a cada segundo. Fabiano ressaltou que desde 2016, o SQL Server introduziu uma tecnologia otimizada para esse tipo de aplicação, chamado temporal tables que vale a pena conferir.
Fabiano possui um canal no YouTube onde ele compartilha várias dicas, além do seu blog pessoal.
I had the pleasure of chatting with Fabiano Neves Amorim, a project engineer who has a solid experience in database, becoming one of the references on SQL in Brazil. Besides obtaining several certifications in this sector, Fabiano won in 2011 the prestigious Microsoft Most Valuable Professional (MVP) SQL Server award, which recognizes outstanding professionals for their contributions in the community. Our conversation covered some points of Fabiano's career, as well as practical tips for professionals to improve their database skills.
Fabiano started his career as a software developer creating applications for palmtops, the precursor of today's smartphones and tablets. During this period, Fabiano used C++ and Delphi programming languages and had the opportunity to work on a project that led him to optimize a database. After this successful project, he decided to specialize in this area. Although relational database programming is quite different from traditional software programming, Fabiano brought a background in good development practices, such as code maintenance and cleanliness.
Another example of a project that marked his trajectory was when he was called to optimize a database for a large Brazilian financial media company. The demand was clear, the client needed to improve the system in order to cope with the growing demand that was in the process of massive scale up. The technologies used were SQL Server 2008 R2 and Microsoft SQL Server. Some optimization techniques used by the interviewee were to make better use of the available CPU hardware by setting up parallel computing through multi-threading. This way, it was possible to run simultaneous processes, in the sixteen available threads, using all the server's cores. To give an order of magnitude of the numbers in this application, the operation required database insertions of several million rows in a few seconds. Even if the computation of the operation is optimized and performed in parallel, the data inserted had to follow a precise order, forcing the engineer to build sophisticated methods of control and execution. Some advanced SQL Server techniques that were used are: SqlBulkCopy, Traceflags, Read Commited Snapshot Isolation (RCSI) and per row data compression.
Asked about current trends in SQL applications, Fabiano sees an increasing migration to cloud environments. Devices used in servers for memory and processing, such as RAM, Redundant Array of Inexpensive Disks (RAID) and Network attached storage (NAS), which were once configured and maintained by the companies themselves at their sites, are now managed by technology companies in data centers. In this case, much of the problem is abstracted away and a simple technical specification of the application is required, such as “we need a hundred thousand I/Os per second with low latency”.
On the one hand, this change can simplify the company's work and allow it to focus on its business areas, but we do not yet know what the effect of this move away from hardware will be in the future. New generations will have less contact with these devices and will treat them as just another black box. Professionals like Fabiano who work on optimizing large databases in production may lose some power of optimization done for a specific hardware, as mentioned in the example above. Moreover, if it is simple to delegate to the cloud this responsibility, certain sensitive applications, such as banking and certain types of industry, such as pharmaceuticals, tend to have a greater resistance to this migration. One reason is the lack of network infrastructure between the data sources and the databases, even with the arrival of new technologies in the near future such as 5G. Another reason for resistance is the risks associated with cybersecurity during the transport of data between the source and the database in the cloud.
Fabiano pointed out two aspects for those who want to start in this field. The first, more direct, would be an immediate immersion, if possible, working on a real project. This is a method very similar to his own story when he was a software developer. The second aspect, slower and possibly lasting up to a few years, would be for the professional to progressively dedicate himself to self-learning, complementing it with online and in-person courses. Three course tips were suggested, in order to help the professional move from a basic level to an intermediate and even advanced level. The first is Fabricio Lima's course, the second is Brent Ozar's course and the third is the Pluralsight site where there are courses not only on SQL but also on other related subjects. I would like to add that regardless of the chosen course, it is fundamental that the professional has curiosity and a willingness to learn.
Fabiano has been working as a consultant for years and has had the opportunity to participate in projects for various types of applications. Some proposed tips for industrial applications are, for example, in the partition of the data stored in the database, with a daily partition. This daily partition, compared to a weekly or monthly partition, helps in the maintenance but also in the movement of data, besides keeping the server in production light to run the desired applications.
In industrial SCADA projects, data is typically entered in temporal form, such as, for example, data from a furnace temperature sensor, entered into the database every second. Fabiano pointed out that since 2016, SQL Server has introduced a technology optimized for this type of application, called temporal tables, that is worth checking out.
Fabiano has a YouTube channel where he shares several tips, besides his personal blog.
No comments:
Post a Comment