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

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

  • Upload
    roden

  • View
    65

  • Download
    0

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

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

Для начала…•Избегайте сверхспециализации

(overspecialization)

Разработчик приложения Разработчик базы данных

Разработчик Разработчик

КоммуникацияСотрудничествоОбмен опытом

Барьер

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

Определение•Рефакторинг базы данных - изменение

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

•Содержит как структурные, так и функциональные аспекты

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

Что рефакторить в БД?БД содержит:

• Данные (хранимые в соответствие со схемой)• Хранимый код

Хранимый код ничем не отличается от любого другого кода (его необходимо тестировать)

Схема данных (таблицы, индексы и т.д.)Наличие данных усложняет рефакторинг схемы!

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

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

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

Запахи плохого кода в БДДля хранимого кода применимы все рассмотренные запахи кода, включая:

• Процедуры-монстры• Лапша-код (спагетти-код)• Дублирование кода• Перенасыщение условными операторами• и т.д.

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

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

Страх внесения изменений

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

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

Как правильно действовать?•Создать свою песочницу (sandbox)

разработки•Перенести изменения в песочницу

интеграции•Внедрить в производство (production)

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

Песочницы

Частые развертывания Контролируемые развертывания

Сильно контролируемые развертывания

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

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

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

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

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

Тривиальные вещи•Возможно ли переименовать столбец в

БД без изменения сотни приложений?•Если мы не можем сделать даже такую

тривиальность, как мы можем сделать что-то поистине серьезное?

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

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

(framework)?

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

Запуск модульных тестов•Анонимный PL/SQL код•Нет необходимости изменять БД•Вызов raise_application_error с

конкретным сообщением в случае возникновения ошибки

•Откат (rollback) по завершению теста•Запуск при помощи любого SQL

средства или ant-скриптов

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

Пример теста

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

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

▫В начале переходного периода▫В конце переходного периода

•Одинаковые скрипты для▫Обновления песочниц▫Развертывания на производстве

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

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

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

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

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

Работа в команде•Разработчики

▫Тесная кооперация с администраторами БД

▫Навыки работы с БД•Администраторы БД и проектировщики

БД▫Должны быть вовлечены в процесс

разработки приложения▫Навыки разработки приложений

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

Средства тестирования•Дельта-скрипты

▫Dbdeploy, liquibase, deltasql▫Легко писать самостоятельно

•PL/SQL код и