Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] Хранение контента (http://forum.oszone.net/showthread.php?t=224271)

Mihahail 02-01-2012 19:52 1827031

Хранение контента
 
Попросили сделать блоговый движок для высоконагруженного сайта.
Чесноговоря никогда ещё не делал ничего подобного, в основном всё по мелочи - игровые порталы и клановые сайты, иногда даже на укозе)

Вот что придумал в связи с высоконагруженностью:
Все материалы хранить в виде текстовых файлов по папкам, а в базе данных создать такую таблицу: ID -- link -- title -- author -- date -- <some flags>
Соответственно обращаться к базе лишь за урлом материала и инклудить его.
Но самое главное, некоторый контент в базе всё-таки хранить. Этот контент - недавно добавленные материалы (то есть кагбэ кэшировать)
Сайт предусматривает схему, подобную большим блогам(например хабру): есть десяток-другой материалов, которые некоторое время активно и многими просматриваются. Их следует хранить там, откуда их можно быстро отдать клиенту. И есть давние материалы - которым больше суток, и которые я как раз собираюсь хранить в текстовом виде.
Это замедлит доступ к ним, но ведь их и просматривать будут нечасто по сравнению с остальными.

Мой вопрос заключается в том, поможет ли такое хранение высоконагруженному сайту? Есть ли в этом смысл?
Повторяю, я в таких вопросах некомпетентен и поэтому эта идея может быть бредом. В таком случае прошу что-нибудь толковое посоветовать.

Sham 03-01-2012 10:36 1827348

БД надежнее, и имеет необходимый инструментарий. Кладите контент в отдельную таблицу. Механизм кэширований мб разным, многоуровневым. Для кэширования сложных запросов, блоков, страниц - обычно используют memcache, memcached или подобные (кэш в ОЗУ), хотя для кэша можно задействовать и файловую систему, и ту же БД (отдельную таблицу для кэша), сочетание разных видов.

Mihahail 03-01-2012 17:36 1827565

Sham, поясните, что значит надежнее?
Сброс всего старого контента на файловую систему не даст прироста производительности бд?
Я ведь хотел как:
Самые последние и читаемые страницы хранить в озу, менее читаемые - в бд, а старые(перекочевавшие у пользователя в закладки) - как файлы на диске.

То, что хранение актуальных записей в озу даст прирост - это очевидно.
Но есть ли толк в хранении старых записей на диске?
Просто если это даст хоть немного - уже хорошо.

Sham 03-01-2012 18:19 1827600

БД надежнее в смысле оперативности обслуживания, бекапов, восстановления данных, репликаций и т.д.
Цитата:

Цитата Mihahail
а старые(перекочевавшие у пользователя в закладки) - как файлы на диске. »

Имхо тут не может быть однозначного решения. Если приоритет - размер БД, то да - лучше очищать таблицу. Но при этом, если потребуется поиск, то придется индексировать и помещать в таблицу поиска.
В принципе, для отдачи всего контента можно организовать файловый кэш в сжатом виде, независимо от актуальности. Разделять контент я бы не стал, это неудобно.
Не считаю, что оптимизированные запросы на выборку 1 строки по unique/primary-индексу сильно нагружают БД.
В общем случае можно варьировать выдачу БД/файл в зависимости от показателей загруженности. Например, по крону снимать цифры загруженности БД, системы, в зависимости от которых рулить выдачей.

Mihahail 04-01-2012 01:18 1827908

Ох, вот о поиске как-то не подумал, нужно будет не забыть..

Просто я хочу добиться того, чтобы нагрузка правильно распределялась между актуальными и неактуальными материалами.

Цитата:

Цитата Sham
В общем случае можно варьировать выдачу БД/файл в зависимости от показателей загруженности »

Всмысле? Тоесть хранить контент и в базе и в файлах? Но это же расточительство!
Или что-то другое?

Выходит что лучше всё-таки хранить всё в бд и только кэшировать актуальное?

Sham 04-01-2012 09:48 1828031

Цитата:

Цитата Mihahail
хранить контент и в базе и в файлах? Но это же расточительство! »

Файловый кэш может быть и в сжатом виде. В мемкеш можно класть страницы целиком, код по частям и т.д. как угодно. Кэш можно варьировать для авторизованных и обычных юзеров (для обычных можно целиком страницы кэшировать). Какие запросы и как кэшировать - дело хозяйское.

Mihahail 09-01-2012 02:40 1831366

Не стал юзать хранение контента как файлов - всё храню в бд.
кэширования хватило)
Решено


Время: 20:02.

Время: 20:02.
© OSzone.net 2001-