Master812
6.12.2017 - 22:36
Всем привет!
Как я уже говорил ранее, я пишу новостной движок. Сегодня передо мной встал вопрос как лучше использовать счётчик новостей. Дело в том, что в моём движке имеются категории, например: Главные новости, Новости Москвы, Новости Санкт-Петербурга и т.п. И в каждой категории может быть тысячи или даже сотни тысяч новостей. Для всего этого у меня имеются счётчики, представляющие собой текстовый файл в который заносится кол-во новостей по каждой категории + ещё один счётчик для всех новостей независимо от категории. Данные заносятся путём подсчёта из базы данных MySQL, т.е. создаётся запрос вида
SELECT COUNT(`id`) FROM '.$db["db_table"].' WHERE category = "'.$cat[$i]['name'].'"'
и затем полученное число заносится в файл. Так вот, встал следующий вопрос: Если записей в БД будет 1 миллион или даже больше, не возникнут ли тормоза с подсчётом? Или может лучше вести подсчёт иначе, например, при создании новой новости открыть файл, прибавить к нему число 1 и записать получившееся значение в этот же файл, а при удалении новости наоборот уменьшить значение на 1, так будет лучше? Или всё-таки лучше через запрос в MySQL, представленный выше?
делай на category индекс и считай через count запросом в базу. поле category какой тип имеет?
Master812
6.12.2017 - 23:24
Цитата (depp @ 6.12.2017 - 22:52) |
делай на category индекс и считай через count запросом в базу. поле category какой тип имеет? |
Поле category имеет тип varchar(255). Индексы я уже сделал, но помогут ли они при миллионе новостей? Насколько я знаю в некоторых движках, например, в IPB используются текстовые файлы со счётчиками.
а много категорий? зачем varchar? может быть сделать таблицу с названиями категорий? а в текущую таблицу писать id категории.
а в таблице категорий добавь поле счетчик новостей. и при добавлении/удалении записи обновляй кол-во.
и насколько я знаю движок IPB - там все данные хранятся в базе. в файлах там только кэш скинов и файлов пользователей.
Цитата (Master812 @ 6.12.2017 - 22:24) |
в некоторых движках, например, в IPB используются текстовые файлы со счётчиками |
Не знаю где в ИПБ используются текстовые файлы.
Счетчики же сделаны в самой БД. Например, счетчик числа сообщений в топике сделан в таблице топиков: при добавлении нового сообщения в таблицу сообщений, одновременно счетчик увеличивается на единичку. Функции пересчета количества сообщений в топике используются только для модерации - например при удалении сообщений.
_____________
Бесплатному сыру в дырки не заглядывают...
Master812
7.12.2017 - 15:34
FatCat, я догадывался, что БД имеет встроенный счётчик количества записей в таблице. Но если нужно посчитать с учётом категорий, то ведутся ли такие счётчики? Например, новости в категории "Москва", категория "Питер" и т.п. Индексы на столбец "category" конечно же имеюся.
Цитата (Master812 @ 7.12.2017 - 14:34) |
если нужно посчитать с учётом категорий, то ведутся ли такие счётчики? |
Тоже счетчик в таблице категорий.
_____________
Бесплатному сыру в дырки не заглядывают...
Master812
7.12.2017 - 18:10
FatCat, то есть если создаешь индекс для категорий, то автоматом создаётся и счётчик для каждой категории? Она автоматом записывает сколько постов относится к категории "Москва" и при необходимости не пересчитывает а сразу выдает это значение?
Цитата (Master812 @ 7.12.2017 - 17:10) |
автоматом создаётся и счётчик для каждой категории? |
Автоматом ничего не создается; это предусматривается при проектировании БД и затем реализуется в скриптах движка.
_____________
Бесплатному сыру в дырки не заглядывают...
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.