Несколько источников данных: хранение данных и методы поиска
Я строю веб-сайт (вероятно, в Wordpress), который берет данные из разных источников для отображения на разных страницах.
Источники:
- Твиттер
- Лента Flickr
- База данных на удаленном сервере
- Локальная база данных
Из каждого источника я буду в основном получать
- Короткая строка, например, для Twitter, Tweet и из локальной базы данных заголовок страницы блога.
- Связанное изображение, если оно существует
- Ссылка, идентифицирующая контент в его источнике
Мой вопрос:
Каков наилучший способ а) хранить данные и б) извлекать данные
Мое мышление:
я) Напишите сценарий, который запускается каждые 2 или около того минут на задании cron
ii) скрипт извлекает данные из всех источников и сохраняет их в локальной базе данных
iii) код приложения может затем извлечь все данные из одного источника, локальной базы данных
Это должно упростить управление кодом приложения - мы всегда рисуем данные из одного источника в коде приложения - и это главное обращение. Но это слишком много для относительно небольшого сайта?
1 ответ
Я бы порекомендовал размещать ленту Twitter и Flickr в JavaScript. И Flickr, и Twitter имеют REST API. Разместив его на клиенте, вы освобождаете ресурсы на своем сервере, создаете меньшую сложность, ваши пользователи не будут ждать, пока ваш сервер извлечет данные, и вы можете позволить Твиттеру и Flickr кэшировать данные для вас.
Это предполагает, что вы знаете JavaScript. Как только вы преодолеете причуды JavaScript, это не плохой язык. Дайте Jquery попробовать. JQuery Twitter плагин Flickery JQuery плагин. Есть и другие, это только первые результаты от Google.
Что касается ваших данных на локальном сервере и удаленном сервере, это будет зависеть больше от данных, которые выбираются. Я бы пошел с тем, что вы можете разработать быстрее и дает приемлемые результаты. Если это означает выполнение REST-вызова с сервера на сервер, то сделайте это. Если удаленный сервер медленно отвечает, я бы использовал метод AJAX REST API.
А для локальной базы данных вам придется написать для этого код на стороне сервера, так что я бы сделал это в рамках Wordpress.
Надеюсь, это поможет.