Não aprenderei seu idioma de consulta de lixo

Vai ser um pouco divertido, mas estou muito chateado com o software no qual as pessoas tentam inventar sua própria linguagem de consulta. Já temos um trilhão de ORMs diferentes, outros trilhões de bancos de dados com nossa própria linguagem de consulta e cada um trilhão de produtos SaaS, para acesso aos quais você precisa dominar algumas DSLs regulares que eles inventaram.


Devolva meu SQL. Esta linguagem é compreensível para todos, já existe a partir dos anos 70 e durante esse tempo conseguiu se tornar um padrão. É fácil de ler e pode ser usado por qualquer pessoa, de negócios a engenheiros.


No entanto, eu tenho que aprender um monte de "linguagem de consulta de lixo" diferente porque as pessoas ainda estão tentando reinventar a roda.


Vamos começar com o ORM. Sua principal característica é uma redução no tempo de desenvolvimento. Mas, em vez de escrever SQL compreensível para todos, preciso estudar a documentação de um ORM específico para descobrir como escrever minhas consultas para ele. Além disso, preciso gastar tempo depurando para descobrir por que esse ORM traduziu minha consulta em algum SQL monstruoso que une 17 tabelas usando sua verificação completa. Em vez de aderir ao SQL padrão, onde é fácil falar sobre eficiência ("tente usar colunas indexadas em predicados", "não exagere nas junções em uma consulta" etc.), preciso lidar com uma camada lamacenta adicional, que oculta a consulta SQL original. No final, você ficará com classes de dados inchadas de nível superior, em vez de lidar com estruturas de banco de dados fáceis de entender e processar.


Sem mencionar que existem cerca de cinco mil ORMs, então, em vez de aprender SQL, uma vez que tenho que aprender 34 ORMs diferentes. Isso não significa que as pessoas aprendem ORM, significa que simplesmente não aprendem SQL.


E todos esses produtos SaaS. Acabei de escolher alguns da pilha da minha empresa:



O que poderia ser pior do que um despejo de dados? Um despejo de dados que inventa sua própria linguagem de consulta.


Para ser justo, deve-se dizer que algumas dessas consultas ainda são do tipo SQL, ou pelo menos reivindicam esse papel, mas com suas próprias peculiaridades que me fazem descartar tudo o que eu sabia sobre o SQL antes. Às vezes, a tal ponto que é esse conhecimento passado que pode se tornar praticamente inútil.


Além disso, cada banco de dados também tenta reinventar a linguagem de consulta. Mongo tem sua própria linguagem de consulta terrível , que eu nunca entendi, Lucene tem sua própria , etc.


O que estou pedindo? Não é realmente muito:


  1. Cada produto SaaS deve fornecer a capacidade de copiar todos os dados no meu próprio banco de dados SQL (no meu caso, Postgresql / Redshift). Eu não quero usar o DSL deles. Talvez a União Europeia consiga estabelecer isso como o próximo requisito após a adoção da diretiva sobre serviços bancários abertos PSD2 .
  2. É necessária uma moratória de 30 anos para inventar novas linguagens de consulta.
  3. Precisamos dissipar o mito de que os ORMs tornam o código mais limpo. Alterne para SQL puro e você obterá uma interação muito mais simples e transparente com seu banco de dados.

Só isso. Entendo que sou como um velho resmungão, mas assumo esse risco.


PS


Esta postagem recebeu um número suficiente de visualizações, portanto deve causar um grande interesse entre o público. Siga a discussão no Hacker News e os comentários no Reddit r / programming .

Source: https://habr.com/ru/post/pt422667/


All Articles