Post Top Ad

Your Ad Spot

jueves, 8 de octubre de 2020

La naturaleza declarativa de SQL

 


Hemos estado cubriendo mucha información sobre tecnología, términos e ideas de bases de datos hasta ahora. Pronto nos sumergiremos en el uso del lenguaje de manipulación de datos para insertar, actualizar y eliminar datos en varias bases de datos que crearemos. Antes de llegar a ese punto, debemos echar un vistazo a un aspecto clave del lenguaje de consulta estructurado en general. Este sería el hecho de que SQL es un lenguaje declarativo, que es un animal muy diferente de un lenguaje procedimental. Lo más probable es que esté mucho más familiarizado con los enfoques procedimentales en informática. Es por eso que en este episodio, veremos más de cerca lo que significa ser un lenguaje declarativo y cómo necesitaremos ajustar nuestro pensamiento para hacer un mejor uso de él.


¿Qué es un lenguaje declarativo?

Si es como la mayoría de los desarrolladores web, probablemente encontró cosas como PHP y JavaScript más emocionantes que SQL cuando comenzó. Después de todo, cuando pensamos en programar, pensamos en hacer algo o en emprender una acción . SQL no es realmente lo primero que viene a la mente al seguir este tipo de pensamiento. El trato aquí es que esos lenguajes en los que probablemente se cortó primero son de procedimiento . Esto significa que siguen un proceso paso a paso de cómo hacer algo .

SQL, por otro lado, es un lenguaje declarativo . En un lenguaje declarativo, el programador declara lo que quiere y no cómo hacerlo . Es un cambio de paradigma sutil pero profundo de cómo podría estar acostumbrado a hacer las cosas. Considerándolo todo, SQL es bastante sencillo, pero si alguna vez se ha encontrado rascándose la cabeza sobre cómo abordar la resolución de un problema en SQL, puede deberse a esta misma diferencia en los enfoques de programación. Definitivamente se necesita una mentalidad y un proceso diferentes a los que podría estar acostumbrado.

Estructura básica de SQL

Todo SQL sigue una convención de seleccionar lo que desea, de dónde lo desea e incluir los filtros para aplicar. Se parece un poco a esto:

SELECCIONAR ... DESDE ... DÓNDE

Siguiendo esta convención, podríamos escribir la siguiente consulta:

Esto está muy bien. Básicamente se descompone así. El SELECT es lo que hay que conseguir. El DESDE dicta la ubicación para mirar y el DÓNDE es la condición que se aplicará. La parte LIKE usa los caracteres comodín de MySQL, que es solo un signo de porcentaje, para buscar cualquier dato dentro de posts_table que contenga el término 'laravel'. Esto describe el enfoque declarativo. Tenga en cuenta que la consulta anterior no dice algo como, obtenga todos los nombres de las publicaciones, recorra cada nombre para ver si contiene laravel y luego devuelva los resultados coincidentes. Ese sería un enfoque de procedimiento que no es lo que hacemos en MySQL.

Ventajas de un lenguaje declarativo

En un lenguaje declarativo, una ventaja es que es la propia base de datos la que determina el procedimiento. Todo lo que tiene que hacer es decirle a la base de datos lo que desea, ella descubrirá cómo obtener ese resultado para usted. Es el Optimizador el que determina qué algoritmo obtendrá de manera más eficiente los datos que solicite. Este es un enfoque muy diferente al que podría estar acostumbrado en su enfoque procedimental habitual para la programación. Es útil saber de antemano que así es como funciona MySQL, para que no se golpee la cabeza contra la pared al tratar de averiguar por qué sus enfoques procedimentales no funcionan en el futuro cuando entremos en consultas sin formato más detalladas . Básicamente, está cediendo su control a la base de datos, en lugar de usar su propia lógica. Necesitas pensar enlo que quieres , no cómo conseguirlo . ¿Consíguelo? Entendido. ¡Bueno!

Esquema del lenguaje declarativo

  • Eficiente de usar
  • La base de datos elige el algoritmo
  • Puede ser más difícil de depurar que de procedimiento
  • Cambio de paradigma para pensadores procedimentales

Cambia el enfoque al diseño de bases de datos

Cuando está programando una aplicación, si las cosas van lentas, puede tomar medidas para optimizar el procedimiento para resolver el problema. Tal vez pueda probar una solución recursiva frente a una solución de bucle simple. Quizás en otros casos, puede usar una función de cadena en lugar de una expresión regular. Hay muchas formas de ajustar su aplicación si es necesario cuando se utiliza un lenguaje de procedimiento. Debido a la naturaleza declarativa de SQL, esto no es posible cuando se trata de bases de datos. Si encuentra que las operaciones de su base de datos se están ejecutando lentamente, la mayoría de las veces buscará modificar el esquema de la base de datos o la estructura de la tabla en lugar de cambiar la consulta. Nuevamente, esto se debe a que MySQL ya está eligiendo el mejor procedimiento o algoritmo para proporcionar lo que solicitó, por lo que tratar de cambiar lo que solicita no será de ayuda. Diseñar bases de datos no es algo que pueda hacer a diario a menos que sea un DBA de algún tipo. Si eres un desarrollador web que se ocupa de configurar instalaciones de WordPress para clientes, ni siquiera piensas en el diseño de la base de datos. Quizás sea un desarrollador de complementos y tal vez necesite una o dos tablas adicionales en la base de datos. Una vez más, no es una tarea pesada de diseño real. El punto es que si desea mejorar en el diseño de bases de datos, es algo que tendrá que practicar y probar con más frecuencia de lo que probablemente esté haciendo ahora. Quizás sea un desarrollador de complementos y tal vez necesite una o dos tablas adicionales en la base de datos. Una vez más, no es una tarea pesada de diseño real. El punto es que si desea mejorar en el diseño de bases de datos, es algo que tendrá que practicar y probar con más frecuencia de lo que probablemente esté haciendo ahora. Quizás sea un desarrollador de complementos y tal vez necesite una o dos tablas adicionales en la base de datos. Una vez más, no es una tarea pesada de diseño real. El punto es que si desea mejorar en el diseño de bases de datos, es algo que tendrá que practicar y probar con más frecuencia de lo que probablemente esté haciendo ahora.

Conclusión

En este episodio, cubrimos el hecho de que SQL es un lenguaje declarativo. Es un concepto bastante simple, con la principal lección de pensar en términos de lo que quieres, no cómo conseguirlo. Esto puede ser nuevo si está acostumbrado al enfoque procedimental como probablemente la mayoría de nosotros. Puede parecer algo simple, pero vale la pena comprenderlo para proporcionar una mejor base para aprender MySQL a medida que avanzamos en esta serie.

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas