Sehr bald, am 4. und 5. November, werden wir neue Streams von SQL- Kursen für die Datenanalyse starten. Ein C ++ - Entwickler hat diese Übersetzung aus dem Facebook Engineering-Blog mit einem Überblick über ein nützliches Tool vorbereitet.
SQLite ist weit verbreitet, aber das Schreiben gut getesteter und unterstützter Datenzugriffsschichten kann bestenfalls eine Herausforderung sein. Viele Befehle verwenden eine Art Codegenerierung, um zu vermeiden, dass jedes Mal, wenn eine Spalte hinzugefügt wird, Dutzende von Sequenznummern geändert werden müssen. Dieser Ansatz führt jedoch zu Fehlern. Mit dem CQL-zu-CG / SQL-Compiler können Sie komplexe gespeicherte Prozeduren mit großen Abfragen erstellen. Mithilfe von Kombinationen aus Syntaxhilfen und starker Typisierung sind diese Prozeduren viel einfacher abzurufen und zu speichern. Die Kombination aus starker Typisierung in einer Sprache und einem Werkzeug für gute Unit-Tests kann das Vertrauen geben, dass selbst sehr komplexe Logik korrekt ist.
Was ist das
CG / SQL ist ein Codegenerierungssystem für die beliebte SQLite- Bibliothek , mit dem Entwickler gespeicherte Prozeduren in eine Transact-SQL-Variante (T-SQL) schreiben und zu C-Code kompilieren können, der die SQLite-API zum Ausführen von C-Operationen verwendet. Mit CG / SQL können Ingenieure komplexe gespeicherte Prozeduren mit großen Abfragen erstellen, ohne die für vorhandene Methoden erforderliche manuelle Codeüberprüfung durchführen zu müssen.
Das gesamte System enthält außerdem Funktionen zum Verwalten und Aktualisieren des Schemas, zum Generieren von Testcode für gespeicherte Prozeduren, zum Abrufen von Abfrageplänen für Prozeduren und zum Interagieren mit gespeicherten Prozeduren aus anderen Sprachen wie Java und Objective-C. Die JSON-Ausgabe ermöglicht das Parsen oder Front-End-Code. Das Paket enthält eine umfangreiche Sprach- und Systemdokumentation.
Was das Tool macht
Der CQL-Compiler erledigt den größten Teil der Drecksarbeit. Es liest Schemas und Prozeduren und bietet eine stark typisierte Sprache mit Hunderten von Kompilierungsfehlern, um SQLite-Laufzeitprobleme zu vermeiden. Der Compiler überwacht variable Datentypen und Schematypen sorgfältig und meldet Inkonsistenzen, z. B. den Versuch, nicht nullbaren Ausgabevariablen nullfähige Spalten zuzuweisen, und stellt ansonsten sicher, dass die SQLite-APIs konsistent und korrekt verwendet werden.
Der generierte Code sucht immer nach Rückkehrcodes und verwendet beim Binden oder Lesen von Daten an oder von SQLite immer die richtigen Sequenznummern und Spaltentypen. Genau das ist schwer zu bekommen und richtig zu halten. Darüber hinaus können das System mithilfe von Schemaanmerkungen automatisch gespeicherte Prozeduren erstellen, mit denen die Datenbank von einer früheren Version des Schemas auf die aktuelle Version aktualisiert wird. Um dies zu ermöglichen, werden Dutzende von Überprüfungen durchgeführt.
Prozeduranmerkungen können auch verwendet werden, um anzugeben, dass Sie Testcode zum Erstellen von Schemafragmenten und zum Einfügen von Daten in dieses Schema beibehalten möchten. Mit diesem Ansatz können Sie Verfahren nahezu unkompliziert testen und sind auch nicht vom bereitgestellten System abhängig. In ähnlicher Weise können diese Tools Schemas erstellen, die Abfragepläne zur Kompilierungszeit validieren.
Warum wird das benötigt?
SQLite ist weit verbreitet, aber das Schreiben gut getesteter und unterstützter Datenzugriffsschichten kann bestenfalls eine Herausforderung sein. Viele Befehle verwenden eine Art Codegenerierung, um zu vermeiden, dass jedes Mal, wenn eine Spalte hinzugefügt wird, Dutzende von Sequenznummern geändert werden müssen. Dieser Ansatz führt jedoch zu Fehlern. Mit dem CQL-zu-CG / SQL-Compiler können Sie komplexe gespeicherte Prozeduren mit großen Abfragen erstellen. Kombinationen aus syntaktischen Hilfsprogrammen und starker Typisierung erleichtern das Abrufen und Speichern dieser Prozeduren erheblich. Die Kombination aus starker Typisierung in einer Sprache und einem Werkzeug für gute Unit-Tests kann das Vertrauen geben, dass selbst sehr komplexe Logik korrekt ist. Syntaktische Helfer konvertieren sicheren Code in kanonisches SQL, sodass Ingenieure weniger Code schreiben, der Code jedoch korrekter ist und überall ausgeführt wird.Schauen wir uns ein Beispiel an:
create procedure insert_a_row(like your_table)
begin
insert into your_table from arguments;
end;
Dieser Code erstellt eine Prozedur zum Einfügen in eine beliebige Tabelle (hier ist sie
your_table
), deren Argumente genau die Spalten der Tabelle sind. Sie werden die Spalten nicht vergessen, Sie werden nicht Dutzende von Argumenten in die falsche Reihenfolge bringen. Die Konstrukte sind präzise und robust, was es Ingenieuren erleichtert, Code zu generieren, ohne jedes Bit manuell überprüfen zu müssen.
CG / SQL auf Github
CG / SQL ist sicherlich eine nützliche Sache, aber der HABR- Rabatt-Promo-Code ist nicht weniger nützlich. Er gibt Ihnen zusätzliche 10% zu dem auf dem Banner angegebenen Rabatt.
- SQL für die Datenanalyse
- C ++ - Entwickler
- Kurs für maschinelles Lernen
- Data Science Berufsausbildung
- Data Analyst-Schulung
- Data Analytics Online Bootcamp
- Python für Webentwicklungskurs
Weitere Kurse