Рефакторинг баз данных. Для начала… Избегайте сверхспециализации (overspecialization) Разработчик приложенияРазработчик базы данных Разработчик Коммуникация.

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



Advertisements
Похожие презентации
Автоматизированное тестирование. Процесс верификации программного обеспечения, при котором основные функции и шаги теста, такие как запуск, инициализация,
Advertisements

6.5. Создание реляционной БД в среде СУБД ACCESS Общие сведения Реляционные отношения в СУБД ACCESS представлены в двух формах: в виде таблиц и в виде.
EXtreme Programming XP Тема 2. XP Заказчики определяют: объем работ; приоритеты; композиции версий; сроки выпуска версий. Разработчики определяют: оценку.
Непрерывная интеграция Андрей Дзыня. Lohika Systems Kyiv.
Технология модели «клиент-сервер». Роли Компьютер, управляющий тем или иным ресурсом, принято называть сервером этого ресурса Компьютер, желающий воспользоваться.
Миграция системы Ва-Банк ST с СУБД Oracle 8i на СУБД Oracle 10g Release 2 ХI Конференция пользователей АБС Ва-Банк, 10 ноября 2006 г., Москва.
Формальные спецификации программ. А.К.Петренко МГУ ВМиК, ИПМ РАН, ИСП РАН.
Смена web-платформы «на лету» Евгения Фирсова. Постановка задачи.
Разработка системы автоматизации проектирования flip-chip корпуса Кибардин Владимир Владимирович.
На основании курса Тестирования программных продуктов Терехов А. А. Слайд 1 Анализ стандартных методов тестирования. Применимость к разработке игр. Шишенин.
Нагрузочное тестирование Применение при разработке высоконагруженных веб- проектов Михаил Токовинин, генеральный директор компании QSOFT +7 (495)
Обязательные практики Agile и правило 3-х П. Павел Габриель agile-практик, программист, руководитель ООО Смарт системз.
EXtreme Programming XP Тема 4. XP Тест – это процедура, которая позволяет либо подтвердить, либо опровергнуть работоспособность кода. Тесты должны быть.
БД (администрирование) 1 Базы данных (администрирование) Аблов Игорь Васильевич Кафедра информационных технологий.
Общие принципы и подходы к разработке ПО. Модели разработки ПО Водопадная Каскадная модель Спиральная Экстремальное программирование UI Prototyping Инкрементальная.
Быстрая разработка кадастровых приложений муниципального уровня с использованием системы «ИнМета» Вячеслав Томилин ООО НВЦ «Интеграционные технологии»
Автоматизированное тестирование веб-приложений Вадим Кадученко.
4 Философия качества на следующих базовых постулатах: 1.Мы не можем снизить расходы без воздействия на качество; 2.Мы можем повысить качество, не увеличивая.
Связи между таблицами являются необходимым элементом структуры БД. Для того, чтобы связь была возможна, таблицы должны иметь общие поля. Чаще всего в одной.
Безопасность в разработке ПО. Модель угроз Для построения модели нарушителя необходимо обратиться к существующим практикам.
Транксрипт:

Рефакторинг баз данных

Для начала… Избегайте сверхспециализации (overspecialization) Разработчик приложенияРазработчик базы данных Разработчик Коммуникация Сотрудничество Обмен опытом Барьер

Определение Рефакторинг базы данных - изменение схемы базы данных, улучшающее ее дизайн, но не влияющее на ее поведенческую и информационную семантику Содержит как структурные, так и функциональные аспекты

Что рефакторить в БД? БД содержит: Данные (хранимые в соответствие со схемой) Хранимый код Хранимый код ничем не отличается от любого другого кода (его необходимо тестировать) Схема данных (таблицы, индексы и т.д.) Наличие данных усложняет рефакторинг схемы!

Зачем рефакторить? Исправление БД, доставшейся «в наследство» Обеспечивать эволюционное развитие Предотвратить избыточный дизайн (over-design)

Запахи плохого кода в БД Для хранимого кода применимы все рассмотренные запахи кода, включая: Процедуры-монстры Лапша-код (спагетти-код) Дублирование кода Перенасыщение условными операторами и т.д. Запахи, характерные для БД: Таблица/столбец широкого назначения Избыточные данные (повторяющиеся в нескольких таблицах) Таблица с огромным количеством столбцов/строк «Умные» столбцы (с кодом xml) Недостаток ограничений (отсутствие валидации) Страх внесения изменений в схему данных или процедуру

Страх внесения изменений Самый «вонючий запах» Препятствует развитию Снижает эффективность Наводит еще больший беспорядок Со временем становится только хуже

Как правильно действовать? Создать свою песочницу (sandbox) разработки Перенести изменения в песочницу интеграции Внедрить в производство (production)

Песочницы Частые развертыванияКонтролируемые развертывания Сильно контролируемые развертывания

Лучший случай (наипростейший)

Худший случай (сложнейший)

Тривиальные вещи Возможно ли переименовать столбец в БД без изменения сотни приложений? Если мы не можем сделать даже такую тривиальность, как мы можем сделать что-то поистине серьезное?

Модульные тесты в БД Слишком сложно? Нет хорошего средства тестирования (framework)?

Запуск модульных тестов Анонимный PL/SQL код Нет необходимости изменять БД Вызов raise_application_error с конкретным сообщением в случае возникновения ошибки Откат (rollback) по завершению теста Запуск при помощи любого SQL средства или ant-скриптов

Пример теста

Логи изменений (changelog) Необходимо отслеживание изменений Написание дельта-скриптов (миграций) В начале переходного периода В конце переходного периода Одинаковые скрипты для Обновления песочниц Развертывания на производстве

Простой скрипт

Версионирование

Работа в команде Разработчики Тесная кооперация с администраторами БД Навыки работы с БД Администраторы БД и проектировщики БД Должны быть вовлечены в процесс разработки приложения Навыки разработки приложений

Средства тестирования Дельта-скрипты Dbdeploy, liquibase, deltasql Легко писать самостоятельно PL/SQL код и