четверг, 12 марта 2009 г.

Про производительность

О производительности веб приложений и скриптов почему то принято рассуждать, только когда говорят про гугл, твиттер и иже с ними. Когда же говорят о написании сайта обычного – про производительность говорить не принято как то. Ну то есть априори все знают что если CMS, то Joomla плохо справляется с нагрузкой и наплывом посетителей при прочих равных, так же как и скажем движок форума IPB гораздо более требователен к ресурсам, нежели чем SMF или phpBB.
Однако на практике я встречал уже ни один и не два случая когда сайт вешал весь сервер из за кривости своей архитектуры. Причем сайты эти начинались как маленькие странички для маленького сообщества людей, но через пару лет имея какую-то посещаемость в один прекрасный момент укладывали порядочный достаточно сервер.
И, что занимательно, укладывал всегда сервер БД. То есть обычно говоря о производительности сайта или скрипта, говорят о кешировании, о браузерах, о шаблонизаторах и прочем. То есть подразумевается, что главная нагрузка тут ложится на формирование страницы и вывод на экран. И кеширование спасет мир. Я даже пару раз имел на различных форумах по этому поводу дискуссию, но сейчас не об этом.
По факту то, что я встречал имело проблемы именно с БД. И причем я могу понять, когда речь идет о самописном скрипте, написанном в период изучения пхп и прочтения раздела книги о пхп про базы данных. Но вот так чисто навскидку примеры – даже известные движки типа vbulletin в период невзгод укладывали именно сервер БД. Не говоря уже о всяких движках аля вконтакте. То есть в первом случае я могу допустить, что писано было шарлатаном (если называть вещи своими именами), но поверить что vbulletin писали шарлатаны я не могу.
И это лишь примеры, но моя личная статистика говорит что первым сдается сервер БД. Отчего и почему – можно только предполагать. У меня лично есть несколько вариантов ответа – правильный я не знаю.
Первой возможной причиной тут мне видится то, что обычно БД считается чем то таким третьестепенным и проходным. То есть обычно изучение веб программирования происходит по книжке о PHP. Чаще всего этой книжкой все и ограничивается – там обычно есть и краткий экскурс в html и css, и про пхп и про базы данных. Очень часто осознав нехватку знаний люди раскошеливаются на книгу по HTML и CSS – отдельную и более подробную. Или скачивают книгу – но суть – отдельная книга. При этом я ни разу не видел чтобы хоть кто то покупал/скачивал отдельную книгу по базам данных , языку SQL или тем более по проектированию баз данных. Наплевательское отношение к этому важному предмету потом и оборачивается жопой в реальном сайтостроении.
Вторая причина (как вариант) – абсолютно такой же подход администраторов. То есть книжки по виндовс серверу прочитываются, мануалы/хелпы/книги по линуксу/фрибсд и прочим штудируются от корки до корки – а вот книги по настройке MySQL и т.п. обычно проходят вскользь. Либо при установке и настройке сервера такую книгу используют как справочник. Открывают на нужной странице, списывают параметры запуска и вуаля. В жизнь! А в жизни высокопосещаемый форум и затык на базе данных, когда ничто не предвещало беды.
Одним словом с базами данных беда. Мне это вдвойне дико видеть, потому что само то я начинаю что-то делать со структуры БД и от неё идут все пляски с бубнами. Может это все, конечно, таракан в моей голове и все от того, что по долгу службы приходилось работать с очень большими базами данных (может быть даже самыми большими в Саратове ?) хз с чем сравнить) и теперь это сильнее меня.
Единственный вопрос остается в том, как привить вебмастерам и админам, создающим и администрирующим веб приложения, мысль о том что проектирование баз данных – очень и очень важно? Вопрос пока открытый.

2 комментария:

Саша В. Греев комментирует...

Согласен. Я и сам, честно говоря грешу отсутствием прочных данных в области базостроения.
Несколько раз пытался вникнуть в настройки MySQL, даже линухового, но что-то как-то не сросталось у меня и ещё эта мощная фраза: "Бля, да работает и хер с ним!" - убивает остатки желания.

Андрей комментирует...

Фраза реально убивающая :))) И 100% работающая :) А еще если оставлять БД "напотом" то результат тока усугубицца :)