Ниже приведен сценарий и некоторые предлагаемые решения. Есть ли лучшие решения?Масштабирование системы, связанной с базой данных?
Существует система A, которая должна «анализировать» множество URL-адресов. Другая система B генерирует эти URL-адреса - в настоящее время их насчитывается около 10 миллионов в базе данных. Пример схемы:
id URL has_extracted
1 abc.com 0
2 bit.ly 1
Мои решения заключаются в следующем:
Наивное решение: Есть Perl скрипт/процесс, который питает URL (из базы данных) в системе B и обновляет has_extracted столбец Проблема с этим подходом заключается в том, что он плохо масштабируется.
Решение 2: Разбить базу данных на пять (или n) таблиц. (Я планирую удалить has_extracted колонки, потому что кажется такой масштабируемостью узкость в этом сценарии.)
Решения 3: Удалите has_extracted колонки Создайте другую таблицу, которая поддерживает/отслеживает последний URL отслеживаемого каждым обработать.
Критические запросы/Предлагаемые решения. Заранее спасибо.
10 миллионов - это арахис. Легко вписывается в ОЗУ. – MSalters
Какие доказательства вы используете, чтобы решить, что база данных является узким местом? – APC
MSalters - Я никогда не говорил, что он не поместится в ОЗУ. Вы предлагаете мне прочитать все эти URL-адреса в памяти. Если да, то каким образом я могу поддерживать состояние данного URL-адреса - что он был проанализирован. –