В настоящее время я пишу веб-искатель (используя структуру python scrapy).
Недавно мне пришлось реализовать систему паузы/возобновления.
Решение, которое я реализовал, имеет простейший вид и, в основном, хранит ссылки, когда они планируются, и отмечает их как «обработанных», как только они есть на самом деле.
Таким образом, я могу получить эти ссылки (очевидно, что есть немного больше хранимых данных, чем просто URL-адрес, значение глубины, домен, к которому принадлежит ссылка, и т. Д.) При возобновлении паука, и до сих пор все работает Что ж.Самый оптимизированный способ хранения состояний гусениц?
Прямо сейчас, я только что использовал таблицу mysql для обработки этих действий хранения, в основном для быстрого прототипирования.
Теперь я хотел бы знать, как я мог бы оптимизировать это, так как считаю, что база данных не должна быть единственным вариантом, доступным здесь. Оптимизируя, я имею в виду, используя очень простую и легкую систему, все еще имея возможность обрабатывать большое количество данных, написанных за короткое время
На данный момент он должен иметь возможность обрабатывать сканирование для нескольких десятков доменов , что означает хранение несколько тысяч ссылок в секунду ...
заранее спасибо за предложения
десятки сайтов, сканированных параллельно, но мне нужно будет отслеживать все выполненные в прошлом задания сканирования. Я думаю, – Sylvain
также, если записывать последовательно в файл, как Ссылка «flag» как загружена? – Sylvain
@Sylvain, то вам определенно нужно периодически «сбрасывать» внешний вид «установить» в более устойчивую форму поиска, а Berkeley DB может или не может плавно масштабироваться до миллионов или миллиардов ... вы будете нужно проверить, но я подозреваю, что PostgreSQL (или какой-то амбициозный нереляционный ключ/хранилище значений, но у меня мало опыта тех, кто помимо собственного Bigtable Google) действительно будет вашим лучшим подходом, если ваш масштаб будет достаточно гигантским.Ключевым моментом является то, что вам не нужно постоянно обновлять эту БД - используйте память и журналы, чтобы обновления БД были «раз в то время»! –