|
|
|
| Когда говорят о достоинствах использования базы данных по сравнению с файлами, то основным аргументом выставляется тот факт, что сервер управления базой написан на С++ и потому очень быстро производит запись/чтение с винчестера, тогда как рнр пропускает эти операции через интерпретатор.
Веоятно, так оно и есть.
Но чем больше я знакомлюсь с возможностями сервера управления базой, тем сильнее впечатление, что и здесь имеет место интерпретирующий язык, обрабатывающий колоссальное количество всяких вариантов обращения к данным. Так что само время связи с винчестером по своему значению отступает на сто первое место...
К тому же, общение с базой требует дополнительных операторов рнр.
Удобство базы несомненно, а вот выигрыш по быстродействию - это вряд ли. | |
|
|
|
|
|
|
|
для: Владимир55
(16.02.2009 в 12:04)
| | > а вот выигрыш по быстродействию
Я так понимаю речь идёт про выигрыш по сравнению с чистыми файлами?
Проще всего убедиться есть выигрыш или нет это взять достаточно объёмный экселевский файл и конвертировать его в CSV и таблицу БД. А потом попробовать сделать какую-то выборку с условием из обоих вариантов и замерить скорость.
Результат будет интересный. | |
|
|
|
|
|
|
|
для: Владимир55
(16.02.2009 в 12:04)
| | У Вас немного неверное представление о назначении базы данных.
Если её использовать только для хранения данных, то несомненно в быстродействии вы проиграете. Код с базой и код с файлами координально отличаются даже если делают одно и тоже, а не только теми строками в которых происходит обращение к базе или к файлу. В идеале при использовании БД РНР нужен только для оформления ввода и вывода, всё остальное нужно стремиться сделать средствами СУБД которые как раз и написаны на Си. | |
|
|
|
|
|
|
|
для: Valick
(16.02.2009 в 12:42)
| | Я дополню, смысл в том, что файловые операции обгоняют базу данных лишь при добавлении данных, причем в конец файла. Операции удаления, поиска, сортировки, обновления, постраничного извлечения - файловыми функциями их очень сложно осуществлять без перебора всех данных в файле - чтобы ускорить эти операции нужно хитрить - СУБД хитрит и здрово ускоряет их, C++ не хитрит - у него другая задача - предоставить удобные средства для построения исполняемых модулей, чуть-чуть хитрит PHP, но лишь на уровне шума - у него тоже другая задача. | |
|
|
|
|
|
|
|
для: Владимир55
(16.02.2009 в 12:04)
| | В этом есть рациональное зерно, однако, это не является узким местом. База данных - это очень сложная штука, пишут их по 10 и более лет, очень граммотные специалисты - их основная задача - соответствие стандарту SQL и выжимание максимально возможной скорости - в дело идут хитрые алгоритмы, кэширование, индексы. По большому счету, чтобы ускорить работу с файлами - вам требуется написать библиотеку, если вы талантливы и упорны, ваша библиотека очень скоро превращается в СУБД. Не C++-ом базы сильны, они организуют данные так, что многие операции производятся очень быстро по сравнению с традиционными примитивными средствами работы с файловой системой в C++. PHP в отличие от С++ ещё на три порядка медленее, чем ещё больше усугубляется ситуация. То, что PHP делает часами, у C++ программы зачастую занимает меньше минуты, прибавьте сюда хитрые алгоритмы и удобство работы с базой данных и получите существующую ситуацию: если нет надобности в простейших файловых операциях или не требуется специализированная база данных - в профессиональных проектах всегда используется универсальная СУБД (быстро, эффективно, все ошибки исправлены до нас). | |
|
|
|
|
|
|
|
для: cheops
(16.02.2009 в 12:49)
| | Логично.
Что же касается удобства, то это просто фантастика: то, что на файлах я делал больше месяца и отлаживал столько же, с базой как на ладони! Алгоритм накопления и обработки стал совершенно другой - более простой и наглядный, а скрипт анализа статистики получается настолько универсальным, что мне его будет легко распространить и на другие свои сайты.
Хотя есть и дополнительная сложность: если при сохранении в файлах отслеживать результаты (при настройке) можно путем просматривания обычным менеджером файлов, то при использовании базы требуется отладочный стенд... | |
|
|
|
|
|
|
|
для: Владимир55
(16.02.2009 в 13:11)
| | >Хотя есть и дополнительная сложность: если при сохранении в файлах отслеживать
>результаты (при настройке) можно путем просматривания обычным менеджером файлов, то
>при использовании базы требуется отладочный стенд...
К сожалению, все имеет свою цену, в качестве ещё одного минуса - для эффективной работы, разработчик вынужден изучать дополнительный язык программирования - SQL. | |
|
|
|