Im Cloud Application Programming Model der SAP sollten Datenbankabfragen nicht direkt in SQL, sondern in der deklarativen Query-Sprache CQL geschrieben werden.
Der CDS-Compiler und die CAP-Datenbankadapter wandeln CQL-Abfragen automatisch in das jeweils passende SQL für verschiedene Datenbank-Systeme um. Das macht Anwendungen portabel und vereinfacht deren Wartung.
- Der CDS-Compiler zerlegt CQL-Abfragen in ein internes Modell, validiert sie und wendet nötige Transformationen an.
- DB-Backend-Implementierungen übersetzen das interne Modell in datenbankspezifisches SQL – beispielsweise @cap-js/hana für SAP HANA.
- Der CAP-Adapter übergibt die generierten SQL-Statements an den jeweiligen Datenbanktreiber.
CQL-Abfragen erinnern stark an SQL. Der Umstieg von SQL sollte daher leichtfallen. In CAP für NodeJS könnte eine CQL-Abfrage folgendermaßen aussehen:
Zur Laufzeit übersetzt CAP die Funktion seconds_between je nach Ziel-Datenbank automatisch in korrektes SQL:
- HANA: SECONDS_BETWEEN(shippedAt, createdAt)
- PostgreSQL: EXTRACT(EPOCH FROM (shippedAt - createdAt))
- SQLite: (julianday(shippedAt) - julianday(createdAt)) * 86400
Der Einsatz Datenbank - agnostischer Abfragen bietet folgende Vorteile:
- Portabilität: Wechsel der Datenbank ohne Änderung der Abfragen.
- Produktivität: Einmal schreiben, überall ausführen.
- Wartbarkeit: Keine duplizierten SQL-Varianten, zentrale Logik.
- Sicherheit: Frühzeitige Validierung durch den CDS-Compiler.
Durch das Schreiben von Abfragen in CQL/CDS sorgt SAP CAP automatisch dafür, dass Funktionen wie seconds_between in das jeweils passende SQL übersetzt werden. Das vereinfacht die Entwicklung, Wartung und Datenbankwechsel. Für spezielle Anforderungen kann in Ausnahmefällen auch datenbankspezifisches SQL in CAP genutzt werden.