Перевод статьи Тима Абеля «5 ways to make your database better».
1. Документация
Можете забросать меня тапками, но стоимость поддержки программного обеспечения гораздо дороже, чем его создание, особенно с применением реляционных баз данных.
Если вас наняли как профессионала, то вы должны сделать так, чтобы персонал вашего клиента в дальнейшем смог работать с созданной вами базой как можно более эффективно. Вы приложили много сил, чтобы определиться, что в этом месте нужен этот столбец, и что называться он должен именно так, как вы его назвали. Так поделитесь этими знаниями до того, как перейдете на другой жирный проект!
- Redgate SqlDoc отлично подходит для быстрого добавления отсутствующей документации.
- SchemaSpy генерирует статические html-сайты, благодаря чему легче увидеть наличие или отсутствие документации и поделиться ею с командой.
- SQL Schema Explorer генерирует динамические html-сайты, что упрощает просмотр существующей документации и позволяет поделиться ею с командой.
2. Рефакторинг базы данных
Миграции это вещь. Пользуйтесь ими. Если можно реорганизовывать код, то почему нельзя сделать то же самое с базой данных? Хватит оставлять мины для тех, кто будет работать с этой базой в будущем, – пропущенные имена, плохую структуру и т. п.
Используйте инструменты Redgate (ReadyRoll и т. п.) или инструменты вашего ORM («Migrations» в Entity Framework или Active Record). Да, вам придется иметь дело с данными. Но если вы боитесь, что это займет много времени, знайте, что это скорее исключение, чем правило.
- Redgate’s SQL Change Automation (прежде – ReadyRoll) это инструмент для создания и запуска миграций баз данных. Он даже создает pure-sql deployment packages, дружественные к администратору базы данных (DBA). Очень впечатляет!
- SQL Source Control от Redgate поддерживает миграции.
- Я недавно использовал EF Core migrations и этот инструмент хорошо работал. Его эквиваленты есть для всех основных платформ.
3. Обеспечение целостности данных
Падает ли ваше приложение из-за плохих данных? В базах данных есть много мощных способов реализации правил, на которые полагается ваш код: nullability, внешние ключи, проверочные ограничения, ограничения уникальности. Остановите плохие данные до того, как они попадут в базу.
Если в вашей базе данных будут применяться эти правила, вашему коду не придется обрабатывать их нарушения при чтении данных, потому что нарушений не будет.
4. Интеграционное тестирование
У вас есть ORM. Отлично. У вас есть юнит-тесты. Прекрасно. Но когда доходит до дела и ваш код отсылает SQL в настоящую базу данных, поломки во время работы случаются чаще, чем вам хотелось бы. Это происходит потому, что сгенерированный SQL-код не совместим со структурой настоящей базы данных или данные представлены в каком-то непонятном виде.
Автоматизируйте создание/тестирование/уничтожение вашей базы данных и запустите полное сквозное интеграционное тестирование.
Чтобы тесты были быстрыми, я рекомендую автоматизацию со слоя ниже UI. Есть много методик, позволяющих сохранять быстроту тестов, не жертвуя при этом их достоверностью. Например, можно делать smoke-тесты сквозными, а не для отдельных кусков. Можно использовать in-memory database, снапшоты базы данных или интересный инструмент sql-clone от Redgate, с которым создание/откат будут практически моментальными.
Можете ли вы извлечь реалистичные (анонимные) данные из продакшена? Даже лучше: теперь вы сможете выловить целый новый класс багов прежде, чем они попадут в продакшен.
5. Видимость
Структуры вашей базы данных могут видеть только программисты и администраторы? Для собственников бизнеса, людей из отделов поддержки и QA это тайна за семью печатями? Вы должны гордиться своей базой данных не меньше, чем своим кодом. Поэтому пролейте свет на этот темный закуток вашего цифрового имущества, чтобы показать, что ваша база это нечто прекрасное, а не болото какое-то. Предоставив не-программистам из вашей команды права доступа, вы можете помочь им сделать их работу более продуктивной.
- HTML-код, генерируемый SchemaSpy, можно расшарить на любом веб-сервере. Это поможет всей команде увидеть структуры вашей схемы.
- SQL Schema Explorer можно запускать в вашей сети или на облачном хостинге (Schema Explorer докеризван!), чтобы предоставить вашей команде простой доступ как к схеме, так и к данным в базе.
Комбинируйте эти инструменты с системой непрерывной интеграции и вы получите легкий доступ к последним изменениям в разработке вашей базы данных.
Действуйте!
- Займитесь хоть одним из этих улучшений прямо сегодня.
- Поделитесь этой статьей со своей командой – пускай все задумаются об усовершенствованиях.
- Поделитесь этой статьей в социальных сетях и помогите распространить идею того, что наши базы данных заслуживают лучшего!
Надеюсь, это вдохновит вас на улучшение того, что лежит в основе ваших приложений.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]
Отличная статья. Из своего опыта, хочу добавитьеще одну полезную программу — DevOps Automation https://www.devart.com/dbforge/sql/database-devops/