Python, пилоны и Sqlalchemy: анализ Facebook Graph API

#python #database #algorithm #facebook #sqlalchemy

#python #База данных #алгоритм #Facebook #sqlalchemy

Вопрос:

Я хотел бы взять данные из Facebook Graph API и проанализировать их, чтобы примерно выяснить, насколько близок один человек к другому. Я пытаюсь использовать платформу Pylons с SQLAlchemy (прямо сейчас она подключена к базе данных SQLite) для хранения информации из Graph API, чтобы я мог сделать ее доступной для других моих приложений через веб-службу RESTful. Мне интересно, каков был бы наилучший подход к анализу данных.

Например, должен ли я создавать объекты, аналогичные узлам и ребрам в Graph API (пользователи, записи, статусы и т.д.) и анализировать их, А затем сохранять в базе данных только результаты этого анализа, возможно, UID каждого узла и его соединений с другими узлами? Или я должен хранить еще меньше и иметь только базу данных пользователей и их близких друзей? Или я должен пройти шаг за шагом и сохранить каждый из объектов через ORM mapper в базе данных и выполнить анализ из базы данных после ее заполнения?

Какие проблемы возникают при проектировании базы данных в подобных ситуациях? Как объекты должны соотноситься / отображаться с моделью? Где должен выполняться анализ в течение всего процесса сбора данных и их хранения?

Ответ №1:

Я бы сохранил как можно больше, сбросил все, что можно. Постарайтесь поддерживать связи между узлами, чтобы вы могли просматривать / анализировать их позже. Это дает вам возможность анализировать ваш набор данных столько, сколько вы хотите, снова и снова и пробовать разные вещи. Если вы хотите использовать SQLAlchemy, вы могли бы использовать простую самореферентную связь:http://www.sqlalchemy.org/docs/05/mappers.html#adjacency-list-relationships . Таким образом, вы можете легко поддерживать соединения между объектами и легко перемещаться по ним. Вам также следует подумать об использовании MongoDB. Это довольно удобно для такого рода вещей, вы можете в значительной степени просто сбрасывать ответы JSON, которые вы получаете от Facebook, в MongoDB. У него также есть отличный клиент Python. Вот документы MongoDB по хранению дерева в MongoDB:http://www.mongodb.org/display/DOCS/Trees in MongoDB . Есть пара подходов, которые имеют смысл здесь.