Papa peut en B, ou Génération de code simple et soignée pour SQLite

image



Très bientôt, les 4 et 5 novembre, nous commencerons de nouveaux flux de cours SQL pour l'analyse de données et un développeur C ++ , en particulier pour leur démarrage, nous avons préparé cette traduction à partir du blog d'ingénierie Facebook avec un aperçu d'un outil utile.



SQLite est largement utilisé, mais l'écriture de couches d'accès aux données bien testées et prises en charge peut être au mieux difficile. De nombreuses commandes utilisent une sorte de génération de code pour éviter d'avoir à changer des dizaines de numéros de séquence à chaque fois qu'une colonne est ajoutée, mais cette approche conduit à des erreurs. Le compilateur CQL vers CG / SQL vous permet de créer des procédures stockées complexes avec des requêtes volumineuses, et des combinaisons d'assistants de syntaxe et de typage fort rendent ces procédures beaucoup plus faciles à obtenir et à stocker. La combinaison d'un typage fort dans une langue et d'un outil de bon test unitaire peut donner l'assurance que même une logique très complexe est correcte.






Ce que c'est



CG / SQL est un système de génération de code pour la bibliothèque SQLite populaire qui permet aux développeurs d'écrire des procédures stockées dans une variante Transact-SQL (T-SQL) et de les compiler en code C qui utilise l'API SQLite pour effectuer des opérations C. CG / SQL permet aux ingénieurs de créer des procédures stockées complexes avec de grandes requêtes sans la révision manuelle du code requise par les méthodes existantes.



L'ensemble du système comprend également des fonctions de gestion et de mise à jour du schéma, de génération de code de test pour les procédures stockées, d'obtention de plans de requête pour les procédures et d'interaction avec les procédures stockées d'autres langages tels que Java et Objective-C. La sortie JSON permet l'analyse ou le code frontal. Le package contient une documentation complète sur le langage et le système.



Ce que fait l'outil



Le compilateur CQL fait la plupart du sale boulot. Il lit le schéma et les procédures, fournissant un langage fortement typé avec des centaines d'erreurs de compilation conçues pour éviter les problèmes d'exécution de SQLite. Le compilateur surveille attentivement les types de données variables et les types de schémas, signalant les incohérences, comme essayer d'attribuer des colonnes Nullable à des variables de sortie non Nullable, et par ailleurs s'assurer que les API SQLite sont utilisées de manière cohérente et correcte.



Le code généré vérifie toujours les codes de retour et utilise toujours les types ordinal et colonne corrects lors de la liaison ou de la lecture de données vers ou depuis SQLite. C'est exactement ce qui est difficile à obtenir et à conserver correctement. En outre, les annotations de schéma permettent au système de créer automatiquement des procédures stockées qui mettent à jour la base de données à partir de n'importe quelle version précédente du schéma vers la version actuelle. Pour rendre cela possible, des dizaines de contrôles sont effectués.



Les annotations de procédure peuvent également être utilisées pour indiquer que vous souhaitez conserver le code de test pour créer des fragments de schéma et insérer des données dans ce schéma. Cette approche vous permet de tester des procédures presque sans problème et de ne pas dépendre du système déployé. De même, ces outils peuvent créer des schémas qui valident les plans de requête au moment de la compilation.



Pourquoi est-ce nécessaire?



SQLite est largement utilisé, mais l'écriture de couches d'accès aux données bien testées et prises en charge peut être au mieux difficile. De nombreuses commandes utilisent une sorte de génération de code pour éviter d'avoir à changer des dizaines de numéros de séquence à chaque fois qu'une colonne est ajoutée, mais cette approche conduit à des erreurs. Le compilateur CQL vers CG / SQL vous permet de créer des procédures stockées complexes avec de grandes requêtes, et en utilisant des combinaisons d'assistants de syntaxe et de typage fort, ces procédures sont beaucoup plus faciles à obtenir et à stocker. La combinaison d'un typage fort dans une langue et d'un outil de bon test unitaire peut donner l'assurance que même une logique très complexe est correcte. Les assistants syntaxiques convertissent le code sécurisé en SQL canonique, de sorte que les ingénieurs écrivent moins de code, mais le code est plus correct et il s'exécute partout.Regardons un exemple:



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


Ce code crée une procédure d'insertion dans n'importe quelle table (le voici your_table), dont les arguments sont exactement les colonnes de la table. Vous n'oublierez pas les colonnes, vous ne placerez pas des dizaines d'arguments dans le mauvais ordre. Les constructions sont concises et robustes, ce qui permet aux ingénieurs de générer plus facilement du code sans avoir à vérifier manuellement chaque élément.



CG / SQL sur Github



CG / SQL est certes une chose utile, mais le code promo HABR n'en est pas moins utile, il vous donnera 10% supplémentaires à la remise indiquée sur le bandeau.



image








Articles recommandés






All Articles