Recentemente iniciamos o desenvolvimento de uma nova camada intermediária de abstração de dados, cujo objetivo é ser uma alternativa prática ao ORM que herdamos do codebase do Django.
Open Query é uma camada de abstração de dados representada por um conjunto de classes escritas em Python para o Orun e inspiradas no Linq do DotNet que oferece uma via de mão dupla (Python-SQL e SQL-SQL) para executar comandos nativos SQL.
Resumidamente o funcionamento do Open Query é baseado em 3 etapas:
- Parser
- Analisador de AST
- Compilação para SQL
Python-SQL
É a maneira de escrever instruções em Python para que sejam compiladas em SQL nativo e posteriormente executadas. Semelhante ao ORM do Django, o programador escreve as instruções diretamente em Python, que posteriormente são compiladas em SQL nativo (conforme o tipo de banco de dados) e executadas quando preparadas.
Pros
- Necessário conhecer apenas a linguagem Python
Contras
- Menos prático para programadores que dominam SQL
SQL-SQL
Se trata de um dialeto com instruções SQL padronizadas. É uma linguagem intermediária que as instruções escritas em SQL sejam posteriormente transpilada para SQL nativo e finalmente executadas.
Com esse recurso o desenvolvedor mais familiarizado com a linguagem SQL terá vantagem prática na construção de consultas complexas.
Pros
- Escrita prática de consultas
- Instruções em dialeto SQL intermediário são convertidas para SQL nativo (maior performance pode ser alcançada em instruções complexas)
Contras
- Requer conhecimento de linguagem SQL