Prefácio
Não era suposto ser assim tão sério.
Em dezembro de 2019, tornei-me pai e depois veio a pandemia, o que me deixou atordoado, a fazer malabarismos com a vida de recém-nascido e a tentar manter um sentido de "eu".
No trabalho, tive de juntar dois ficheiros CSV enquanto programava em Rust, e pareceu-me muito mais complicado do que deveria ser. Perguntei-me se haveria formas mais fáceis de o fazer do que configurar o SQLite. Por isso, como se faz frequentemente no desenvolvimento de software, decidi tentar criar o meu próprio algoritmo de junção.
Na altura, eu era muito novo no Rust e não sabia muito sobre otimização de desempenho. Por isso, como escritor orgulhoso do meu primeiro algoritmo de junção, descobri que a minha implementação era muito mais lenta do que o pandas. Este resultado insatisfatório plantou a semente do que mais tarde se tornaria o Polars.
Isso levou-me a pesquisar motores de bases de dados, a aprender Rust e a fazer muitas tentativas e erros ao longo do ano e meio seguinte. À medida que fui aprendendo mais sobre bases de dados, algoritmos, desempenho, memória, código inseguro, etc., os meus objetivos mudaram. Passei de querer fazer uma junção mais rápida do que o pandas para construir um pacote DataFrame para Rust e, eventualmente, um motor de consulta de alto desempenho que pudesse rivalizar com o estado da arte no cenário Python.
Inspirei-me nos pontos fortes e fracos do pandas, nas abordagens declarativas do SQL e do PySpark, nos princípios da programação ...