No dia 24/01 recebi logo pela manhã a notícia de que a Microsoft havia comprado a Citusdata. Eu fiquei bem contente, porque sou MVP e porque amo trabalhar com o PostrgreSQL… E o Citus é super fofo!
O PostgreSQL
Em 73 a universidade de Berkley desenvolveu o Ingres que se tornou funcional ainda na década de 70 e chegou mesmo a liderar o mercado na época, à frente da IBM e da Oracle (que na época era uma tentativa de clone do System-R, futuro DB2). O Postgres começou a ser desenvolvido em 86, também em Berkley como uma nova versão do Ingres reescrita do zero e incorporando novas questões de arquitetura como a capacidade de extensão (como o Citus hoje é uma extensão do Postgres) e uma arquitetura nova conhecida hoje como “objeto-relacional” (Colaboração do meu amigo e mestre em do Postgres Fábio Telles Rodriguez)
Nos anos 90 foram liberadas as primeiras versões funcionais, e graças a sua licença (BSD) desde o começo ele conta com a ajuda e participação da comunidade.
E está aí uma coisa muito legal… A comunidade do PostgreSQL é tão unida e apaixonada que é impossível não se apaixonar também.
Algumas características que eu adoro do PostgreSQL são:
- Ele é muito rápido;
- Suporta quantidades imensas de dados;
- Não é um comedor de hardware (quando configurado corretamente);
- O Postgres roda não apenas em Linux, mas provavelmente roda no seu videogame ou no seu liquidificador… entre os processadores suportadas temos: x86, x86_64, IA64, PowerPC, PowerPC 64, S/390, S/390x, Sparc, Sparc 64, ARM, MIPS, MIPSEL, PA-RISC, M68K, M32R e VAX. Entre os sistemas operacionais reconhecidamente suportados temos, além do LInux: Windows (Win2000 SP4 ou superior), FreeBSD, OpenBSD, NetBSD, macOS, AIX, HP/UX e Solaris. Provavelmente qualquer Unix deverá rodar, mas estes são os testados no build farm em: https://buildfarm.postgresql.org/cgi-bin/show_status.pl (Mais uma do Fábio Telles Rodriguez)
- Tem boas interfaces gráficas para administração (#DBANutella);
- Totalmente transacional;
- Suporte a dados estruturados e não estruturados;
- Possibilidade de estender suas capacidades com as extensions (trocadilho proposital);
- Recursos nativos e importantes de segurança.
A licença BSD
Para o uso de um software open source é de vital importância analisar a licença!
Digo isso porque muita gente ainda confunde Open Source com software gratuito e que pode ser alterado ao gosto da organização. E não é isso!
Os softwares open source tem código fonte aberto (ehhh novidade), podem ser alterados, modificados e distribuídos por outras pessoas e empresas.
Não possuem custo de licença, mas nada impede que o suporte seja vendido (por exemplo). Embora a liberdade seja um principio importante no mundo open source, existem regras! E elas são descritas nas licenças.
A licença BSD (Berkeley Software Distribution ), assim como o PostgreSQL nasceu na Universidade de Berkeley e é linda porque impõe poucas restrições ao uso dos softwares que a utilizam.
No caso desta licença é obrigatório ter no seu software um aviso de licença e direitos autorais, e o autor do software é isento de garantias e não pode ser responsabilizado por perdas e danos.
Mas por que isso é tão importante quando falamos de PostgreSQL? Porque como a licença é muito permissiva nada impede de que melhorias sejam feitas e comercializadas. Neste cenário surge o Citus Data.
Citus
É uma extensão do PostgreSQL com algumas funcionalidades (bem legais). O Citus expande o Postgres horizontalmente – transformando o banco de dados relacional em um banco de dados distribuído. E isso faz dele um fenômeno (opinião pessoal!).
Ao paralelizar consultas SQL em vários nós, o Citus oferece um desempenho muito bom (eu ainda não testei e nem usei em produção com uma carga de dados imensa… Se você já usou, compartilha conosco a experiência!). Ele é muito legal se você precisa de consultas com dados em tempo real e consultas em bilhões de linhas e com alta simultaneidade.
O detalhe fofo é que adicionar nós para aumentar o paralelismo é bem simples!
Pessoal, vou fazer aqui alguns devaneios e me perdoem se não concordarem comigo… Mas o processamento e armazenamento distribuídos é uma grande tendência… O SQL Server 2019 virá com novidades maravilhosas neste sentido, o Citus tem essa capacidade, assim como o MongoDB, Cassandra e Redis… Você que é desenvolvedor está atento a isso? Já sabe o que muda para as suas aplicações? E você que é arquiteto sabe quando precisará de um banco de dados distribuído? Dica da Dani… estude sobre os BD distribuídos e as suas particularidades.
Como o Citus funciona?
Vou ser simplista, ok? Mas futuramente podemos nos aprofundar neste tópico…
O cluster Citus tem um nó principal que recebe as solicitações, para as aplicações ele parece ser um PostgreSQL normal (com único nó). Este é o coordenador.
O coordenador modifica as consultas e as encaminha para o nó onde os dados estão. O nó executa a consulta e devolve o resultado para o coordenador, que quando receber o resultado de todos os nós, devolve para a aplicação o resultado.
O Citus compartilha o Postgres em vários nós para dar mais memória, computação e armazenamento em disco ao seu aplicativo. O que lhe dá paralelismo massivo, alto desempenho e uma maneira de manter o dimensionamento à medida que seu aplicativo cresce.
Versões do Citus
Atualmente o Citus tem 3 versões… A versão Community linda e open source.
A versão Enterprise que é um software corporativo que possui suporte 24×7, além de recursos empresariais adicionais.
E a Citus Cloud que é um serviço totalmente gerenciado e em nuvem. Atualmente o Citus Cloud é hospedado na AWS e está disponível na maioria das regiões da AWS. Creio que em pouquíssimo tempo ele será migrado para o Azure, mas não tenho ideia de como ficarão os clientes que utilizam o Citus na AWS.
Conclusão
No dia 24/01 a Microsoft anunciou a compra da Citusdata. Que é uma empresa que estendeu o PostgreSQL e comercializa esta extensão, bem como o seu suporte.
O Citus se destaca por transformar de maneira linda o PostgreSQL em um banco de dados distríbuido. Ele oferece 3 versões diferentes (Community, Enterprise e Cloud)
A versão Cloud está hospedada na AWS, e tenho certeza que em breve estará disponível no Azure.
Eu adoro PostgreSQL! E gostaria de mudar o foco dos próximos meses aqui do blog… O que vocês acham de entendermos mais o PostgreSQL? E depois conversamos sobre o MariaDB e MySQL. Mandem os feedbacks!
Mais uma escolha, mais uma chance de sucesso!
A comunidade
Em agosto acontecerá em SP o maior evento brasileiro de PostgreSQL, o PGConf.
Eu estarei lá e gostaria de convidar a todos para participar! Os ingressos já estão a venda e aos amigos palestrantes, o Call4Papers está aberto!!!
Referências
https://www.citusdata.com/product/cloud
http://escolhaumalicenca.com.br/licencas/
https://www.savepoint.blog.br/2006/01/09/os-5-tipos-de-projetos-de-codigo-aberto/
Agenda da semana
29/01 – Participarei de um meetup do .NET SP falando de Persistência Poliglota no Azure
3 Comentários
Muito bom Dani, não conhecia essa extensão citus. Já vou iniciar agora meus estudos em paralelismo em BD, vc poderia criar um laboratório de testes para vermos ele em ação
Gostei da ideia!!!
O Postgres roda não apenas em Linux, mas provavelmente roda no seu videogame ou no seu liquidificador… entre os processadores suportadas temos: x86, x86_64, IA64, PowerPC, PowerPC 64, S/390, S/390x, Sparc, Sparc 64, ARM, MIPS, MIPSEL, PA-RISC, M68K, M32R e VAX. Entre os sistemas operacionais reconhecidamente suportados temos, além do LInux: Windows (Win2000 SP4 ou superior), FreeBSD, OpenBSD, NetBSD, macOS, AIX, HP/UX e Solaris. Provavelmente qualquer Unix deverá rodar, mas estes são os testados no build farm em: https://buildfarm.postgresql.org/cgi-bin/show_status.pl