Об Одном Подходе К Построению Базы Данных На Начальном Этапе Работы Над Веб-Проектом

Здесь мы рассматриваем подход, способный облегчить начало работы над интернет-проектом, требования к которому могут быть определены, но некоторые, возможно, существенные детали не раскрыты.

Я считаю, что вообще все стартапы и проекты на старте редко можно описать достаточно полно, чтобы можно было построить необходимую архитектуру базы данных и грамотный код. На начальном этапе проектирование структуры базы данных на основе идеи использования NoSQL-подобного подхода в качестве чернового варианта проекта позволяет сэкономить силы и деньги в условиях постоянно меняющихся требований.

Такой подход позволяет получить быстрые результаты и построить всю логическую схему проекта.

Такой подход дает выигрыш в скорости и упрощает дело на самом бурном начальном этапе, если нам приходится довольно часто и глубоко перерисовывать архитектуру.

При этом переход к классической, более-менее нормализованной базе происходит достаточно безболезненно.

Предположим, что есть некая достаточно сырая идея, на основе которой нам нужно построить некий интернет-продукт. С чего мне начать? Или если идея сырая, то в плане реализации вообще ничего делать не надо? Однако, это не всегда возможно.

Точнее, разработчику сложно понять, являются ли текущие требования окончательными или завтра все изменится весьма существенно.

И мы, будучи твердо убеждены, что рамки определены, начинаем работать.

Если все пройдет хорошо, то результат будет хорошим и код проекта будет достаточно красивым (с точностью до навыков программиста).

Однако дела не всегда идут хорошо.

А дальше в целом проект движется так:

  1. На основе идеи была спроектирована база — такая, какой она потом окажется в первом приближении.

    Для каждого информационного объекта имеется отдельная таблица.

    Для каждой характеристики имеется отдельное поле.

  2. Некоторая часть проекта была построена на основе полученной базы.

    Логика реализована, верстка подтянута.

  3. Консультация с заказчиком (или «внутренним заказчиком»).

    Вот тут-то и становится ясно, что все нужно менять.

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

    Такая ситуация очень распространена, т.к.

    мало кто берет на себя труд построить полную схему процесса.

  4. Измените какую-то часть схемы базы данных — в самом простом случае вам нужно будет добавить/удалить поля.

    После этого измените все SQL-запросы.

    И третий необходимый шаг в этом случае — испытания в новых условиях.

И затем цикл повторяется с точки 2 .

Мне кажется, здесь слишком многое предстоит сделать, и притом весьма кропотливо.

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

С одной стороны, отсутствие четкой (для программиста) картины процесса — это плохо и, казалось бы, в такой ситуации хороших результатов ждать не стоит. С другой стороны, это вполне реальная ситуация, которую можно объяснить не только особенностями заказчика, но и объективными причинами.

Ведь имея на руках хоть в какой-то степени готовый и живой продукт, где реализована логика и выстроены связи, сразу возникают вопросы, которые не были и не могли быть продуманы заранее.

Для себя я нашел отличное решение, которое позволяет минимизировать трудозатраты на этапе, пока мы достаточно не знаем некоторые ключевые детали для реализации.

А уточнить их можно только после получения какой-то работающей модели.

Суть подхода в том, что мы храним все информационные сущности в отдельных таблицах, но не разделяя поля.

В виде массива JSON. Это позволяет хранить объекты любой сложности.

Такой подход позволяет нам не трогать базу данных при изменении/добавлении полей и не тратить время на изменение и отладку запросов в новых условиях.

У нас есть только изменения в чистой логике и проверках.

В дальнейшем при переходе от хранения данных, упакованных в формате JSON, к нормализованной структуре нам нужно будет изменить практически только запросы, при этом логика и проверки останутся неизменными.

Зачем вам вообще может понадобиться переключиться с типа хранилища NoSQL на обычные таблицы? Для меня этот вопрос легко решаем: хотя я не могу назвать себя экспертом в MongoDB или чем-то подобном, для коммерческой разработки лучше использовать проверенные инструменты.

Хотя, если у нас есть возможность выбора и если у нас в проекте нет штата аналитиков (которые записывают SELECT* в нашу базу) и наша база не будет использоваться сторонними сервисами, то мы можем полностью перенести все хранилище на рельсах NoSQL. Итак, спроектировав сначала всю структуру в стиле JSON-строк, мы экономим время на отладку и гораздо раньше можем получить некий готовый результат, имея который будут решены все необходимые вопросы для построения достаточно полной и разумной архитектуры.

Вот что я должен сказать.

Теги: #проектирование интернет-проектов #дизайн баз данных #разработка веб-сайтов

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.