Обсуждение статьи "Упрощение работы с базами данных в MQL5 (Часть 2): Создание сущностей с помощью метапрограммирования"

 

Опубликована статья Упрощение работы с базами данных в MQL5 (Часть 2): Создание сущностей с помощью метапрограммирования:

Мы изучили расширенное использование #define для метапрограммирования в MQL5, создания сущностей, представляющих таблицы и метаданные столбцов (тип, первичный ключ, автоинкремент, возможность обнуления и т.д.). Мы централизовали эти определения в TickORM.mqh, автоматизировав генерацию классов метаданных и проложив путь для эффективной работы с данными в ORM без необходимости писать SQL вручную.

В предыдущей статье мы сделали первые шаги к пониманию того, как MQL5 обрабатывает базы данных: мы создавали таблицы, вставляли, обновляли и удаляли записи и даже изучали возможности транзакций, импорта и экспорта данных. Все это было сделано напрямую, путем написания чистого SQL и вызова нативных функций, предлагаемых языком. Этот шаг был решающим, поскольку он заложил фундамент, на котором будет построен любой уровень абстракции. Но теперь возникает неизбежный вопрос: действительно ли мы хотим писать SQL каждый раз, когда нужно работать с данными в наших роботах и индикаторах?

Если мы рассматриваем более надежную систему, то ответ будет отрицательным. Работа исключительно с SQL делает код многословным, повторяющимся и подверженным ошибкам, особенно по мере того, как приложение растет и начинает обрабатывать множество таблиц, связей и проверок. Вот тут-то и появляется ORM (Object-Relational Mapping, объектно-реляционное отображение): способ преодолеть разрыв между объектно-ориентированным миром, в котором мы программируем, и реляционным миром, в котором существуют данные. Первым шагом в этом направлении является создание способа представления таблиц базы данных непосредственно в виде классов в MQL5.

В этой второй статье мы узнаем, как использовать часто недооцениваемую, но чрезвычайно мощную языковую функцию: #define. Это позволит нам автоматизировать и стандартизировать создание структур, избегая дублирования и упрощая дальнейшее расширение. С его помощью мы создадим наши первые сущности (классы, представляющие таблицы), а также механизм для описания метаданных столбцов, таких как тип данных, первичный ключ, автоинкремент, обязательные поля и значения по умолчанию.

Этот подход станет основой для всего последующего: репозиториев, построителей запросов и автоматического создания таблиц. Другими словами, мы начинаем формировать ORM на MQL5, который мы задумывали с самого начала.


Автор: joaopedrodev