A ideia é trazer a diferença entre requests com Full-text search indexes e buscas em um JSON com os próprios métodos do PHP.
Alguns pontos devem ser considerados:
- O Laravel tem built-in o scout, que é uma solução para implementar full-text search de forma simples, utilizando serviços como Algolia , Meilisearch e TypeSense. Por serem serviços, alguns são pagos e outros Open Source.
- Esse Benchmarking não metrifica quanto de RAM ou CPU está sendo gasto.
- O processo de marshalling e unmarshalling é considerado "caro", por isso deve ser feito com cautela. O processo em busca no JSON pode causar problemas de memória, mas não consigo metrificar isso nessa POC. leia mais
Foram criados 2 endpoints
/seeding -> Fará a introspecção de dados do JSON no database.
/find-json -> Fará as buscas do dado desejado, pelo input mockado no código.
- Busca os valores utilizando o Full-text search index.
- Busca os valores diretamente do JSON.
Ambas as repostas são extremamente rápidas, sendo a busca em JSON mais veloz em todos os casos, porém, não está sendo considerado o uso de RAM e CPU para conversão de dados, o que em grande escala pode ser trabalhoso. Outro ponto não explicíto, é a coesão dos dados da resposta, que com a busca indexada apresenta melhor experiência de busca, sendo talvez mais ideal para a experiência do usuário.
Bancos de dados relacionais costumam utilizar AVL Tree para balancear e distribuir indexes, sendo trabalhoso redistribui-los a cada nova inserção. Nossa vantagem é: Nos faremos poucas mutações e muitas consultas, ou seja, extrair o melhor do poder de indexação.
Então, qual abordagem devemos seguir ?
- Na minha pesquisa, ambas as abordagens resolvem o problema, sendo a pesquisa em JSON simplista e a inserção em banco mais trabalhosa, podendo ser esse o criétio de escolha.
Existem outras opções de serviço que serão abordadas fora desse repositório, então por hora é isso. Fim :)