Когда Интернет только создавался, его основу составляли статичные HTML страницы, объединенные гипертекстовыми связями. На тот момент, когда модемы были медленными, этого вполне хватало. Когда широкие каналы стали общедоступными, объемы сайтов резко увеличились, сайты обросли графикой и сложными вариантами дизайна. Данные стали сильно путаться с кодом, поэтому их срочно стало нужно разделить.

Интересно, что примерно такие же проблемы возникали и в традиционном программировании, где данные тоже пытались отделить от кода и элементов форматирования. В Сети это решилось изобретением серверных языков программирования. Это было только начало, затем для хранения данных отдельно были написаны СУБД – системы управления базами данных. Когда вы смотрите на типичный блог, трудно представить, как именно он хранится на сервере. Но то, что не в виде готовых страниц – это 100%: картинки, статьи и комментарии – в виде одних полей БД, шаблоны страниц – в других полях, списки пользователей – в третьих, цвета и координаты элементов – в четвертых и т.д. И только при запросе страницы некая программа динамически собирает нужную страницу для пересылки в браузер – до этого момента страницы как таковой не существует. Эта некая «программа» называется CMS – система управления контентом. Так как аббревиатура звучит «не очень», то чаще слово «контент» заменяют на «содержимое», что, в общем, правильно и более благозвучно – СУС.

CMS – штука крайне полезная, причем каждый вебмастер втайне мечтает создать собственную версию, и не редко создает. Задача CMS – настроить внешний вид ресурса, разграничить доступы пользователей, задать параметры и координаты размещения статей, обеспечить защиту и архивацию ресурса. Обычно система строится на базе ядра, написанного на скриптовом языке вроде PHP, тесно связанным с базой данных MySQL, Oracle, MSSQL и прочими. Чаще всего работа происходит с реляционными базами, но в некоторых случаях применяются иерархические.

Реляционная база данных организована проще – это набор строк (кортежей), разбитых на поля данных (отношений). В целом структура соответствует матрице, где каждое поле по вертикали должно быть одного типа. Это сильно упрощает скорость поиска и доступа к информации. В иерархической базе структура полей напоминает дерево, где количество узлов чаще всего несимметрично. Зато это хороший вариант для составление родословных, для описаний сложных процессов, для задач моделирования. Каждая СУБД для операций над данными имеет свой высокоуровневый язык, через который передают и получают не только значения данных, но и служебные данные о состоянии баз.

В таких проектах как социальные сети, вики, Ucoz, blogspot и прочих CMS полностью работает на стороне сервера, обеспечивая массовый доступ и скрывая часть своих настроек. В иных случаях систему можно скачать с сайта производителя и самостоятельно установить на хостинг. При этом есть закрытые платные CMS, а также свободные, где пользователю доступны любые «игры» с системой. В любом случае, интерфейс работы с системами известен, что позволяет расширить систему за счет дополнительных модулей и расширений. К примеру, вставить в блоговую CMS свой форум или чат, новую систему комментирования или фотогалерею.

Многие CMS, существующие в мире, по-прежнему значатся в аналитике как «другие», то есть самостоятельные разработки, но многие владельцы сайтов придают большое значение стандартным системам. В частности, для блогов традицией стало использование WordPress, для сайтов – Joomla, Drupal, Simple, DLE, MODx и др., для магазинов – UMI.CMS, Bitrix, ABO.CMS, для форумов – vBulletin, Invision Power Board, phpBB. При этом стоимость системы не очень важна, если она работает без проблем, так что CMS, в отличие от обычных программ, покупают чаще (еще бы – взломанная система, работающая на хостинге, может и хозяину пожаловаться!).

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