Resolvi desenvolver a ideia de um banco de dados e o resultado me supreendeu
Semana passada me surgiu uma ideia para criar um protótipo de banco de dados noSQL usando Python, buscando solucionar o problema de velocidade ao adicionar e obter dados do meu antigo projeto. Bem, escrevendo um código organizado e planejado, eu cheguei a um resultado satisfatório.
O objetivo é ser um banco de dados rápido e com baixo consumo de memória, também deve ser extremamente fácil de utilizar.
Lembrando que o projeto ainda está em desenvolvimento, preciso de opiniões da comunidade para dar continuidade (ou não) para este projeto!
O funcionamento básico
Primeiramente, você deve saber que o banco de dados usa o modelo key-value
, ou seja, só é possível adicionar dados usando uma chave e um valor. Além disso, o banco de dados já suporta todos os tipos básicos (string, int, float e bool).
O meu banco de dados funciona da seguinte maneira: em vez de salvar os dados em um único arquivo (como .sql
), os dados são organizados em diretórios e arquivos, e isso é usado para facilitar a busca do dado solicitado, aumentando muito a velocidade ao obter um dado do banco, pois não precisamos abrir um arquivo enorme para buscar apenas um dado, pois isso geraria um enorme consumo de memória. Eu sei que há uma forma de resolver isso usando generators
do Python, porém a velocidade é extremamente comprometida ao utilizar este método.
Em testes realizados utilizando um computador com processador Intel Celeron Dual Core de 2.16GHz e um SSD, eu consegui obter seguintes dados sobre a perfomance do banco de dados:
N° de dados usados | Tempo para adicionar | Tempo para obter |
---|---|---|
10.000 | 2.6 segundos | 01 segundo |
Observação: os dados adicionados e obtidos são dados sem criptografia.
Eu fiquei bem satisfeito com esses dados, é uma velocidade bem mais alta comparada com meu projeto anterior. Além disso, neste projeto, eu consegui juntar velocidade e baixo consumo de memória facilmente, sem sacrificar um ou outro.
Você também pode testar a velocidade e desempenho do banco de dados usando o script speedtest.py no repositório do projeto, desenvolvido para exibir o tempo de execução em operações de adicionar e obter dados.
O projeto não está totalmente desenvolvido, nem conta com uma versão disponível para download no PyPI, pois ainda vai passar por muitas correções e atualizações, inclusive a implementação de criptografia dos dados e acesso via CLI ou rede. Após isso, uma versão oficial será lançada.
Se você acha que este projeto pode ser útil, considere contribuir ao projeto no GitHub ou simplesmente deixar uma estrela como incentivo ⭐!
Obrigado por ler até aqui.
by @jaedsonpys
Interessante sua ideia, muita gente só reclama das tecnologias e nunca vai lá e mete a mão pra resolver o problema. Documenta o código para desenvolvedores que necessitam de experiência em desenvolvimento python poder contribuir. Documenta seu banco pra ser usado por outros desenvolvedores como dependência de projeto também. Aproveita e sobe no DockerHub.
Parabéns pelo projeto.