O TigelaDB é um banco de dados de chave/valor, com suporte para operações básicas e transações recursivas. É construído em Elixir, sem nenhuma dependência externa.
Existem duas maneiras de rodar o projeto, utilizando Docker ou o próprio Elixir/Erlang instalado em sua máquina. Veremos as duas formas.
Primeiramente, clone o repositório em seu computador com:
λ git clone https://github.com/pedrohaveloso/tigela-db.gitApós, entre na pasta do projeto:
λ cd ./tigela-dbEspera-se que, para rodar dessa maneira, você tenha uma versão do Elixir superior a 1.16 instalada em sua máquina, além do Erlang.
Dentro da pasta, faça:
λ mix escript.buildAgora, basta rodar o executável criado:
λ ./tigelaPara rodar a bateria de testes, execute:
λ mix testEspera-se que, para rodar dessa maneira, você tenha o Docker instalado em sua máquina.
Dentro da pasta, rode o comando abaixo para construir a imagem:
λ docker build -t tigela-db .Agora, inicie o container com a imagem:
λ docker run --init -it tigela-dbO programa estará rodando no Docker.
Para rodar a bateria de testes, execute:
λ docker run --rm tigela-db mix testO TigelaDB possui cinco comandos, sendo eles: SET, GET, BEGIN, ROLLBACK e COMMIT. Veja, abaixo, uma definição mais apropriada e detalhada de cada comando disponível.
Insere ou modifica o valor de uma chave no banco. A chave e o valor são persistentes por padrão, sendo armazenado em memória ao iniciar uma transação.
Sintaxe: SET <key> <value>
- Onde <key> deve ser uma sequência de caracteres ou dígitos, podendo conter espaços caso seja envolvido entre aspas simples (').
- Onde <value> pode ser um valor numérico, um valor booleano (TRUE ou FALSE) ou um texto, sendo o texto qualquer outro valor sem espaços, podendo conter espaços ao ser envolvido entre aspas duplas (").
Após executado, uma saída ocorre, contendo um valor booleano (TRUE ou FALSE) que representa se a chave já existia anteriormente, e o valor inserido.
Exemplos:
> SET x 10
FALSE 10
> SET 'x' 10
TRUE 10
> SET last name "Pedro"
ERR "SET <key> <value> - Syntax error"
> SET 'last name' "Pedro"
FALSE "Pedro"
> SET 'last name' Pedro
TRUE Pedro
> SET 'full name' Pedro Veloso
ERR "SET <key> <value> - Syntax error"
> SET 'full name' "Pedro Veloso"
FALSE "Pedro Veloso"Obtém o valor de uma chave salvo no banco.
Sintaxe: GET <key>
- Onde <key> obedece as mesmas regras de
SET.
Após ser executado, uma saída contendo o valor ocorre. Em casos onde o valor não exista, a saída é NIL.
Exemplos:
> GET name name
ERR "GET <key> - Syntax error"
> GET name
NIL
> SET name "Juan"
FALSE "Juan"
> GET name
"Juan"Inicia uma nova transação.
Sintaxe: BEGIN
Após ser executado, uma saída ocorre contendo o nível atual de transação (quantidade de transações ativas).
Exemplos:
> BEGIN
1
> BEGIN
2Desfaz uma transação e descarta todos os dados modificados ou adicionados durante ela.
Sintaxe: ROLLBACK
Após ser executado, uma saída ocorre contendo o nível atual de transação.
Exemplos:
> BEGIN
1
> SET x 10
FALSE 10
> BEGIN
2
> SET x 20
TRUE 20
> ROLLBACK
1
> ROLLBACK
0
> GET x
NILCompleta uma transação e salva todos os seus dados e modificações. Caso hajam outras transações anteriores a atual, os dados são salvos nela. Caso a transação atual seja única, os dados são salvos de maneira persistente.
Sintaxe: COMMIT
Após ser executado, uma saída ocorre contendo o nível atual de transação.
Exemplos:
> SET x 10
FALSE 10
> BEGIN
1
> SET x 20
TRUE 20
> COMMIT
0
> GET x
20
