Собирайте, управляйте данными и делайте их доступными через API - PullRequest
2 голосов
/ 13 октября 2011

Вот моя проблема: у меня много известных мест (я не имею на это никакого влияния) с большим количеством данных.Каждая локация предлагает мне в отдельные периоды много новых данных.Некоторые дают мне дифференциальные обновления, некоторые просто весь набор данных, некоторые через xml, для некоторых я должен создать webscrapper, некоторым нужна аутентификация и т.д ... Эти собранные данные должны храниться в базе данных.Мне нужно запрограммировать API для отправки запрошенных данных в xml обратно.

Многие дороги ведут в Рим, но какой мне выбрать?

Какое программное обеспечение вы бы мне предложили использовать?

Я знаком с C ++, C #, Java, PHP, MySQL, JS, но новые вещи все еще в порядке.

Моя идея состоит в том, чтобы использовать задания cron + php (или скрипт оболочки)+ завиток, чтобы получить данные.Затем мне нужен модуль для анализа и вставки данных в базу данных (MySQL).Запросы данных от клиентов могут ответить на php-скрипт.

Я думаю, что объем входных данных составляет около 1-5 ГБ / день.

Единого правильного ответа не существует, но вы можете дать мне несколько советов?Было бы здорово, если бы вы могли показать мне более умные способы сделать это.

Большое спасибо: -)

1 Ответ

1 голос
/ 01 ноября 2011

LAMP : придерживайтесь PHP и MySQL (и время от времени совершайте набеги на perl / python): доступность библиотек PHP, решений для хранения, масштабируемости и API-решений, а также размер сообщества хорошо подходят для любой другой средыпредложения.

API : Убедитесь, что разработанные запросы API (и хранилище / база данных) могут удовлетворить все потребности конечного продукта, прежде чем вы начнете писать какие-либо импортеры.Диапазоны дат, пометки, особые случаи.

PERFORMANCE : Если вам нужны молниеносные запросы для безумно больших наборов данных, sphinx-search может помочь.Он имеет больше, чем просто текстовый поиск (теги, двоичные файлы и т. Д.), Но убедитесь, что вы задаете требования к серверу с большим объемом оперативной памяти.

IMPORTER : сделайте его модульным: как в, для каждого отдельногоисточник данных, напишите подключаемый импортер, который может быть включен / отключен администратором и, конечно, индивидуально протестирован.Выберите язык и библиотеку, основываясь на том, что лучше всего подходит для работы: bash-скрипт вполне подходит.

С точки зрения синтаксического анализа библиотек на PHP их много.Один из последних популярных - simplehtmldom , и я обнаружил, что он работает достаточно хорошо.

TRANSFORMER : Сделайте подпрограммы преобразования данных также модульными, чтобы их можно было записать какнеобходимость возникает.Не заставляйте импортера изменять исходные данные, просто сделайте его максимально быстрым в индексированной базе данных.Процедуры преобразования (или более поздние плагины) должны быть объединены с запросом API для любого конечного результата.

TIMING : Нет ничего плохого в выполнении cron, если они не сбежали илиЗаставьте ваши источники входного сигнала задушить или заблокировать вас, поэтому вам необходимо это понимание.

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

Поставщик решений : Ознакомьтесь с scraperwiki - они сделали бизнес из инструментов очистки и хранения данных.

Надеюсь, это поможет.Из любопытства, какие-либо детали проекта, чтобы добровольно?Мой коллега заинтересован в обмене заметками.

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