Доклад «ORM: благо или зло?» Автор Горшков Сергей Вадимович.

Презентация:



Advertisements
Похожие презентации
ПЛИСКО ВЯЧЕСЛАВ. Удобная работа с базой данных в PHP.
Advertisements

БАЗА ДАННЫХ – ОСНОВА ИНФОРМАЦИОННОЙ СИСТЕМЫ ТЕХНОЛОГИЯ ИСПЛЬЗОВАНИЯ И РАЗРАБОТКА ИНФОРМАЦИОННЫХ СИСТЕМ.
Object Relational Mapping (ORM) Объектно-реляционное отображение.
Система контроля прав доступа При помощи процедур и триггеров в MySQL.
Тема 2. Концептуальное проектирование. Лекция 1. Уровни моделей и этапы проектирования.
Реализация элементов логики приложения в MySQL: триггеры, хранимые процедуры, кэширование Сергей Горшков, технический директор Центра информационных технологий.
База данных База данных – это конкретная предметная область, описанная с помощью таблиц.
Базы данных – это совокупность сведений (о реальных объектах, процессах, событиях или явлениях), относящихся к определенной теме или задаче, организованная.
НАЧАТЬ ТЕСТ по КИТ2 Разработчики: Оскерко В.С., доцент, к.э.н. Панько Н.Г., студентка ДФФ-1, 2-й курс 2011 г.
1 Лекция 6 Команды категории извлечения данных языка структурированных запросов SQL План лекции Выборка определенных столбцов таблицы Устранение избыточных.
Базы данных Основные определения и понятия. Основные понятия: База данных реляционных База данных – совокупность информа- ции, хранение которой организовано.
Основы SQL Запросы к базе данных. Что такое база данных SQL? SQL (Structured Query Language - «Структурированный язык запросов») - универсальный компьютерный.
Программа Microsoft Office Access2007 Базы данных. Работа с шаблоном
Библиотека База данных «Библиотека». В БД «Библиотека» есть таблицы: «Книги», «Авторы», «Сотрудники библиотеки», Учет выдачи книг», «Жанры»
Лекция 15 Лекция 15 Управление реляционными базами данных. Языки определения данных и языки манипулирования данными. Способы выражения запросов: процедурный.
СУБД И РЕЛЯЦИОННЫЕ БД Подготовил: Кудрявцев В.Л. МОУ СОШ 55 МОУ СОШ 55.
СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ. БАЗА ДАННЫХ – совокупность данных, организованных по определенным правилам, предусматривающим общие принципы описания,
1 Введение Информационные системы Альтернативы задачи доступа к данным Стандарт JPA и коммерческие ORM имплементации Определение ORM Проблемы полного преобразования.
База данных (БД) – основа информационных систем(ИС)
CREATE TABLE Ident_table ( ID int IDENTITY(1, 1), some_values varchar(50)); IDENTITY [ ( seed, increment ) ]
Транксрипт:

Доклад «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: благо или зло?»