avl (avl) wrote,
avl
avl

Category:

23. База данных - ваша крепость

(В оригинале Database as a Fortress)

База данных – это то место, где находятся все данные, как внесенные вашими сотрудниками, так и полученные от ваших заказчиков. Пользовательский интерфейс, бизнес-логика, логика приложения и даже ваши сотрудники могут меняться, но данные будут всегда. И поэтому нельзя переоценить важность построения целостной модели данных с самого начала.

Распространенность agile технологий разработки сделало массовой мысль о том, что проектирование в процессе разработки – это нормально или даже хорошо. В прошлом остались времена написания сложных всеобъемлющих спецификаций. Новая школа учит выпускать версии быстро и часто. Строка кода в релизе лучше десяти в вашей голове. Все это выглядит слишком хорошо, чтобы быть правдой, и в том месте, где начинаются ваши данные, именно так и есть.

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

Целостная модель данных – это то, что обеспечивает вам сохранность данных сегодня и расширяемость завтра. Обеспечение сохранности подразумевает устойчивость к ошибкам, которые, несмотря на все ваши усилия, будут возникать в часто меняющемся уровне приложения. Это означает обеспечение ссылочной целостности. А также построение доменозависимых правил и ограничений везде, где это возможно. Это означает выбор ключей, помогающих вам убедиться в ссылочной целостности и соответствии установленным правилам. Быть готовым к расширению завтра означает правильным образом нормализовать данные, чтобы потом легко надстраивать уровни над моделью данных. Это означает не искать коротких путей.

База данных должна быть последним привратником, охраняющим ваши ценные данные. Приложение, могущее меняться ежедневно, не может быть сторожем даже для самого себя. Чтобы база данных могла играть эту роль, модель данных должна быть спроектирована так, чтобы не принимать изначально неправильные данные и предотвращать не имеющие смысла отношения. Ключи, внешние отношения, правила и ограничения, описывающие схему – это лаконичные, понятные и легко проверяемые вещи, к тому же отлично самодокументируемые. Правила, задающие модель данных, к тому же достаточно стабильные, и изменения уровня приложений часто оставляет их без изменений.

Чтобы использовать возможности реляционной базы данных на все сто – сделать ее полноценной частью приложения вместо простого хранилища данных, вам нужно с самого начала представлять, что вы делаете. Когда ваш продукт будет эволюционировать, то вместе с ним будет меняться и уровень данных. Однако на каждом шагу своей эволюции база данных должна оставаться крепостью. Если вы доверите и делегируете ответственность за обнаружение ошибок в остальных уровнях приложения вашей базе данных, вы в этом не разочаруетесь.

Автор оригинала - Dan Chak

Перевод мой. Если вы решите использовать его полностью или частично, не забудьте указать ссылку на мой живой журнал!
Tags: 97_things_architect_should_know
Subscribe

  • 97 вещей, которые должен знать архитектор ПО

    Давно начатый проект перевода серии из 97 заметок наконец-то закончен! Теперь ищу новую идею, чего бы еще интересного и непереведенного, перевести…

  • 97 вещей для архитектора ПО

    Поскольку надо закончить начатое - продолжу переводить первую серию, поскольку мир не без добрых людей, и оригиналы, удаленные с neartime, нашлись…

  • Переводы задерживаются

    Сайт, хостящий "97 things", чего-то задумал, и тексты оригиналов стали недоступны. Так что пока новых переводов не будет...

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments