Pap谩 puede en B, o generaci贸n de c贸digo simple y ordenada para SQLite

imagen



Muy pronto, el 4 y 5 de noviembre, comenzaremos nuevos cursos de SQL para an谩lisis de datos y un desarrollador de C ++ , especialmente para su inicio, hemos preparado esta traducci贸n del blog de ingenier铆a de Facebook con una descripci贸n general de una herramienta 煤til.



SQLite se usa ampliamente, pero escribir capas de acceso a datos bien probadas y compatibles puede ser un desaf铆o en el mejor de los casos. Muchos comandos utilizan alg煤n tipo de generaci贸n de c贸digo para evitar tener que cambiar docenas de n煤meros de secuencia cada vez que se agrega una columna, pero este enfoque conduce a errores. El compilador de CQL a CG / SQL le permite crear procedimientos almacenados complejos con consultas grandes, y las combinaciones de ayudantes sint谩cticos y tipado fuerte hacen que estos procedimientos sean mucho m谩s f谩ciles de obtener y almacenar. La combinaci贸n de mecanograf铆a s贸lida en un idioma y una herramienta para una buena prueba unitaria puede proporcionar la confianza de que incluso la l贸gica muy compleja es correcta.






Lo que es



CG / SQL es un sistema de generaci贸n de c贸digo para la popular biblioteca SQLite que permite a los desarrolladores escribir procedimientos almacenados en una variante Transact-SQL (T-SQL) y compilarlos en c贸digo C que usa la API SQLite para realizar operaciones C. CG / SQL permite a los ingenieros crear procedimientos almacenados complejos con grandes consultas sin la revisi贸n manual del c贸digo requerida por los m茅todos existentes.



El sistema completo tambi茅n incluye funciones para administrar y actualizar el esquema, generar c贸digo de prueba para procedimientos almacenados, obtener planes de consulta para procedimientos e interactuar con procedimientos almacenados de otros lenguajes como Java y Objective-C. La salida JSON permite el an谩lisis o el c贸digo de front-end. El paquete contiene una extensa documentaci贸n del lenguaje y del sistema.



Que hace la herramienta



El compilador CQL hace la mayor parte del trabajo sucio. Lee esquemas y procedimientos, proporcionando un lenguaje fuertemente tipado con cientos de errores de compilaci贸n dise帽ados para prevenir problemas de tiempo de ejecuci贸n de SQLite. El compilador monitorea cuidadosamente los tipos de datos variables y los tipos de esquema, informando inconsistencias, como intentar asignar columnas anulables a variables de salida no anulables, y de lo contrario asegura que las API de SQLite se usen de manera consistente y correcta.



El c贸digo generado siempre comprueba los c贸digos de retorno y siempre utiliza los n煤meros de secuencia y los tipos de columna correctos al vincular o leer datos hacia o desde SQLite. Esto es exactamente lo que es dif铆cil de obtener y mantener correctamente. Adem谩s, las anotaciones de esquema permiten al sistema crear autom谩ticamente procedimientos almacenados que actualizan la base de datos de cualquier versi贸n anterior del esquema a la versi贸n actual. Para que esto sea posible, se realizan decenas de controles.



Las anotaciones de procedimiento tambi茅n se pueden utilizar para indicar que le gustar铆a mantener el c贸digo de prueba para crear fragmentos de esquema e insertar datos en ese esquema. Este enfoque le permite probar los procedimientos casi sin problemas y tampoco depender del sistema que se est谩 implementando. De manera similar, estas herramientas pueden crear esquemas que validen los planes de consulta en el momento de la compilaci贸n.



驴Por qu茅 es necesario?



SQLite se usa ampliamente, pero escribir capas de acceso a datos bien probadas y compatibles puede ser un desaf铆o en el mejor de los casos. Muchos comandos utilizan alg煤n tipo de generaci贸n de c贸digo para evitar tener que cambiar docenas de n煤meros de secuencia cada vez que se agrega una columna, pero este enfoque conduce a errores. El compilador de CQL a CG / SQL le permite crear procedimientos almacenados complejos con consultas grandes, y las combinaciones de ayudantes de sintaxis y tipado fuerte hacen que estos procedimientos sean mucho m谩s f谩ciles de obtener y almacenar. La combinaci贸n de mecanograf铆a s贸lida en un idioma y una herramienta para una buena prueba unitaria puede proporcionar la confianza de que incluso la l贸gica muy compleja es correcta. Los ayudantes sint谩cticos convierten c贸digo seguro en SQL can贸nico, por lo que los ingenieros escriben menos c贸digo, pero el c贸digo es m谩s correcto y se ejecuta en todas partes.Veamos un ejemplo:



create procedure insert_a_row(like your_table)
begin
  insert into your_table from arguments;
end;


Este c贸digo crea un procedimiento para insertar en cualquier tabla (aqu铆 est谩 your_table), cuyos argumentos son exactamente las columnas de la tabla. No se olvidar谩 de las columnas, no ponga docenas de argumentos en el orden incorrecto. Las construcciones son concisas y s贸lidas, lo que hace que sea m谩s f谩cil para los ingenieros generar c贸digo sin tener que verificar manualmente cada parte.



CG / SQL en Github



CG / SQL es ciertamente algo 煤til, pero el c贸digo de promoci贸n de descuento HABR no es menos 煤til, le dar谩 un 10% adicional al descuento indicado en el banner.



imagen








Art铆culos recomendados






All Articles