Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MMS или как просто работать с моделями данных

Dd3f18c87b851137000c7427d7bd5d32?s=47 fwdays
November 24, 2012

MMS или как просто работать с моделями данных

— Задача управления и отображения связанных структур данных в приложении
* Языки описания структур данных, аналогия со связи в ООП
— Требования к системе управления данными: от идеального к реализации
— Примеры реализации подобной задачи на РНР (Yii, Symfony2+Doctrine2)
— Компонента управления, пример решения на базе Zend Framework
* Структура (Controls, Select, Storage, Entity, Model)
* Инструменты, из Zend Framework, которые использовались
* Проблемы реализации и пути решения
* Операции над моделями, с использованием бизнес логики приложения

Dd3f18c87b851137000c7427d7bd5d32?s=128

fwdays

November 24, 2012
Tweet

More Decks by fwdays

Other Decks in Programming

Transcript

  1. MMS или как просто работать с моделями данных Кутузов Иван

    INTERKASSA ivan@interkassa.com ik_ivan
  2. Как сделать жизнь лучше? Создавать необходимые сервисы

  3. Как сделать жизнь лучше? Радость создания нового сервиса

  4. Как сделать жизнь лучше? Угнетение от написания админки ведь требования

    однотипны
  5. Что нам нужно? • Готовое решение для создания админки •

    Универсальность и гибкость • Полный контроль над происходящим 5 min
  6. Что может помочь? Code Generation и Scaffolding в Zend Framework

    2 (Виктор Фараздаги) – Yii (CRUD, console tool, gii) – Symfony2
  7. Yii (CRUD, console tool, gii) 1 3 4 1.Filter 2.Form

    3.DataGrid 4.Paginator
  8. Резюме по Yii (+) Решение из коробки – Гибкая настройка

    шаблонов генерации – Простота использользования (+) Предоставляет базовый набор операций – CRUD (-) Использует схему данных MySQL
  9. Symfony2 1 2 3 4 1

  10. И все же мир не так совершенен (+) Предоставление базового

    набора операций: CRUD (+) Гибкая настройка шаблонов (-) Использует схему данных MySQL Определели базовые элементы интерфейса 10 min
  11. Чего не хватает? • Компонента для Zend Framework • Работа

    с NoSQL (any other DB) • Интеграция с бизнес логикой приложения • Права доступа • Кастомизация интерфейса
  12. Model Management System (MMS) • Быстрое создание админок • Легкое

    описание схем моделей • Автогенерация отображения • Гибкая выборка • Расширение новыми компонентами
  13. Идеальное решение?

  14. Модели данных и их схемы • Перегруженность интерфейса • Параллельная

    работа моделей и схем • Разделение описания • Взаимное использование 15 min
  15. Ближе к делу! Структура приложения в разрезе моделей

  16. Переходим к описанию схемы Для каждой модели содаем схему (Storage

    + Entity)
  17. Схема модели данных Описание моделей приложения (метаданные) – Scaffolding –

    Статическое (Array, JSON, XML, YAML, PHPDoc...) Предоставляет общий интерфейс работы с моделями
  18. Метаданные Связывают данные с: • моделью • бизнес логикой •

    интерфейсом Описывают: • типы полей • обработку данных • связи данных
  19. Составляющие Компоненты User interface Filter и Paginator • Управление выборкой

    DataGrid и Form • Отображение данных • CRUD • Выполнение операций System Manager • Связь компонент Storage • Работа с данными Select • Условия выборки 20 min
  20. System. Manager • Предоставляет инструменты создания админки • Обрабатывает внешние

    запросы • Обеспечивает взаимодействие составляющих • Проксирует выполнение операций • Подготавливает данные
  21. System. Storage • Работа с метаданными • Выполнение операций •

    Фильтрация данных • Преобразование данных • Формирование объекта выборки
  22. System. Select • Содержит параметры выборки • Обеспечивает единый интерфейс

    для разных DB
  23. User interface • Элементы управления выборкой • Отображениие данных •

    Операции над данными • Связи данных • Формируется на основе метаданных
  24. Filter и Paginator Элементы управления выборкой Filter • Значения полей

    • Операторы сравнения Paginator • диапазон 25 min
  25. Form и DataGrid Элементы работы с данными Form • Создание

    данных • Редактирование DataGrid • Отображение • Операции над набором данных, например, через Gearman
  26. Реализация • Простота • Минимализм • Расширяемость

  27. Решение Ik_I18n::getI18nValue Zend_Registry::get('clientLangs'); Ik_Db, Ik_Mongo Ik_Db_Table, Ik_Mongo_Collection https://github.com/arbrix/mms

  28. Структура компоненты

  29. Mms Sequence UML Diagram 30 min

  30. Недостатки, а они есть? Конечно! • Использовать связи моделей при

    выборке • Трудоемкий процесс написания схемы данных
  31. Что можно посоветовать? • Дополнять готовые решения • Системные команды,

    мониторинг Gearman • Статистика • Компонента фильтрации данных
  32. Полезные ссылки https://kippt.com/arbrix/zendconf2012-mms https://github.com/arbrix/mms

  33. Благодарю за внимание, вопросы? ivan@interkassa.com ik_ivan