Dad can in B, ou Geração de código simples e organizado para SQLite

imagem



Muito em breve, nos dias 4 e 5 de novembro, iniciaremos novos fluxos de cursos de SQL para análise de dados e desenvolvedor C ++ , especialmente para o seu início, preparamos esta tradução do blog Engenharia do Facebook com uma visão geral de uma ferramenta útil.



O SQLite é amplamente utilizado, mas escrever camadas de acesso a dados bem testadas e com suporte pode ser desafiador, na melhor das hipóteses. Muitos comandos usam algum tipo de geração de código para evitar a alteração de dezenas de números de sequência sempre que uma coluna é adicionada, mas essa abordagem leva a erros. O compilador CQL para CG / SQL permite que você crie procedimentos armazenados complexos com grandes consultas, e combinações de auxiliares de sintaxe e tipos fortes tornam esses procedimentos muito mais fáceis de obter e armazenar. A combinação de uma forte digitação em um idioma e uma ferramenta para um bom teste de unidade pode fornecer a confiança de que até mesmo lógicas muito complexas estão corretas.






O que é isso



CG / SQL é um sistema de geração de código para a popular biblioteca SQLite que permite aos desenvolvedores escrever procedimentos armazenados em uma variante Transact-SQL (T-SQL) e compilá-los em código C que usa a API SQLite para realizar operações C. CG / SQL permite que os engenheiros criem procedimentos armazenados complexos com grandes consultas sem a revisão manual do código exigida pelos métodos existentes.



Todo o sistema também inclui funções para gerenciar e atualizar o esquema, gerar código de teste para procedimentos armazenados, obter planos de consulta para procedimentos e interagir com procedimentos armazenados de outras linguagens, como Java e Objective-C. A saída JSON permite análise ou código de front-end. O pacote contém extensa linguagem e documentação do sistema.



O que a ferramenta faz



O compilador CQL faz a maior parte do trabalho sujo. Ele lê esquemas e procedimentos, fornecendo uma linguagem fortemente tipada com centenas de erros de compilação projetados para evitar problemas de tempo de execução do SQLite. O compilador monitora cuidadosamente os tipos de dados variáveis ​​e os tipos de esquema, relatando inconsistências, como tentar atribuir colunas anuláveis ​​a variáveis ​​de saída não anuláveis ​​e, de outra forma, garantir que as APIs SQLite sejam usadas de forma consistente e correta.



O código gerado sempre verifica os códigos de retorno e sempre usa os números ordinais e tipos de coluna corretos ao vincular ou ler dados de ou para SQLite. Isso é exatamente o que é difícil de obter e manter corretamente. Além disso, as anotações de esquema permitem que o sistema crie automaticamente procedimentos armazenados que atualizam o banco de dados de qualquer versão anterior do esquema para a versão atual. Para isso, dezenas de verificações são realizadas.



As anotações de procedimento também podem ser usadas para indicar que você gostaria de manter o código de teste para criar fragmentos de esquema e inserir dados nesse esquema. Essa abordagem permite testar procedimentos quase sem complicações e também não depende do sistema que está sendo implantado. Da mesma forma, essas ferramentas podem criar esquemas que validam planos de consulta em tempo de compilação.



Por que isso é necessário?



O SQLite é amplamente utilizado, mas escrever camadas de acesso a dados bem testadas e com suporte pode ser desafiador, na melhor das hipóteses. Muitos comandos usam algum tipo de geração de código para evitar a alteração de dezenas de números de sequência sempre que uma coluna é adicionada, mas essa abordagem leva a erros. O compilador CQL para CG / SQL permite que você crie procedimentos armazenados complexos com grandes consultas, e combinações de auxiliares de sintaxe e tipos fortes tornam esses procedimentos muito mais fáceis de obter e armazenar. A combinação de forte digitação em um idioma e uma ferramenta para bons testes de unidade pode fornecer a confiança de que até mesmo lógicas muito complexas estão corretas. Os auxiliares sintáticos convertem o código seguro em SQL canônico, para que os engenheiros escrevam menos código, mas o código é mais correto e roda em qualquer lugar.Vejamos um exemplo:



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


Este código cria um procedimento para inserir em qualquer tabela (aqui está your_table), cujos argumentos são exatamente as colunas da tabela. Você não se esquecerá das colunas, não coloque dezenas de argumentos na ordem errada. As construções são concisas e robustas, o que torna mais fácil para os engenheiros gerar código sem ter que verificar manualmente cada parte dele.



CG / SQL no Github



CG / SQL é certamente uma coisa útil, mas o código promocional de desconto HABR não é menos útil, ele lhe dará um adicional de 10% ao desconto indicado no banner.



imagem








Artigos recomendados






All Articles