Реализация Черного списка

  • Автор темы Автор темы Tsuk15
  • Дата начала Дата начала

Tsuk15

Client
Регистрация
25.04.2017
Сообщения
102
Реакции
40
Баллы
28
Всем привет. Несколько месяцев назад начал осваивать базы данных. После того как я перенес все типовые действия со списками в базу данных, я увидел насколько списки тормозили работу зенки. Единственное действие, которое я еще не перенес - это черные списки.
Например у меня есть шаблон, который должен постоянно парсить юзеров со страницы сайта и находить новых(тут как раз и нужно проверять, есть ли данный юзер в ЧС), отправлять им сообщение и добавлять в черный список. Как такую логику организовать с БД? Конечно первое, что приходит на ум, это создать таблицу-черный список, куда добавлять всех отработанных юзеров. Потом через запрос
Код:
Развернуть Свернуть Копировать
SELECT * FROM base WHERE user='blackusername';
проверять наличие данного юзера в таблице. Если ответ пустой, то юзра нет в ЧС. Но такой запрос занимает относительно много времени, особенно если база большая. И вроде как такой запрос в принципе не очень корректный. Можно сделать индекс на столбец user, но правильно ли это? Мне почему-то кажется, что при такой работе шаблон будет работать не лучше чем если тоже самое делать со списком. Кто как решает эту задачу? Может быть я слишком много загоняюсь или от недостатка знаний пытаюсь применить логику списков к БД?:ca:
 
SELECT t1.uid FROM base t1 LEFT JOIN blacklist t2 ON t1.uid=t2.uid WHERE t2.uid IS NULL
выберет из таблицы base все uid не содержащиеся в таблице blacklist
дальше думаю разберетесь
 
SELECT t1.uid FROM base t1 LEFT JOIN blacklist t2 ON t1.uid=t2.uid WHERE t2.uid IS NULL
выберет из таблицы base все uid не содержащиеся в таблице blacklist
дальше думаю разберетесь
на крупных таблицах left join у меня работает очень долго
 
если юзать апи в работе с зеной вместо бд? джет пост запрос получил, сохранил. как будет это вообще? или все таки воспользоваться лучше бд.
 
Не очень понял задачу, если это просто черный список - поле user сделать unique, работать будет очень быстро. Так же вместо MySQL использовать любое key value хранилище, скорость тоже будет отличной.
 
  • Спасибо
Реакции: Tsuk15 и Astraport
Не очень понял задачу, если это просто черный список - поле user сделать unique, работать будет очень быстро. Так же вместо MySQL использовать любое key value хранилище, скорость тоже будет отличной.
Спасибо, об этом не знал
 
об этом не знал
Вариаций очень много, даже файловый вариант в некоторых случаях подходит. Создаем текстовый файл с данными, например логи работы, проверка на существование в папке проходит достаточно быстро.
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)