¿Es importante aprender un lenguaje de consulta estructurado para el desarrollo del backend?

Sí. Seguro.

Es importante conocer el SQL real que hace el trabajo por usted

Aunque hemos estado viviendo en el mundo de las ORM y las bibliotecas que encapsulan las consultas SQL subyacentes que se forman cuando interactúa con un RDBMS.

En la superficie, consultar la base de datos con el SQL generado parece sencillo, pero a menudo nos perdemos una posible optimización y deberíamos estar en condiciones de decir las deficiencias del ORM que se está utilizando.

Durante mucho tiempo, antes de darse cuenta de este cuello de botella, los marcos web populares como Rails y Django solían enviar ORM que encapsulaban las interacciones de DB del usuario, lo que facilitó a un ingeniero promedio el desarrollo del lado del servidor.

Habilitar las interacciones a través de las API REST fue una cuestión de pocos golpes de tecla.

Sin embargo, hay momentos en que estos ORM no generan SQL optimizado y los usamos en todas partes sin pensar que son solo nuestras consultas las que están ralentizando el sistema.

Un ejemplo clásico

Una tabla de Alumno se asignaría directamente a un recurso de Alumno. Habilitar CRUD y agregar algunas configuraciones fue pan comido.

pero digamos que quería hacer API ligeramente complicadas.

Querías buscar estudiantes y debajo de cada estudiante querías información anidada sobre su escuela.

La mayoría de los ORM consultarían la base de datos por alumno y buscarían los detalles de su escuela y luego generarían el resultado combinado.

Uno no se daría cuenta de esto si la aplicación hasta que la aplicación se vuelve viral y recibe muchos éxitos, los nodos desaparecerían en poco tiempo y vería que las solicitudes caducan con bastante frecuencia.

Esto se puede optimizar fácilmente obteniendo los detalles de los estudiantes de una vez y luego obteniendo los detalles de las escuelas de esos estudiantes en una segunda visita y luego combinando los resultados en código para generar el resultado.

Claro … Por ahora, tanto Django como Rails han optimizado sus ORM para tales casos de uso, pero puede haber más casos en los que uno debería estar en condiciones de decir cuál es el cuello de botella y qué está causando problemas.

Y eso es lo que separa a los ingenieros promedio de los que pueden mirar más allá de lo que el marco hace por ellos.

Y no solo se limita a MySQL y Postgres.

Incluso si está interactuando con MongoDB / Redis o, para el caso, ElasticSearch, debe saber qué está haciendo la biblioteca y estar al tanto de los posibles errores y fallas.

Si y no.

Creo que es importante aprender lo suficiente para realizar consultas y actualizaciones simples, pero no es importante aprender cada pequeño detalle de SQL.

Me resultó más fácil trabajar a partir de unos pocos ejemplos simples, luego expandir mi conocimiento a medida que surgía la necesidad.

Pero todo depende de la naturaleza del trabajo.

Si estaba trabajando en una situación en la que el número de usuarios de VAST está accediendo a cantidades VAST de datos increíblemente complicados, entonces claramente necesitaría un conocimiento exhaustivo de SQL.

Pero si solo usa una base de datos SQL como una forma práctica de almacenar el nombre de usuario y las contraseñas cifradas y similares para un blog de 10,000 usuarios, entonces el conocimiento más básico de SQL será suficiente.

Yo iría con un sí calificado. En principio, podría pasar toda su carrera como desarrollador de back-end y nunca escribir una línea de SQL, pero su elección de trabajos potenciales sería muy limitada y su atractivo para los empleadores potenciales se reduciría enormemente.

No necesita tener el nivel de conocimiento que se esperaría de un DBA, pero muchas, si no la mayoría de las empresas que emplean desarrolladores back-end no emplean DBA especializados, todo el desarrollo y gestión de la base de datos se realiza por desarrolladores back-end.

En las empresas que emplean DBA, son responsables de toda la infraestructura de la base de datos, si como desarrollador de back-end necesita usar esta base de datos, generalmente se espera que escriba su propio código de acceso a la base de datos, los DBA solo se involucran cuando desea realizar cambios en una base de datos e implementar un nuevo software.

Tldr; Si bien puede decirse que nunca puede escribir ningún SQL como desarrollador de back-end, cuanto más SQL conozca, mejor.

Sí, la gente normalmente espera que lo sepas. Puede o no usarlo, pero a menudo discute estructuras de datos y recuperación. También se suele llamar SQL.

More Interesting

¿Dónde puedo aprender cómo hacer back-end y front-end para desarrollar aplicaciones web y móviles?

¿Son .NET o PHP mejores para un usuario de servidor?

¿Cómo se ejecuta el backend en Drupal 6? ¿Alguien asigna alguna tarea primero tenemos que pensar backend cómo pensar alguna sugerencia amigos?

Si los sitios web están escritos solo en Python y HTML / CSS, ¿cuáles son las ventajas y desventajas de eso?

¿Son condicionales y booleanos la misma cosa?

Soy un desarrollador front-end y quiero aprender back-end. Cuál es la opción más interesante y estable para el desarrollo completo: Node.js con Express o Sails; o Python con frasco o pirámide?

¿Existe un lenguaje de programación todo en uno para la web que no requiera un back-end (como en todo incluido)?

¿Es una pérdida de tiempo aprender el desarrollo frontend porque casi todos los mejores graduados de CS están trabajando en backend?

¿Cuáles son los mejores idiomas de código abierto (front-end y back-end) para la plataforma de reserva de autobuses en línea como megabus.com?

¿Por qué hay una necesidad de un lenguaje front-end y back-end?

¿Qué puedo hacer si el back-end de mi proyecto actual está lleno de exploits?

¿Por qué Twitter eligió Scala como su idioma principal cuando reescribió el back-end para abordar los desafíos de escalabilidad?

¿Node.js se convertirá en la mejor alternativa para el desarrollo de backend en 2015?

¿Qué es la pila de Pied Piper? ¿Qué tecnología están usando?

Me ofrecieron un trabajo de ingeniería de software con opciones de hacer trabajos de backend o Android. ¿En cuál debería centrarme?