| База данных это следующий уровень абстракции данных по сравнению с файловой системой. По аналогии, это как переход от кодов к ассемблеру, когда не требуется запоминать много разных видов копирования и все они выполняются одной командой (машина сама определяет из контекста какой код нужно применить) или переход от ассемблера к языку высокого уровня, когда масса рутинных операций объединяются в конструкции языка.
Отсюда достоинства и недостатки. Многостраничный код при работах с файлами, часто можно заменить одной строкой при работе с базой данных. Читабильность программ возрастает многократно, как впрочем и время разработки, а количество глюков в программе падает. Можно сосредосточится на логике и не заботиться о реализации.
База данных проигрывает в скрости тем же плоским файлам, но так как PHP - интерпретатор, всё съедается неповоротливостью самого языка. Поэтому получить преимущество в скорости над базой данных, разработанной на С вряд ли получится. Кроме того, это преимущество можно получить только при записи и чтении, при операциях поиска база данных делает всех, так как она специально под это заточена. Можно сделать быстрый поиск и на файлах, но объём работы и сложность кода приблизит его к структуре базы данных - лучше воспользоваться готовым кодом, созданным и отточенным профессионалами в течении десятилетий, чем в течении нескольких лет делать свою собственную кривенькую базу на файлах.
Кроме того, проблемы одновременного доступа к файлам нескольких сотен человек решаются достаточно сложно - необходимо продумать гибкую схему управления файлами http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1870, базы данных спроектированы и предназначены для многопользовательского режима.
Поэтому всегда когда имеется возможность использовать базу данных, её следует использовать (если, конечно, не стоит задача разработки поисковой системы типа Google, а у вас не хватает несколько сотен серверов :).
Пожалуй существует одно исключение, базу данных не стоит использовать для хранения объёмных файлов - их лучше хранить на диске, так как они в большинстве случаев не перезаписываются, то одновременное обращение к ним нескольких пользователей не приведёт к проблемам, а большие массивы данных замедляют работу базы данных (ну это ко всему применительно, не только к базе данных).
PS Вообще когда я в первый раз познакомился с базами данных, я сразу понял, что с меня свалился огромный камень, так как отныне у меня освободится 50% времени при разработки приложений как на С, так и на PHP и Perl. | |