Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #69, СЕНТЯБРЬ 2004 г.

SqLite: легче не бывает!

Никита Кислицин

Xakep, номер #069, стр. 069-126-1


(nikitoz@real.xakep.ru)

Новая альтернатива mySQL

Я уже много писал о различных схемах хранения данных. Мы хорошо разобрались с работой классических sql-серверов, пощупали в работе LDAP и текстовые базы. Я уже было хотел завершить этот увлекательный рассказ тестированием производительности всех предложенных схем, как внезапно вспомнил об еще одной блестящей альтернативе громоздким базам данных. Ее функциональность и производительность столь хороши, что я просто обязан рассказать тебе о ней.

А оно надо?

SqLite – это встраиваемая библиотека, расширение для PHP, в котором реализована добрая половина стандарта SQL92. SqLite предоставляет качественный интерфейс к нерелятивистской базе данных; вся информация, хранимая в такой базе, находится в одном-единственном файле, а работа с этими сведениями осуществляется при помощи классного интерфейса, поддерживающего стандартный синтаксис SQL. При этом, как и следовало ожидать, существенных различий с точки зрения php-программиста между такой базой и mySQL нет – при переходе на новую технологию не понадобится менять ни одного запроса! Скептики могут возразить: «Переход на новую технологию? Да на фиг надо, эта lite-версия, наверное, лагает не по-детски, тормозит и глючит». Это не так, смею тебя заверить. В ряде случаев SqLite даже выигрывает в производительности у тяжеловесных серверов БД, и в этом, скажу тебе по секрету, нет ничего удивительного. Впрочем, не буду забегать вперед.

Поскольку как таковая база данных SqLite – это обычный файл, отпадает всякая необходимость в хитроумных средствах дополнительного администрирования для разграничения прав доступа, не нужно городить целый огород с защитой пользовательских данных, квотирования объема хранимой информации и т.д. Все это легко и очень гибко реализуется самой файловой системой – достаточно лишь выставить требуемые права для файла с БД, и все проблемы отпадают сами собой. Также не могу не отметить, что использование этого интерфейса повышает и общую безопасность системы – ведь эта СУБД не является никаким сетевым демоном и возможность удаленного взлома через средства БД отсутствует как таковая. Другое большое преимущество для пользователей заключается в том, что они могут легко создать столько баз данных, сколько им потребуется, в то время как при использовании mySQL их число обычно ограничено, более того, по ряду причин по-другому на нормальных хостингах и быть не может :). А поскольку база данных – это всего-навсего единственный файл, становится очень легко бэкапить информацию и вообще полностью ее контролировать. Думаю, совершенно понятно, что благодаря организации этой БД отпала сама необходимость в установлении сетевых соединений «клиент-сервер», присущих тяжеловесным аналогам. Для работы SqLite требуется заведомо меньший объем памяти, в то же время этот интерфейс может обеспечивать работу с базами до двух терабайт. Согласись, впечатляет.

Весь этот интерфейс – это несколько новых PHP-функций, встраиваемых в уже существующий интерпретатор. Это не какое-то внешнее ПО, и установка такого расширения не займет много времени, даже более того – в ряде случаев вообще не займет :).

Содержание  Вперед на стр. 069-126-2