Хранение мультимедийных RSS и iTunes подкастов RSS-каналов в базе данных - PullRequest
0 голосов
/ 03 февраля 2011

Я хочу иметь возможность хранить медиа RSS и iTunes подкаст RSS-каналы в базе данных.Здесь необходимо, чтобы я не хотел пропустить ЛЮБОЙ элемент или его атрибуты в ленте.Было бы целесообразно найти все наиболее распространенные элементы в ленте и сохранить их в базе данных в виде отдельных столбцов.Загвоздка в том, что могут быть кормовые элементы, которые могут быть нестандартными.Я тоже хочу их поймать.Так как я не знаю, что они могут быть, у меня не будет отдельной колонки для них.

В настоящее время у меня есть 2 таблицы, которые называются feeds и feed_entries.Для тегов RSS 2.0, таких как вложения, категории, у меня есть отдельные таблицы, которые связаны с feeds / feed_entries.Я использую feedzirra для разбора каналов.Feedzirra требует, чтобы мы знали элементы в фиде, который мы хотим проанализировать, и, следовательно, мы не знали бы, содержит ли фид элементы, выходящие за рамки того, что фидзирра может понять.

Как лучше всего хранить эти фиды вбазы данных и не пропустить ни единого бита информации?(Сброс всего потока в базу данных не будет работать, так как мы хотим запросить большинство атрибутов).Какой парсер подойдет лучше всего?Feedzirra был выбран для производительности, однако получение всех данных из ленты в базу данных является приоритетом.

Обновление

Я использую MySQL в качестве базы данных.

Ответы [ 2 ]

1 голос
/ 03 февраля 2011

Я также смоделировал свою базу данных на фидах и записях и сопоставил поля для RSS, RDF и Atom, чтобы в качестве отправной точки я мог получить необходимые поля данных.Затем я добавил несколько других тегов и свои собственные внутренние сводки канала, а также несколько полей для ведения и обслуживания.

Если вы переходите из Feedzirra, я бы рекомендовал временно сохранить фактический XML-канал в промежуточной таблице, чтобы вы могли обработать его, используя Nokogiri на досуге.Таким образом, ваш HTTP-процесс не затягивается при обработке текста, он просто извлекает содержимое и хранит его, а также обновляет записи для времени обработки, чтобы вы знали, когда нужно проверять снова.Последующий процесс может извлечь нужную информацию о фиде из сохраненного XML для хранения в базе данных, а затем удалить запись.Это означает, что один процесс периодически вытягивает каналы так быстро, как только может, а другой - в основном выполняется в фоновом режиме.

Кроме того, оба Typhoeus / Hydra и HTTPClient может прекрасно обрабатывать несколько HTTP-запросов и прост в настройке.

0 голосов
/ 03 февраля 2011

Храните XML как CLOB, большинство баз данных имеют расширения обработки XML, которые позволяют включать запросы типа XPath как часть инструкции SELECT.

В противном случае, если ваша СУБД не поддерживает запросы XML, используйте реализацию языка XPath для запросов к CLOB. Возможно, вам понадобится извлечь определенные элементы в столбцы таблицы для быстрого запроса.

...