Подходящая архитектура / язык для базы данных активности sclabale twitter / facebook / myspace - PullRequest
0 голосов
/ 11 августа 2010

Краткое вступление

Я построил систему, которая запрашивает статистику из API социальной сети для 1000 различных предметов каждые 20 минут. Поэтому я звоню в каждую социальную сеть по каждому предмету. Это означает, что я делаю 1000 запросов HTTP для каждого 20-минутного интервала. Затем результаты обрабатываются в отдельной задаче.

Текущее решение

Я запускаю php из командной строки, периодически вызываясь из супервизора. Затем данные сохраняются в Mysql.

Множество вопросов!

Поскольку php не может использовать многопоточность или использовать асинхронные http-запросы, сценарии API требуют много времени для извлечения данных из социальных сетей по одному соединению за раз.

Поскольку моя модель данных для "субъектов" усложняется, мне может понадобиться объединить таблицы, а также иметь несколько серверов.

Future

Добавляется все больше и больше предметов, инструментов анализа с большим количеством перебора чисел.

Мне было бы очень интересно услышать, что другие люди используют с таким доменом. Например. инструменты платформы / языка / библиотеки / базы данных / демона и т. д.

John

1 Ответ

0 голосов
/ 11 августа 2010

Я построил систему, которая запрашивает статистику из API социальной сети для 1000 различных предметов каждые 20 минут. Поэтому я звоню в каждую социальную сеть по каждому предмету. Это означает, что я делаю 1000 запросов HTTP для каждого 20-минутного интервала. Затем результаты обрабатываются в отдельной задаче.

Первая проблема здесь - вы проводите опрос на основе предмета независимо от того, был ли этот предмет обновлен в интервале. Возможно, вам будет гораздо эффективнее опросить новые статьи со времени последнего опроса и отфильтровать интересующий вас материал.

Поскольку php не может работать с несколькими потоками

Почему вы считаете, что вам нужна многопоточность для запуска более одного экземпляра php-скрипта? Определите общее хранилище данных, содержащее подробную информацию о том, какую работу необходимо выполнить, и способ распределения запросов по предпочтительному количеству экземпляров и напишите сценарий, который запускает это число экземпляров, передавая идентификатор раздела каждому.

или использовать асинхронные http-запросы

Расширение cURL.

Возможно, мне нужно присоединиться к таблицам

! О, МОЙ БОГ ! Вы должны быть своего рода компьютерным гением! Могу ли я купить акции вашей компании!

Серьезно - "объединение таблиц" не имеет никакого отношения к решению проблем, которые вы описали. «Несколько серверов» ничего не сделают, чтобы решить ваши проблемы со сложностью данных (но помогут с реальными проблемами производительности).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...