По файликам - у меня отложилось стойкие рекомендации одного серьезного админа. И звучит примерно так: не больше 2к записей на каталог. Тоесть, либо 2000 каталогов, либо 2000 файлов в каталоге. Таким образом, если планируется скажем 10к уникальных ип - то лучше все это распихивать по 5 папкам.
Оборот для начала...
)) Напомнило пословицу: никогда нет времени сделать нормально и сразу, зато всегда есть время 10 раз переделывать потом.
) По проверке уникальности - если не обходить все папки для удаления файликов, то настанет момент времени, когда место на жестком диске может кончиться. Либо количество этих файликов побьет все мыслимые и не мыслимые рекорды... Т.к. реально - файлы не будут удаляться вообще. Т.к. пользователь зашел => проверили, файл есть, дата старая, => удалили (или обновили дату) => создали новый,такой же. (пользователь ведь зашел). А если пользователь не зайдет больше никогда? Файл останется.
поэтому, обходить время от времени придется...
Не надо изобретать велосипед с кэшем. Кэш отличный есть в самих базах данных. В некоторых случаях можно использовать таблицы с типом HEAP. А вообще - грамотное проектирование БД - и нагрузка минимальна. А это и индексы, и структура, и продумывание ключевых запросов, чтобы не дрючить лишний раз ничего, либо наоборот, сделать лишних 2-5 запросов бывает куда быстрее, чем 1 объемный запрос..
Почитать стоит о типах баз, и об индексах. Индексы - в обязательном порядке. google.com, "оптимизация запросов mysql" вот эту ссылку, топ5 или даже 10, даже если речь не о mysql, даст общее понятие.