В Школе программного обеспечения и дизайна Тьюринга (бэкэнд) мы все изучали веб-фреймворк под названием rails для создания небольших приложений. Неотъемлемой частью построения этих фреймворков является использование принципа проектирования контроллера представления модели (MVC). Модель, это программа, которая взаимодействует с базой данных, сохраняя информацию или читая информацию. Представление, это информация, которую мы отображаем в браузере. Последняя часть — это контроллер, который направляет информацию, поступающую или уходящую в базу данных, или то, что отображается пользователю в представлениях. На уровне модели этого проекта мы использовали ORM под названием ActiveRecord.

ORM (объектно-реляционный преобразователь) — это библиотека, которая позволяет нам запрашивать базу данных без необходимости писать необработанный SQL. Вместо этого мы можем использовать, в случае активной записи, команды, написанные на ruby. Обычно это более эффективно, чем написание длинных SQL-запросов, и позволяет нам, как разработчикам, сосредоточить свою энергию на написании логики нашего приложения.

Основным ORM для ruby ​​является ActiveRecord. Это ORM по умолчанию для рельсов, и он очень популярен. Многие люди знают, как его использовать, а это значит, что есть куча документации и множество людей, пытающихся его улучшить. Его популярность связана с тем, что он удобен для пользователя и с ним очень легко начать работу. Он создает объекты с каждой строкой таблицы базы данных, с которыми мы можем создавать ассоциации и отношения. Все это можно сделать с минимальным кодированием. Однако у ActiveRecord есть несколько недостатков. Он нарушает SRP, поскольку атрибуты объявлены в схеме программы и на уровне модели. Также сложно масштабировать исключительно с помощью запросов ActiveRecord. В конце концов вам придется использовать более тонкий SQL для поддержания производительности в большем масштабе.

Другой ORM называется DataMapper. Теперь, когда ActiveRecord пытается установить бесшовное соединение между вашим приложением и вашей базой данных, DataMapper — это скорее уровень, который разделяет их. Это обеспечивает большую гибкость с ресурсами в приложении и ресурсами в базе данных. Приложение легче изменить, чтобы оно соответствовало базе данных, если возникают изменения. Недостатком использования DataMapper является то, что его гораздо сложнее настроить, чем ActiveRecord, и он не так удобен для пользователя, а также намного меньше документации для DataMapper.

Последняя ORM в моем списке называется Sequel. Он основан на шаблоне Active Record и ведет себя так же, как ActiveRecord, в частности, не требует написания длинных SQL-запросов. Одна вещь, которая отличает сиквел от активной записи, заключается в том, что она может использовать любую базу данных SQL. Одна проблема с продолжением заключается в том, что оно не интегрируется автоматически с приложением rails.

Есть еще много ORM, которые вы можете использовать в ruby, у каждого из них есть свои плюсы и минусы. Определенно кажется, что нам, как разработчикам, надлежит знакомиться как с ActiveRecord, так и с DataMapper. Это также поможет иметь четкое представление о SQL, чтобы обойти любые ограничения производительности ORM.