Skip to content
Viacheslav Naydenov edited this page Jul 17, 2014 · 2 revisions

О ПРОЕКТЕ

Инструмент YB.ORM разрабатывается чтобы упростить для программистов C++ создание приложений, оперирующих с реляционными базами данных. Объектно- реляционный маппер (Object-Relational Mapper, ORM) отображает таблицы базы данных в классы, а записи из таблиц - в объекты определенного языка программирования. Этот подход применим не во всех приложениях баз данных, но он хорошо зарекомендовал себя там, где требуется сложная логика и работа с транзакциями. Цели проекта YB.ORM: предоставить удобный объектно-реляционный маппер для программиста C++, сохранить высокую производительность языка C++, обеспечить максимальную переносимость кода между различными платформами, и обеспечить поддержку основных реляционных СУБД.

Типичный сценарий использования таков:

  • Опишите схему базы данных, т.е. таблицы и их колонки, а также связи между таблицами в простом XML формате.

  • Используя инструмент для генерации кода, создайте доменные классы C++ для таблиц (см. Tutorial1).

  • Добавьте в классы бизнес-логику приложения.

  • При изменении существующей схемы можно использовать тот же инструмент для генерации кода чтобы синхронизировать ранее созданные доменные классы со схемой.

  • Можно сформировать SQL скрипт чтобы наполнить пустую схему БД таблицами.

  • Теперь вы можете использовать доменные классы в связке с объектом Session чтобы:

    • создавать новые и удалять существующие объекты;

    • запрашивать объекты из базы данных с помощью объектного языка запросов (см. Tutorial3);

    • изменять существующие объекты, используя присваивание полям;

    • связывать и объекты друг с другом и разрывать связи, используя отношения (см. Tutorial2);

    • сериализовать объекты в виде XML и JSON.

Этот инструмент применяет многие идеи, изложенные в книге Мартина Фоулера "Шаблоны корпоративных приложений". Используются такие шаблоны проектирования как "Ленивая Загрузка" ("Lazy Load"), "Карта присутствия" ("Identity Map"), "Единица Работы" ("Unit of Work") и другие. На проект оказали влияние такие мощные ORM-системы как Hibernate для Java и особенно SQLAlchemy для Python. Некоторые детали внутреннего устройства тут: Internals.

ТЕКУЩИЙ СТАТУС

На данный момент, инструмент YB.ORM работает в средах Linux, Mac OS X и Windows. Сборка проверялась компиляторами GCC, CLang, MinGW, MSVC 2013/2010/2008, см. Инструкции по сборке.

Вы можете собрать YB.ORM с вашим любимым тулкитом: Boost, Qt, или wxWidgets; при этом будут использоваться "родные" типы данных, такие как строки, дата и время, поддержка много-поточности, работа с XML и пр.

Тестировалась работа со следующими реляционными СУБД: MySQL, Oracle, SQLite, Firebird, Postgres. Для подключения к БД есть несколько вариантов:

  • драйверы ODBC

  • популярная библиотека C++ для баз данных SOCI

  • набор драйверов в составе Qt: QtSql

  • для SQLite доступен "родной" драйвер

Библиотека предоставляет возможность использовать пул подключений к БД. Подробности по этой ссылке: Подключение к БД.

Основная функциональность YB.ORM была протестирована на нескольких небольших проектах, и работает стабильно. Имейте в виду, что данный инструмент находится в разработке, API библиотеки может меняться между релизами. Некоторые интересные возможности пока находятся в планах (см. Планы на будущее).

ОБ АВТОРАХ

Проект зародился в конце 2006 года как часть биллинговой системы для онлайновой рекламы в компании Яндекс (http://www.yandex.ru/), в первоначальной разработке участвовали Найденов Вячеслав (я) и Чмелев Сергей. Аббревиатура "YB" означала Yandex.Balance, название биллинговой системы. Сейчас проект YB.ORM не связан напрямую с компанией Яндекс. Исходный код был опубликован под открытой лицензией в начале 2011 года, с тех пор он был существенно переработан. Спасибо автору проекта tiny odbc wrapper, на основе его кода был построен первый пригодный к использованию SQL драйвер (класс OdbcDriver). Также, я хотел бы отметить вклад нескольких студентов Московского Государственного Открытого Университета (МГОУ), где я иcпользовал этот программный код, как наглядный пример. Список авторов:

  • Вячеслав Найденов, vaclav at yandex dot ru - основной разработчик

  • Сергей Чмелев, halty at yandex dash team dot ru - разработчик на ранней стадии

  • SqUe, squarious at gmail dot com - код tiodbc

  • Никита Буйвич, buyvich at gmail dot com - МГОУ

  • Вячеслав Фёдоров, funny dash story at yandex dot ru - МГОУ

  • Андрей Скобенков, andrey dot skobenkov at gmail dot com - МГОУ

Любая конструктивная критика, исправления и комментарии приветствуются!

Clone this wiki locally