Será un poco alocado, pero estoy realmente molesto con el software en el que las personas intentan inventar su propio lenguaje de consulta. Ya tenemos un billón de ORM diferentes, otro billón de bases de datos con nuestro propio lenguaje de consulta cada uno y otro billón de productos SaaS, para el acceso al cual necesita dominar un DSL regular que inventaron.
Devuélveme mi SQL. Este lenguaje es comprensible para todos, ya existe desde los años 70 y durante este tiempo logró convertirse en un estándar. Es fácil de leer y puede ser utilizado por cualquier persona, desde empresas hasta ingenieros.
Sin embargo, en cambio, tengo que aprender un montón de "lenguaje de consulta basura" diferente porque la gente todavía está tratando de reinventar la rueda.
Comencemos con ORM. Su característica principal es una reducción en el tiempo de desarrollo. Pero en lugar de escribir SQL comprensible para todos, tengo que estudiar la documentación de un ORM específico para descubrir cómo escribir mis consultas. Además, tengo que dedicar un tiempo a la depuración para descubrir por qué este ORM tradujo mi consulta a un monstruoso SQL que une 17 tablas con su análisis completo. En lugar de apegarme al SQL estándar, donde es bastante fácil hablar de eficiencia ("intente usar columnas indexadas en predicados", "no exagere con uniones en una consulta", etc.), tengo que lidiar con una capa fangosa adicional, que oculta la consulta SQL original. Al final, se quedará con clases de datos hinchadas de nivel superior, en lugar de tratar con estructuras de bases de datos que son fáciles de entender y procesar.
Sin mencionar que hay alrededor de cinco mil ORM, así que en lugar de aprender SQL, una vez que tenga que aprender 34 ORM diferentes. Esto no significa que las personas aprendan ORM, sino que simplemente no aprenden SQL.
Y todos estos productos SaaS. Acabo de elegir algunos de la pila de mi empresa:
¿Qué podría ser peor que un volcado de datos? Un volcado de datos que inventa su propio lenguaje de consulta.
Para ser justos, debería decirse que algunas de estas consultas siguen siendo similares a SQL, o al menos reclaman este rol, pero con sus propias peculiaridades que me hacen descartar todo lo que sabía sobre SQL antes. A veces hasta tal punto que es este conocimiento pasado el que puede resultar prácticamente inútil.
Además, cada base de datos también intenta reinventar el lenguaje de consulta. Mongo tiene su propio lenguaje de consulta terrible , que nunca entendí, Lucene tiene el suyo , etc.
¿Qué estoy pidiendo? Realmente no mucho:
- Cada producto SaaS debería proporcionar la capacidad de copiar todos los datos en mi propia base de datos SQL (en mi caso Postgresql / Redshift). No quiero usar su DSL. Quizás la Unión Europea podrá establecer esto como el próximo requisito después de la adopción de la directiva sobre servicios de banca abierta PSD2 .
- Se necesita una moratoria de 30 años para inventar nuevos lenguajes de consulta.
- Necesitamos disipar el mito de que los ORM hacen que el código sea más limpio. Cambie a SQL puro y obtendrá una interacción mucho más simple y transparente con su base de datos.
Eso es todo. Entiendo que soy como un viejo gruñón, pero me arriesgo.
PS
Esta publicación ha recibido un número suficiente de visitas, por lo que debería causar un gran interés entre el público. Siga la discusión en Hacker News y los comentarios sobre Reddit r / programación .