Как осуществить сбор и хранение данных из апи бирж?

Надо снимать данные с апи десятка бирж, которые обновляются с регулярностью в 1 секунду, пытаюсь придумать, как это правильно сделать. Пока только такой вариант:

1) php класс мультикурл с вызовом каждую 1 минуту и получением данных со всех бирж за последнюю минуту

2) сохранение полученного в mysql одна строка - одна секунда - с данными об одной бирже

Проблема:
- Обновления слишком редкие (1 мин), но планировщик CRON не позволяет сделать 1 или 5 сек, только минуту..
- Хранение в mysql настораживает.. через месяц база будет гигов 10 и как с ней потом работать... может надо в файлах хранить?

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

Заранее благодарен за помощь.
  • Вопрос задан
  • 2492 просмотра
Пригласить эксперта
Ответы на вопрос 2
@portfelio
Если вам обязательно нужны костыли на РНР, то (люто приложено всяко будет) можно сделать так:

0) Вы можете использовать в РНР форк, но это будет адская пляска ;)

1.1) Ставите RabbitMQ, в него закидываете таски
1.2) В кроне запускаете Х скриптов, работающих в цикле, проверяющих наличие незавершенных для себя тасков. Выполняете эти таски.

Насчет базы.. Можно сделать отдельные базы под каждую площадку, можно выгружать устаревшие данные из базы в архив, можно использовать Riak или Hadoop. Вариантов применения и выбора СУБД очень много. Опеределиться нужно с данными: что это за биржи, зачем хранить данные трехмесячной давности и т.д.
Ответ написан
Комментировать
Mandor
@Mandor
Сохранять ли в БД или еще куда зависит от того, как вы эти данные собираетесь использовать. Например, можно сохранять в MySQL, но делить таблицы по месяцам (новый месяц - новая таблица), если нужны старые данные - добавляете в запрос нужное количество UNION'ов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы