Хранение контента
Попросили сделать блоговый движок для высоконагруженного сайта.
Чесноговоря никогда ещё не делал ничего подобного, в основном всё по мелочи - игровые порталы и клановые сайты, иногда даже на укозе) Вот что придумал в связи с высоконагруженностью: Все материалы хранить в виде текстовых файлов по папкам, а в базе данных создать такую таблицу: ID -- link -- title -- author -- date -- <some flags> Соответственно обращаться к базе лишь за урлом материала и инклудить его. Но самое главное, некоторый контент в базе всё-таки хранить. Этот контент - недавно добавленные материалы (то есть кагбэ кэшировать) Сайт предусматривает схему, подобную большим блогам(например хабру): есть десяток-другой материалов, которые некоторое время активно и многими просматриваются. Их следует хранить там, откуда их можно быстро отдать клиенту. И есть давние материалы - которым больше суток, и которые я как раз собираюсь хранить в текстовом виде. Это замедлит доступ к ним, но ведь их и просматривать будут нечасто по сравнению с остальными. Мой вопрос заключается в том, поможет ли такое хранение высоконагруженному сайту? Есть ли в этом смысл? Повторяю, я в таких вопросах некомпетентен и поэтому эта идея может быть бредом. В таком случае прошу что-нибудь толковое посоветовать. |
БД надежнее, и имеет необходимый инструментарий. Кладите контент в отдельную таблицу. Механизм кэширований мб разным, многоуровневым. Для кэширования сложных запросов, блоков, страниц - обычно используют memcache, memcached или подобные (кэш в ОЗУ), хотя для кэша можно задействовать и файловую систему, и ту же БД (отдельную таблицу для кэша), сочетание разных видов.
|
Sham, поясните, что значит надежнее?
Сброс всего старого контента на файловую систему не даст прироста производительности бд? Я ведь хотел как: Самые последние и читаемые страницы хранить в озу, менее читаемые - в бд, а старые(перекочевавшие у пользователя в закладки) - как файлы на диске. То, что хранение актуальных записей в озу даст прирост - это очевидно. Но есть ли толк в хранении старых записей на диске? Просто если это даст хоть немного - уже хорошо. |
БД надежнее в смысле оперативности обслуживания, бекапов, восстановления данных, репликаций и т.д.
Цитата:
В принципе, для отдачи всего контента можно организовать файловый кэш в сжатом виде, независимо от актуальности. Разделять контент я бы не стал, это неудобно. Не считаю, что оптимизированные запросы на выборку 1 строки по unique/primary-индексу сильно нагружают БД. В общем случае можно варьировать выдачу БД/файл в зависимости от показателей загруженности. Например, по крону снимать цифры загруженности БД, системы, в зависимости от которых рулить выдачей. |
Ох, вот о поиске как-то не подумал, нужно будет не забыть..
Просто я хочу добиться того, чтобы нагрузка правильно распределялась между актуальными и неактуальными материалами. Цитата:
Или что-то другое? Выходит что лучше всё-таки хранить всё в бд и только кэшировать актуальное? |
Цитата:
|
Не стал юзать хранение контента как файлов - всё храню в бд.
кэширования хватило) Решено |
Время: 20:02. |
Время: 20:02.
© OSzone.net 2001-