Я уже писал, что первая версия скрипта Blog Micro (впрочем, тогда у него ещё не было названия), работала без использования какой-либо базы данных - на обычных текстовых файлах. В файлы писалась вся информация о блоге: даты, id записи, текст поста, урл картинки и прочее. В отдельный текстовый файл писались комментарии. Такая схема была удобна для меня, по началу, исключительно в силу моего незнания. Я просто не был в курсе, как работать с базами данных в PHP, т.ч. шаг был вынужденный - ради экономии времени.
Скрипт блога был дописан, и успешно работал какое-то время, но в процессе его "эксплуатации" стало понятно, что у текстовых файлов в качестве базы данных, есть свои недостатки. Самым основным является отсутствие простой возможности делать выборки - для каждый, даже самой простейшей операции, нужно было пройти по всем записям базы, что безусловно, очень неудобно. То ли дело выборки SELECT в SQL синтаксисе - одной строчкой можно сделать то, что в варианте с текстовой базой превращалось в немаленький кусок кода. Итак, стало понятно, что нужна нормальная база данных! Но какая?
Первое, что приходило в голову - вездесущий "мускуль" (MySQL, если по-научному). Но я уже имел с ним дело, в качестве пользователя, и мне он, скажем прямо, не очень то и нравился. Во-первых, мне хотелось избежать привязки к клиент-серверной модели, не то, чтобы она меня раздражала сама по себе, скорее её реализация. Перенос маленького сайтика с хоста на хост, мало того, что достаточно трудоёмок, но ещё мог стать источником неожиданного гимора. Например, с кодировками. Мне ни к чему такой огромный выбор кодировок, я понимаю что будущее за Unicode, и наличие поддержки одной лишь UTF-8 меня бы полностью устроило.
В итоге гугл привёл меня, к доселе неизвестному проекту - SQLite. Проект открытый, бесплатный и на словах обещал много вкусного - в том числе сочетание синтиксиса SQL и "скрытой" реализации клиент-серверной модели. По сути, для PHP разработчика это выглядит как flatfile база данных с SQL языком - просто отлично! На деле же, у SQLite баз есть несколько ограничений, которые могут быть критичными для больших и распределённых проектов, но совершенно не важны, если мы говорим о блоге. К примеру, особенности реализации не позволяют писать в базу SQLite более, чем одному процессу одновременно, т.к. на время записи файл с базой просто блокируется. Это, очевидно, может стать проблемой для тяжёлых многопользовательских приложений, но повторюсь - в нашем случае, когда речь идёт о движке для блога, это абсолютно не актуально.
Итак, в качестве базы данных был выбран SQLite2, вторая версия, считающаяся устаревшей (текущая версия на сегодня, это 3.7.5), но тем не менее, я выбрал именно её. Она не сильно проигрывает SQLite3 в быстродействии, и что самое важное, библиотека SQLite2 компилируется в составе PHP, т.е. речь идёт именно о нативной поддержке - без необходимость установки каких-либо дополнительных компонентов. Думаю, когда-нибудь я переведу скрипт Blog Micro на третью версию SQLite (это не так уж и сложно), но это точно не является приоритетной задачей, т.к. и вторая отлично справляется со своей работой.
Скрипт блога был дописан, и успешно работал какое-то время, но в процессе его "эксплуатации" стало понятно, что у текстовых файлов в качестве базы данных, есть свои недостатки. Самым основным является отсутствие простой возможности делать выборки - для каждый, даже самой простейшей операции, нужно было пройти по всем записям базы, что безусловно, очень неудобно. То ли дело выборки SELECT в SQL синтаксисе - одной строчкой можно сделать то, что в варианте с текстовой базой превращалось в немаленький кусок кода. Итак, стало понятно, что нужна нормальная база данных! Но какая?
Первое, что приходило в голову - вездесущий "мускуль" (MySQL, если по-научному). Но я уже имел с ним дело, в качестве пользователя, и мне он, скажем прямо, не очень то и нравился. Во-первых, мне хотелось избежать привязки к клиент-серверной модели, не то, чтобы она меня раздражала сама по себе, скорее её реализация. Перенос маленького сайтика с хоста на хост, мало того, что достаточно трудоёмок, но ещё мог стать источником неожиданного гимора. Например, с кодировками. Мне ни к чему такой огромный выбор кодировок, я понимаю что будущее за Unicode, и наличие поддержки одной лишь UTF-8 меня бы полностью устроило.
В итоге гугл привёл меня, к доселе неизвестному проекту - SQLite. Проект открытый, бесплатный и на словах обещал много вкусного - в том числе сочетание синтиксиса SQL и "скрытой" реализации клиент-серверной модели. По сути, для PHP разработчика это выглядит как flatfile база данных с SQL языком - просто отлично! На деле же, у SQLite баз есть несколько ограничений, которые могут быть критичными для больших и распределённых проектов, но совершенно не важны, если мы говорим о блоге. К примеру, особенности реализации не позволяют писать в базу SQLite более, чем одному процессу одновременно, т.к. на время записи файл с базой просто блокируется. Это, очевидно, может стать проблемой для тяжёлых многопользовательских приложений, но повторюсь - в нашем случае, когда речь идёт о движке для блога, это абсолютно не актуально.
Итак, в качестве базы данных был выбран SQLite2, вторая версия, считающаяся устаревшей (текущая версия на сегодня, это 3.7.5), но тем не менее, я выбрал именно её. Она не сильно проигрывает SQLite3 в быстродействии, и что самое важное, библиотека SQLite2 компилируется в составе PHP, т.е. речь идёт именно о нативной поддержке - без необходимость установки каких-либо дополнительных компонентов. Думаю, когда-нибудь я переведу скрипт Blog Micro на третью версию SQLite (это не так уж и сложно), но это точно не является приоритетной задачей, т.к. и вторая отлично справляется со своей работой.