1 / 20

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

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

roden
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

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

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

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

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

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

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

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

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

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

  15. Пример теста

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

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

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

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

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

More Related