Возьмем фотографии для примера. Если пользователь на протяжении часа (промежуток сами выбираете) добавляет 10 фотографий, то считаем это как одно событие. В таблице с событиями добавляем поле в котором будут хранится ИД добавленных фотографий (через запятую, или серилизированный массив), а на стороне сервера обрабатываем как нам угодно (узнаем количество, выводим 10 последних или 10 случайных фотографий).
Неделя для человека, не имеющего ни малейшего понятия о программировании и веб разработке, это ничтожный срок, возможно через месяц будет писать простенькие скрипты. Выучить синтаксис это одно, а программировать совсем другое.
Все довольно индивидуально. Я занимался проектом у которого было 2кк просмотров в сутки и он спокойно жил на двух-ядерном пне с парочкой гигов оперативки (без кеширования запросов в БД). А так же другим, который жил на 9 не слабых серваках при количестве просмотров 5кк. Там мы пробовали с помощью DNS балансировать нагрузку, но в итоге поставили один сервер балансировщик ngnix, а он уже выбирал из n-ного количества PHP сервер. memcache на отдельном сервере, БД тоже на своих двух, статика на ещё одном. Довольно стандартные приемы. И главное — проблемы решаются по мере их поступления (или выявления узких мест не за долго до появления). Далее можно много чего делать, с БД например, можно выносить таблицы на отдельные сервера или шардить. memcache так же легко шардится. С NoSQL БД дела не имел, поэтому ничего сказать не могу, но как говорят это не панацея.