Edições do Cassandra
- Postado por Adriano Bonacin
- Categorias cassandra
- Data 23/06/2023
- Comentários 0 comentário
Introdução
O Cassandra tem a sua versão free (open source) e ela é amplamente utilizada. Já comentamos que ele foi desenvolvido pelo Facebook e hoje é suportado pela comunidade, sendo um Projeto de primeira linha da Fundação Apache. Mas assim como outros bancos de dados, há versões enterprises, versões fork (clonada) e outras até reescritas. Vamos falar um pouco sobre cada uma.
Apache Cassandra
O Apache Cassandra é a versão suportada pela comunidade. A comunidade, às vezes, é formada por commiters que trabalham para outras empresas. Por exemplo, no caso do Cassandra parte dos commiters são funcionários da Datastax ou da The Last Pickle, uma empresa adquirida pela Datastax recentemente.
Eles usam o Jira para tracking dos tickets (bugs, melhorias, …) e você pode consultá-lo aqui. Como o projeto é open source, o código é armazenado publicamente no github e você pode consultar sempre que quiser entender melhor como o Cassandra funciona.
Você pode usar em produção sem pagar nada. Ele possui algumas ferramentas auxiliares (que falaremos a respeiro), também open source, que o tornam confiável e seguro.
Datastax Enterprise
A Datastax adaptou o Apache Cassandra e incluiu alguns produtos na stack chamada Datastax Enterprise, ou DSE para os íntimos. É um produto enterprise com várias features de segurança e auditoria, que vão chegando aos poucos na versão OS.
Ele também entrega uma ferramenta de monitoramento (dashboard e alertas) chamada OpsCenter, que também pode fazer o deploy de seus Cassandras, cuidar dos backups/restores e dos repairs.
Entre os produtos desta stack, além do Cassandra há o Datastax Search, que é uma integração do Cassandra com o Solr e permite você criar Solr index estendendo a capacidade de busca pelas colunas indexadas, com a busca completamente transparente para o cliente. Você faz sua query CQL e se for necessário buscar no Solr (query sem filtrar pela PK, por exemplo) o Datastax Search faz isso para você de forma rápida. Acaba sendo imperceptível mesmo na maioria das vezes.
Um outro produto é o Datastax Analytics, que disponibiliza o Apache Spark já integrado com o Cassandra, com um filesystem (DSEFS) também distribuído utilizado pelo Spark como apoio. Há outros produtos, mas vou ficar por aqui.
Datastax AstraDB
Também da Datastax, o AstraDB é uma variação do Cassandra na versão gerenciada. Você cria o banco de dados, cria as keyspaces e as tabelas e você tem um endpoint pronto para usar. No momento da criação você pode escolher a cloud pública de preferência, entre Amazon, GCP ou Azure. O preço é baseado no tamanho do banco de dados e no número de requisições de escrita e leitura. Para experimentar você pode criar um banco de dados e você terá USD 25,00 para testar.
O Astra inclui dashboards no Grafana para auxiliar no monitoramento e uma camada de API usando Stargate, para quem quer ler e escrever usando Rest, gRPC ou GraphQL API ao invés de CQL.
Amazon Keyspace
O Amazon Keyspace é um serviço gerenciado compatível com o Apache Cassandra 3.11.2 que entrega algumas features, porém não todas. Assim como o AstraDB, o preço é baseado no storage em uso e no número de requisições. Há modelo de preço on-demand que não necessita conhecer ou especificar antecipadamente o throughput, porém é um pouco mais caro, e há o provisionado onde definimos a quantidade de leituras e escritas esperado e o auto-scaling tenta ajustar as variações da melhor forma possível.
É importante salientar que o Amazon Keyspace tem algumas restrições, como TRUNCATE TABLE. Para escrita ela não é flexível quanto à consitência, sempre usando LOCAL QUORUM. Você pode ver as diferenças entre Amazon Keyspace e Apache Cassandra aqui.
É um produto gerenciado que vem ganhando adeptos e tenho ouvido cada vez mais sobre ele, com players grandes usando em produção. Uma ótima opção para quem não quer administrar o Cassandra já possui a stack inteira rodando na AWS.
Scylla DB
Por fim temos o Scylla DB, um produto baseado no Cassandra, mas reescrito em C++. Particularmente eu nunca testei a diferença de performance entre ambos, mas frequentemente vemos benchmarking da ScyllaDB apontando ganhos em relação ao Apache Cassandra. O ScyllaDB tem compatibilidade com o Apache Cassandra e com o Amazon DynamoDB.
Eles tem a versão Cloud, que é gerenciada, a versão OpenSource que você pode usar o quanto quiser, mas traz junto ferramentas de monitoramento, backup e repairs limitados a 5 nodes e a versão enterprise que não há limite de nodes para monitoramento, backup e repair, além de ter suporte a outras premium features, como auditoria, autenticação com LDAP e outros. Você pode ver o comparativo entre as versões aqui.
Azure Managed Instance for Apache Cassandra
(Edit) Incluindo aqui também o serviço oferecido pela Microsoft, através de sua nuvem. Temos duas opções: uma chamada Azure Managed Instances for Apache Cassandra, onde você pode criar seu cluster diretamente na console da Azure, passando as informações que o Cassandra precisa, como ClusterName, DatacenterName e outras. No fim, você tem um cluster e você pode escalá-lo horizontalmente ou verticalmente. Há um passo a passo bem detalhado aqui.
A outra opção é o Azure Cosmos DB for Apache Cassandra, que é um banco de dados da Microsoft, relacional e NoSQL totalmente gerenciado pela Microsoft. Ou seja, não é exatamente um Cassandra rodando, mas um DB com características bem semelhantes. Tão semelhante que eles conseguiram introduzir uma camada de API que fornece quase as mesmas opções de um Cassandra, ainda aproveitando-se ainda dos pontos fortes do CosmoDB.
Migração
Uma dúvida frequente é se conseguimos migrar entre estas distribuições de forma fácil e principalmente com zero downtime. Felizmente a resposta é sim, há algumas estratégias para migração entre estas edições. É possível realizá-la de forma online usando algumas estratégias de double write (na origem e no destino) enquanto fazemos a migração usando alguma estratégia como Copy, DSBulk ou mesmo Spark. Mas esse assunto é interessante e vamos dedicar um artigo inteiro para explorá-lo com um cenário passo a passo.
Conclusão
O intuito aqui foi apresentar algumas opções disponíveis para você usar seu Cassandra. Normalmente empresas de pequeno e médio porte não possuem um DBA Cassandra disponível e por isso acabam preferindo algum serviço gerenciado. Para aqueles que instalaram e hoje rodam seu workload on-premises, ainda possuem o desafio de migrá-lo, aqui você viu algumas opções que pode considerar.
Penso ainda em escrever detalhadamente sobre as principais funcionalidades/opções de cada uma. É só aguardar!