#django #scrapy
#django #scrapy
Вопрос:
Я знаю несколько способов, подобных scrapy-djangoitem
, но, как уже упоминалось:
DjangoItem — довольно удобный способ интеграции проектов Scrapy с моделями Django, но имейте в виду, что Django ORM может плохо масштабироваться, если вы очищаете много элементов (т. Е. Миллионы) с помощью Scrapy. Это связано с тем, что реляционный серверный сервер часто не является хорошим выбором для приложений с интенсивной записью (таких как веб-сканер), особенно если база данных сильно нормализована и имеет много индексов.
Итак, каков наилучший способ использования очищенных элементов в моделях db и django?
Ответ №1:
Речь идет не о Django ORM, а скорее о базе данных, которую вы выбираете в качестве серверной части. В нем говорится, что если вы ожидаете записать миллионы элементов в свои таблицы, системы реляционных баз данных могут быть здесь не лучшим выбором (MySQL, Postgres …), и это может быть еще хуже с точки зрения производительности, если вы добавите много показателей, поскольку ваше приложение требует записи (база данных должна обновлятьсяB-деревья или другие структуры для сохранения индекса при каждой записи).
Я бы посоветовал пока придерживаться Postgres или MySQL и искать другое решение, если у вас начнутся проблемы с производительностью на уровне базы данных.
Комментарии:
1. Спасибо, я подумал, что речь идет о слабости в отношениях Django / Scrapy.
2. Абсолютно. Также помните, что у большинства пауков узким местом является не скорость записи, а скорость сети в большинстве случаев. Очень быстрый паук может выводить 50-100 элементов в секунду, с чем большинство БД прекрасно справляются. Если у вас нет 100 похожих пауков, работающих одновременно, принимая это число до 10 000 элементов в секунду, вы должны быть на 100% в порядке с mysql или postgres.