БД или файл, что лучше? (для ведения логов статистики)

DeYura

Новичок
БД или файл, что лучше? (для ведения логов статистики)

Есть вопрос к знающим людям.
Мне нужно вести статистику кликов по ссылкам. Скрипт я написал, но вот в чём вопрос:
Использовать ли для регистрации БД MySQL или простой текстовый файл.
При использовании БД MySQL мы получаем возможность одновременной регистрации при большом кол-ве посетителей. Но проблема в том что скрипт при каждом клике конектится к БД, что не есть очень правильно, хотя и быстро.

При использовании простого текстового файла мы получаем большее быстродейтвие (ведь файл открыть быстрее чем подключиться к БД), но вопрос в том, как быстро будет работать скрипт, если объём файла достигнет 100 Мб и при большом количесве пользователей (одновременном обращении)?
 

Фанат

oncle terrible
Команда форума
При использовании БД MySQL мы получаем возможность одновременной регистрации при большом кол-ве посетителей
это единственная причина, по которой тебе нужна БД?

-~{}~ 18.09.05 13:23:

Непонятно только, откуда такой вывод.
ведь если у файла получается быстрее, то каким образом у БД получится регистрировать больше?
 

DeYura

Новичок
Насколько я понимаю, БД может обрабатывать одновременные запросы, а файл с функцией flock нет (если не лочить файлы, неведомы причины ошибок...).
 

Фанат

oncle terrible
Команда форума
а куда пишет сервер бд те данные, которые ты ему отправляешь, товарищ теоретик?
 

tristram

Guest
:) он думает себе на лоб. а если серьезно то СУБД надо использовать в тех случаях когда надо делать сложную выборку данных. в остальных случаях будет быстрее и правильнее использовать файлы, т.к. СУБД это обычно (кроме sqlite) передача данных через сокет, потом их обработка и возврат ответа. СУБД тоже хранит данные в файлах (для mysql это *.myi).
 

DeYura

Новичок
В файл он их пишет.
Ладно буду использовать БД.
Хотя осталось только одно сомнение, это необходимость конектится, чтобы записать всего лишь несколько значений. Т.е. вообще меня настораживает вопрос скорости подключения к скорости записи в обычный файл.
 

Фанат

oncle terrible
Команда форума
лучше - собирать записи в файл, а после анализировать и распихивать в бд фоновым процессом.

если по бд надо делать сложную выборку, то тогда нужны индексы.
а индексы очень сильно замедляют именно ВСТАВКУ.
 

tristram

Guest
правильно. когда я писал скрипт статистики я сделал скрипт который по крону каждые сутки парсил логи апача за прошедшие сутки и запихивал результаты (непосредственно значения статистики а не запросы) в mysql. а оттуда уже данные брал скрипт просмотрщик, и к слову, рисовал пироговые диаграммы :)
 

Falc

Новичок
DeYura
Если статистику нужно анализировать, а не просто собрать, то разумнее использовать базу. А вот то как в базу класть данные зависить от требуемой производительности. Если требования к производительности не очень высоки, то вполне достаточно при каждом клике конектится к БД и записвать лог. Если же предпологается серьезная нагрузка на скрипт, то разумнее сохранять сначало лог в файле а потом, как писалось выше, запихивать его по крону в базу.
 

Фанат

oncle terrible
Команда форума
тьфу, ё!
Это ж всего лишь статистика кликов.
пиши в базу и не парься.
плюс - http://dev.mysql.com/doc/mysql/ru/insert-delayed.html
правда, там написано только о конкурирующих потоках и не написано об индексах. Но, будем надеяться, что это одно и тоже.
 

DeYura

Новичок
Автор оригинала: Фанат
тьфу, ё!
Это ж всего лишь статистика кликов.
пиши в базу и не парься.
плюс - http://dev.mysql.com/doc/mysql/ru/insert-delayed.html
правда, там написано только о конкурирующих потоках и не написано об индексах. Но, будем надеяться, что это одно и тоже.
Ну наконец-то, а то я шото неправильно Вас понимал.
Спасибо за подсказанную хорошую идею с задержками.
В общем буду писать в базу.
Серавно, как выразились здесь, база ведь пишется в файл.
 
Сверху