Home > Tendências

12 soluções de código aberto para armazenamento e análise de dados

Os softwares de banco de dados são um dos mais importantes componentes de software de uma organização. Conheça os vencedores do prêmio The Best of Open Source Software Awards

Martin Heller , Andrew C. Oliver e Ian Pointer, da InfoWorld/EUA

08/10/2018 às 17h51

database.jpg
Foto:

Nada é maior hoje em dia do que os dados. Temos mais dados do que nunca e temos mais maneiras de armazená-los e analisá-los: bancos de dados SQL, bancos de dados NoSQL, bancos de dados OLTP distribuídos, plataformas OLAP distribuídas, plataformas OLTP/OLAP híbridas distribuídas... Os vencedores do Bossies 2018: The Best of Open Source Software Awards também incluem soluções inovadoras no processamento de fluxos de dados. Confira!

1- Apache Spark
O Apache Spark ainda é o centro do universo da análise de dados. Se você estiver fazendo computação distribuída, Ciência de Dados ou Machine Learning, comece por aqui. Com o lançamento do Apache Spark 2.3 em fevereiro, o Spark continuou a desenvolver, integrar e aumentar sua API de streaming. Além disso, agora há um agendador para o Kubernetes, facilitando a execução do Spark diretamente na plataforma de container. No geral, a versão atual do Spark parece ter sido lubrificada, ajustada e polida.

2 – Apache Pulsar
O Apache Pulsar oferece processamento mais rápido e menor latência que o Apache Kafka em muitas situações, junto com uma API que permite aos desenvolvedores alternar de Kafka para Pulsar com relativa facilidade. Mas talvez a maior vantagem do Apache Pulsar seja o fato de oferecer um conjunto de recursos operacionais muito mais simplificado e robusto do que o Apache Kafka, especialmente em termos de georeplicação e multilocação. Empresas que sentiram a dor de operar grandes aglomerados Apache Kafka podem achar o Apache Pulsar uma lufada de ar fresco.

3 – Apache Bean
A distinção entre o processamento em lote e o processamento de fluxo vem desaparecendo nos últimos anos. Os lotes de dados ficam menores para se tornarem microlotes, que, ao se aproximarem, tornam-se fluxos de dados. Várias arquiteturas de processamento tentaram mapear essa mudança de pensamento em um paradigma de programação.

O Apache Beam é a resposta do Google para o problema. Combina um modelo de programação e vários SDKs específicos que permitem a definição de pipelines de processamento de dados. Uma vez definidos, esses pipelines podem ser executados em diversas estruturas de processamento diferentes, como Hadoop, Spark ou Flink. 

Ao escrever um aplicativo com uso intensivo de dados (e qual aplicação não é intensiva em dados atualmente?), o Beam deve estar em sua pequena lista para construir pipelines de processamento de dados.

4 – Apache Sorl
Embora seja considerado um mecanismo de pesquisa baseado na tecnologia de indexação Lucene, o Apache Solr é, em essência, um banco de dados textual. Com os lançamentos recentes da série Solr 7, a plataforma é muito rápida mesmo para consultas mais analíticas. Agora você pode juntar dezenas de documentos e retornar os resultados em menos de um segundo. Existe suporte aprimorado para dados de log e eventos. A recuperação de desastre (CDCR) agora é bidirecional. E o novo recurso de dimensionamento automático do Solr permite um gerenciamento simples à medida que a carga em um cluster cresce.

5 - JupyterLab
O JupyterLab é a próxima geração d Jupyter, adorado pelos cientistas de dados. O JupyterLab é uma releitura completa do conceito de notebook, permitindo coisas como o arrastar e soltar de células, cadernos com guias, visualização ao vivo da edição do Markdown e um sistema de extensão reformulado que faz a integração com outros serviços como o GitHub.

6- KNIME Analytics Platform
A KNIME Analytics Platform é um software de código aberto para a criação de aplicativos e serviços de ciência de dados. Possui uma interface gráfica no estilo arrastar/soltar para criar fluxos de trabalho visuais e também suporta scripts em R e Python para Machine Learning, além de conectores para o Apache Spark. Tem cerca de 2 mil módulos que podem ser usados como nós em fluxos de trabalho. Existe também uma versão comercial do KNIME que adiciona extensões para aumentar a produtividade e permitir a colaboração. É capaz de lidar com projetos com centenas de milhões de linhas.

database

7 - CockroachDB
CockroachDB, é um banco de dados SQL projetado para sobreviver a falhas de disco, dispositivo, rack e até mesmo do data center com interrupção mínima de latência e sem intervenção manual. A chegada do CockroachDB v2.0 em abril trouxe melhorias significativas de desempenho. Também expandiu a compatibilidade do produto com o PostgreSQL, adicionando suporte para JSON (entre outros tipos) e fornecendo funcionalidade para gerenciar clusters multi-regionais, em produção. No roadmap de desenvolvimento do CockroachDB v2.1, há um otimizador de consulta baseado em custo (para uma melhoria no desempenho da consulta), subconsultas correlacionadas (para ORMs) e criptografia em repouso na versão Enterprise.

8- Vitness
O Vitess é um sistema de clustering para escalonamento horizontal do MySQL através de sharding generalizado, escrito principalmente na linguagem Go. Combina muitos recursos importantes do MySQL com a escalabilidade de um banco de dados NoSQL. Seus recursos integrados de sharding permitem a expansão do banco de dados sem adicição lógica de sharding ao aplicativo.

O Vitess tem sido um componente central da infraestrutura de banco de dados do YouTube desde 2011 e cresceu para abranger dezenas de milhares de nós MySQL. Em vez de usar conexões padrão do MySQL, que consomem muita memória RAM e podem limitar o número de conexões por nó, o Vitess usa um protocolo baseado em gRPC, mais eficiente. O Plus Vitess reescreve automaticamente as consultas que prejudicam o desempenho do banco de dados e aproveita os mecanismos de cache para mediar consultas e evitar consultas duplicadas.

9 - TiDB
O TiDB é um banco de dados HTAP (Hybrid Transactional and Analytical Processing) distribuído e compatível com o MySQL. Ele é construído sobre um armazenamento de valor-chave transacional e oferece escalabilidade horizontal total (incluindo nós) e disponibilidade contínua. Os primeiros usuários do TiDB estavam na China, já que os desenvolvedores estão em Pequim. O código-fonte do TiDB é escrito principalmente na linguagem Go.

10 – YugaByte DB
YugaByte DB  é um banco de dados transacional nativo na nuvem para aplicativos distribuídos. Suporta  APIs do Cassandra e do Redis, com APIs PostgreSQL a caminho - todas as três baseadas em um mecanismo comum de armazenamento e replicação de banco de dados subjacente.  Possibilita que as organizações padronizem um único banco de dados distribuído para suportar uma infinidade de cargas de trabalho que exigem recursos SQL e NoSQL. Isso acelera o desenvolvimento de aplicativos e, ao mesmo tempo, reduz a complexidade operacional e os custos de licenciamento. 

O produto pretende capitalizar a convergência de três tendências; demanda contínua por bancos de dados SQL; adoção acelerada de bancos de dados NoSQL; e a migração inevitável de dados essenciais aos negócios para containers e a nuvem.

Muitas organizações confiam em bancos de dados SQL como Oracle e PostgreSQL para seus sistemas de registro compatíveis com ACID. No entanto, ao contrário de muitos bancos de dados SQL, o YugaByte DB oferece a capacidade de dimensionar horizontalmente os nós globalmente, em todas as regiões, mantendo-se totalmente compatível com o ACID.

 O YugaByte DB também oferece escalabilidade linear de gravação / leitura, além de reequilíbrio automático, fragmentação e failover. Esses recursos costumam ser muito caros ou difíceis de implementar em bancos de dados SQL tradicionais.

Além disso,  oferece todos os recursos que você espera de um banco de dados NoSQL, além de transações ACID de alto desempenho, distribuição elástica de dados globais em várias nuvens públicas e privadas.  

11- Neo4J
Neo4j  é um banco de dados NoSQL que implementa o modelo de grafos, uma estrutura de dados composta por nós (vértices) que estão ligados por meio de relacionamentos (arestas). O modelo de gráfico e a linguagem de consulta Cypher exigem aprendizado.

Oferece diversas possibilidades de uso, sempre com foco nos relacionamentos existentes entre entidades e pode ser executada Windows, MacOS e Linux, em containers Docker, em VMs e em clusters. O Neo4j pode lidar com gráficos muito grandes, mesmo em sua edição de código aberto, e tamanhos de gráficos ilimitados em sua edição corporativa. (A versão open source do Neo4j é limitada a um servidor.)

12- InfluxDB
O InfluxDB é um banco de dados de séries temporais. É otimizado para armazenamento rápido e de alta disponibilidade e recuperação de dados de séries temporais em campos como monitoramento de operações, métricas de aplicativos, dados de sensores da Internet das Coisas e análises em tempo real. Também tem suporte para processamento de dados do Graphite .

Projetado para lidar com cargas pesadas de gravação e consulta, é útil para registrar métricas e eventos e realizar análises. Ele roda em MacOS, Docker, Ubuntu/Debian, Red Hat/CentOS e Windows. Ele tem uma API HTTP embutida e uma linguagem de consulta semelhante a SQL. O objetivo é responder a consultas em tempo real, o que significa menos de 100 ms.

Junte-se a nós e receba nossas melhores histórias de tecnologia. Newsletter Newsletter por e-mail