Портал Belkin-labs»PHP классы»Статья
welcome!

Некоторые аспекты использования базы данных в сайтостроительстве

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

Когда-то давно, когда я был уже довольно опытным программистом и большим специалистом в Визуальном Бейсике версии 5, 6, и даже .NET, судьба заставила меня заняться веб-программированием. И я занялся. Но изучение шло постепенно и некоторое время я не очень понимал схему работы с базой данных, ибо использовал по большей части формат dBase и так называемый jet. Например, меня пугали такие термины, как имя пользователя, пароль, и особенно хост. Ну путался немного в терминах. И вот пока я все копил смелость для перехода на работу с базой данных, я работал с текстовыми файлами. То есть, пока задачи были из рук вон простые, я делал базы данных в формате, близком к формату dbf. И даже делал индексы и поиски по ним путем половинного деления множеств. И знаете, неплохо все работало! Изучение толстых книжек по базам данных не прошло даром.

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

В какой-то момент времени я усомнился в том, что мой публичный хостинг хорошо работает и поставил кучу ловушек. Притом для меня быстро стал некоторым разочарованием тот факт, что если хостинг грохнулся, или перегружен, то он и письмо мне не пришлет, и в лог ничегошеньки не запишет. Просто потому, что не работает. Но тогда я решил проверить хотя бы как работает сервер MySQL. То есть хостинг может работать, но может не работать сервер базы данных. При этом мне и письмо придет, и сообщение в лог запишется. Лог, конечно, текстовый.

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

И вот тут я решил, что совсем неправильно, когда хостинг работает, но сайт не работает просто по причине перегрузки сервера MySQL. Тогда я полез в свои коды и выяснилось ужасное. Современный сайт не может работать без базы данных. Ну вообще! Это такой костыль, без которого мы, программеры жить уже не можем. Ситуация грустная. Но мне, если уж пришла идея в голову, то я не успокоюсь, пока хоть как-то ее не решу. И я стал потихоньку избавляться от баз данных, обходить их там, где возможно без них обойтись. Очевидно, это я делал не для всего сайта, а только "в промежутке" между самым началом работы скрипта и выводом страницы полностью из кэша.

Слава Богу, что я не использую на своих сайтах коверканных длинных СЕО-урлов в стиле Гугла. Там без баз данных было бы крайне сложно, только если опять на текстовые файлы переходить. Сессии у меня тоже стандартные, то есть на текстовых файлах живут. Кроме того, у меня на сайте работает довольно тупой кэш, который хранит страницы целиком и из блоков их не собирает и не компилирует по сто раз. Различные переменные и все, что попало, я тоже в базе данных не храню. Так что сразу стало понятно, что реализовать поставленную задачу лично я и конкретно для своих сайтов принципиально могу. Это возможно.

Основная работа пришлась на отслеживание ошибок подключения к базе данных и к отдельным таблицам. То есть, при отсутствии подключения любой запрос кончается ошибкой. Пришлось специально обрабатывать случаи неработоспособности бд и вместо стандартного die() использовать продолжение работы, но только с особой функциональностью. В итоге при отсутствии подключения к базе данных сайты мои работают. Конечно, если пользователь хочет залогиниться, приходится ему отказать.

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

Статья создана 22.04.2015
Похожие материалы - отбираем по ключевым словам