Стратегия Python для крупномасштабного анализа (на лету или с отсрочкой) - PullRequest
1 голос
/ 30 сентября 2011

Для анализа большого количества веб-сайтов или финансовых данных и получения параметрических данных, каковы оптимальные стратегии?

Я классифицирую следующие стратегии как «на лету» или «отложенный». Что лучше?

  1. На лету : обработка данных на лету и сохранение параметрических данных в базе данных
  2. Отложено : сохранить все исходные данные как ASCII в файловой системе и выполнить последующую обработку или с помощью обработчика данных-данных
  3. Отложено : сохранить все страницы в виде BLOB в базе данных для последующей обработки позже или с помощью обработчика данных-данных

Номер 1 самый простой, особенно если у вас только один сервер. Могут ли # 2 или # 3 быть более эффективными с одним сервером, или вы видите мощность только с несколькими серверами?

Существуют ли какие-либо проекты на Python, которые уже ориентированы на такой анализ?

Редактировать: под лучшим я подразумеваю самое быстрое выполнение, чтобы пользователь не мог ждать с легкостью программирования в качестве вторичного

Ответы [ 2 ]

2 голосов
/ 03 октября 2011

Во-первых: «самое быстрое выполнение для предотвращения ожидания пользователя» означает некоторую отложенную обработку.Как только вы решите отложить обработку (чтобы пользователь ее не увидел), выбор между простым файлом и базой данных по существу не имеет отношения к времени ожидания конечного пользователя.

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

Сохраните все исходные данные как ASCII в файловую систему и выполните последующую обработку или с помощью обработчика данных-данных

Это самый быстрый способ.Сельдерей для загрузки плоских файлов.

2 голосов
/ 30 сентября 2011

Я бы использовал сельдерей на одной или на нескольких машинах со стратегией «на лету».У вас может быть Задача агрегации, которая извлекает данные, и Задача процесса, которая анализирует их и сохраняет их в БД.Это очень масштабируемый подход, и вы можете настроить его в соответствии со своими вычислительными возможностями.

Стратегия «на лету» более эффективна в том смысле, что вы обрабатываете данные за один проход.Два других включают в себя дополнительный шаг: повторно получить данные с того места, где вы их сохранили, и обработать их после этого.

Конечно, все зависит от характера ваших данных и способа их обработки.Если фаза процесса медленнее агрегации, стратегия «на лету» зависнет и будет ждать завершения обработки.Но опять же, вы можете настроить сельдерей на асинхронность и продолжить агрегирование, пока есть данные, которые еще не обработаны.

...