Доклад «ORM: благо или зло?» Автор Горшков Сергей Вадимович
Что такое ORM? ORM (Object-relational mapping) - технология программирования, которая связывает базы данных с концепциями объектно- ориентированных языков программирования. Автор Горшков Сергей Вадимович доклад «ORM: зло или благо?»
Что такое ORM? Автор Горшков Сергей Вадимович доклад «ORM: благо или зло?» Нет ORMЕсть ORM Приложение База данных Приложение База данных ORM
Что такое ORM? Автор Горшков Сергей Вадимович доклад «ORM: зло или благо?» Нет ORM Есть ORM INSERT INTO clients SET name=Альфа; $client = new Client (); $client->setName (Альфа); $client->persist (); $client = new Client (); $client->name = Альфа; $client->Save ();
Сократить семантический провал между объектной и реляционной формой хранения данных. Повысить скорость и снизить трудоемкость работы программиста (требуется меньше кода, который проще отлаживать). Код, использующий ORM, меньше подвержен ошибкам. Зачем нужны ORM? Автор Горшков Сергей Вадимович доклад «ORM: благо или зло?»
Для тестов будем использовать Doctrine 2 (из Symfony) Автор Горшков Сергей Вадимович Одна из наиболее современных и мощных ORM, доступных для связки PHP / MySQL. Содержит класс QueryBuilder, позволяющий конструировать запросы. Также реализует собственный диалект SQL под названием DQL, в котором вместо таблиц и полей используются объекты и их свойства. доклад «ORM: зло или благо?»
Семантический провал Автор Горшков Сергей Вадимович доклад «ORM: благо или зло?» Мир объектов Мир реляционной базы данных TABLE Clientclass Client $client = new Client (); $client->setName (Альфа); $client->persist ();
Не всегда можно однозначно сопоставить класс и объект БД (например, в случае таблиц-связок нет нужды плодить отдельный объект для каждой связи). Возражения? Автор Горшков Сергей Вадимович доклад «ORM: зло или благо?» Не представляя себе реальной структуры БД, программисту будет крайне сложно работать с базой рационально, и оптимизировать скорость работы. Абстрагируясь от базы, мы практически исключаем возможность использования ее «продвинутых» средств, таких как хранимые процедуры, представления, триггеры.
Снизить трудозатраты программиста Автор Горшков Сергей Вадимович доклад «ORM: благо или зло?» $client = new Client (); $client->setName (Альфа); $client->persist (); $s=INSERT INTO clients SET name=Альфа; mysql_query ($s, $connid);
Возражения? Автор Горшков Сергей Вадимович доклад «ORM: зло или благо?»
Возражения? Автор Горшков Сергей Вадимович доклад «ORM: благо или зло?» Ускорение работы программиста обычно приводит к замедлению работы продукта, что в конечном счете, с точки зрения экономики, окажется гораздо менее рационально. Все случаи обращения к БД в сколько-нибудь сложном проекте все равно не охватываются стандартными возможностями ORM. В таких случаях применяются «костыли», которые, в конечном счете, замедляют работу программиста.
Снизить число ошибок Автор Горшков Сергей Вадимович доклад «ORM: зло или благо?»
Скорость: тестовый случай Автор Горшков Сергей Вадимович доклад «ORM: благо или зло?» ПродажиКлиентыТовары Продажи – Товары Задача – построить таблицу вида: Дата продажи Клиент Сумма Альфа 1000
Doctrine Query Builder Автор Горшков Сергей Вадимович доклад «ORM: зло или благо?»
DQL Автор Горшков Сергей Вадимович доклад «ORM: благо или зло?»
Прямой запрос из Doctrine Автор Горшков Сергей Вадимович доклад «ORM: зло или благо?»
Прямой запрос из PHP: подзапрос Автор Горшков Сергей Вадимович доклад «ORM: зло или благо?»
Прямой запрос из PHP: JOIN Автор Горшков Сергей Вадимович доклад «ORM: благо или зло?»
Кэширование суммы в sales Автор Горшков Сергей Вадимович доклад «ORM: зло или благо?»
И какие же результаты? Автор Горшков Сергей Вадимович доклад «ORM: благо или зло?» Способ извлечения Время, сек. Doctrine Query Builder 9.14 DQL 7.35 Прямой запрос из Doctrine *
И какие же результаты? Автор Горшков Сергей Вадимович доклад «ORM: благо или зло?» Способ извлечения Время, сек. Запрос с подзапросами из PHP 2.18 Запрос из PHP с JOIN 0.02 Вариант с кэшированием суммы в sales 0.01
И все-таки, ORM в index.art есть! Автор Горшков Сергей Вадимович доклад «ORM: зло или благо?»
Пожалуйста, вопросы! Автор Горшков Сергей Вадимович доклад «ORM: благо или зло?»