Diskussion zum Artikel "Vereinfachen von Datenbanken in MQL5 (Teil 2): Verwendung von Metaprogrammierung zur Erstellung von Entitäten"

 

Neuer Artikel Vereinfachen von Datenbanken in MQL5 (Teil 2): Verwendung von Metaprogrammierung zur Erstellung von Entitäten :

Wir haben die fortgeschrittene Verwendung von #define für die Metaprogrammierung in MQL5 erforscht, indem wir Entitäten erstellt haben, die Tabellen und Spaltenmetadaten (Typ, Primärschlüssel, Autoinkrement, Nullbarkeit usw.) darstellen. Wir haben diese Definitionen in TickORM.mqh zentralisiert, wodurch die Generierung von Metadatenklassen automatisiert und der Weg für eine effiziente Datenmanipulation durch den ORM geebnet wird, ohne dass SQL manuell geschrieben werden muss.

Im vorigen Artikel haben wir die ersten Schritte unternommen, um zu verstehen, wie MQL5 mit Datenbanken umgeht: Wir haben Tabellen erstellt, Datensätze eingefügt, aktualisiert und gelöscht und sogar Transaktionsfunktionen, Datenimport und -export erkundet. All dies wurde direkt durchgeführt, indem rohes SQL geschrieben und die von der Sprache angebotenen nativen Funktionen aufgerufen wurden. Dieser Schritt war von entscheidender Bedeutung, da er das Fundament legte, auf dem jede Abstraktionsschicht aufgebaut wird. Nun stellt sich aber unweigerlich die Frage, ob wir jedes Mal SQL schreiben wollen, wenn wir Daten in unseren Robotern und Indikatoren verarbeiten müssen.

Wenn wir ein robusteres System in Betracht ziehen, lautet die Antwort nein. Die ausschließliche Verwendung von SQL macht den Code langatmig, repetitiv und fehleranfällig, insbesondere wenn die Anwendung wächst und beginnt, mehrere Tabellen, Beziehungen und Validierungen zu verarbeiten. An dieser Stelle kommt ein ORM (Object-Relational Mapping) ins Spiel: eine Möglichkeit, die Kluft zwischen der objektorientierten Welt, in der wir programmieren, und der relationalen Welt, in der die Daten leben, zu überbrücken. Der erste Schritt in diese Richtung besteht darin, eine Möglichkeit zu schaffen, Datenbanktabellen direkt als Klassen in MQL5 darzustellen.

In diesem zweiten Artikel lernen wir, wie man eine oft unterschätzte, aber extrem leistungsfähige Sprachfunktion verwendet: #define. Es wird uns ermöglichen, die Erstellung von Strukturen zu automatisieren und zu standardisieren, wodurch Doppelarbeit vermieden und künftige Erweiterungen erleichtert werden. Damit erstellen wir unsere ersten Entitäten (Klassen, die Tabellen darstellen) und auch einen Mechanismus zur Beschreibung von Spaltenmetadaten, wie z. B. Datentyp, Primärschlüssel, automatische Inkrementierung, erforderliche Felder und Standardwerte.

Dieser Ansatz bildet die Grundlage für alles, was folgt: Repositories, Query Builders und automatische Tabellenerstellung. Mit anderen Worten: Wir beginnen, das MQL5 ORM zu gestalten, das wir uns von Anfang an vorgestellt haben.


Autor: joaopedrodev