Conheça o Scylla DB
- Postado por Adriano Bonacin
- Categorias NoSQL, scylladb
- Data 09/05/2019
- Comentários 0 comentário
Olá pessoal, como vão?
Hoje vou apresentar para vocês um novo banco de dados NoSQL, que se diz substituto (drop-in) do Apache Cassandra. O Cassandra é um NoSQL colunar, preparado para uma carga extremamente grande, sem ponto único de falha, multi-master e com outras boas características. Mas ele tem um famoso calcanhar de Aquiles: escrito em Java, roda sobre uma JVM.
Foi exatamente neste ponto que a ScyllaDB atacou e promete performance extremamente maior. O projeto Cassandra é Open Source e ele foi reescrito em C++ para ser completamente compatível em termos de protocolos, estruturas de dados, formatos de arquivos (SSTables), agora sem você perder o sono por causa de OutOfMemory devido a um problema de modelagem. Não que você pode errar a modelagem, mas o estrago é menor. 🙂
Aqui vamos utilizar um ambiente cloud AWS, com 3 instâncias m3.medium spots por um preço de $0,0067 Trumps/hora cada em N. Virginia.
O passo a passo é simples, instalar alguns pacotes, editar um arquivo e alguns comandos. Você vai precisar de privilégios de root. Vamos lá?
O primeiro é instalar o repositório “epel-release” que será responsável por prover algumas dependências. Em seguida, faremos o download do repositório do scylla e depois o instalaremos.
$ sudo yum install -y epel-release
$ sudo curl -o /etc/yum.repos.d/scylla.repo -L http://repositories.scylladb.com/scylla/repo/c30237ca-ca1d-4405-855b-0f5cb893f280/centos/scylladb-3.0.repo
$ sudo yum install -y scylla
Vai instalar vários pacotes (dependências), mas no final o seu scylla estará la. Para ambientes produtivos, há um script que faz algumas checagens de boas práticas, o scylla_setup. Iremos ignorar esta parte setando o ambiente como developer mode. Veja:
$ sudo /usr/lib/scylla/scylla_dev_mode_setup --developer-mode 1
Precisamos ajudar 4 parâmetros do arquivo /etc/scylla/scylla.yaml (5 se utilizar aws). São eles:
- cluster_name: Como no cassandra, é um nome para seu cluster. Todos os nodes precisam ter o mesmo cluster_name.
- seeds: responsáveis por controlar quem entra e sai do cluster.
- listen_address: endereço no qual os nodes se comunicam
- rpc_address: endereço no qual a aplicação comunica com o node, se tiver apenas uma interface, será igual ao anterior.
- endpoint_snitch: Ec2Snitch, para deploys SingleRegions, busca todas as informações diretamente da API da AWS.
Com estes parâmetros setados, basta iniciar o serviço (scylla-server) começando pelo seed. Após subir todos os nodes, o bom e velho nodetool estará lá para te ajudar. Na AWS, certifique-se que tenha liberado as portas de comunicação no seu Security Group.
Bom, queria apenas fazer esta demonstração. Você pode aproveitar agora e verificar como o ambiente se assemelha ao Cassandra em termos de ferramentas, CQL.
Caso queiram mais detalhes, o site deles é: https://www.scylladb.com/
Até a próxima.