Что такое хорошая модель, использующая Open IceCat для импорта данных и заполнения продуктов в базе данных каталога - PullRequest
2 голосов
/ 28 ноября 2011

Я работаю над созданием каталога продуктов, основанного на OpenIcecat (Icecat Open Catalog), и я ищу совета от кого-то, кто может иметь опыт работы с этим или, возможно, опыт работы с другой подобной службой (например, C-Net).

Мой вопрос: что является хорошей моделью для заполнения базы данных каталога продуктов?

Вот что у меня есть ...

  1. Я ПОЛУЧАЮКанал XML всего каталога
  2. Я извлекаю данные о продуктах, которые мне нужны, на основе идентификатора категории
  3. . Теперь я вставил все данные в таблицу, и теперь у меня естьтаблица для похожих «Принтер кошек», содержит URL-адрес изображений и идентификатор XML для каждого продукта в категории ... Достаточно просто

Здесь я сталкиваюсь с вопросом /беспокойство ... Я считаю, что легко заставить скрипт использовать запрос GET для каждого XML-файла и изображения ... и затем выгрузить их в каталоги, но Icecat НЕ хочет, чтобы вы копировали очень большие суммы.Мои категории содержат тысячи (более 40 тыс.) Товаров.

Мне кажется, мне нужно получить XML для продукта, получить изображение и сохранить его.Я чувствую это так, потому что это очевидное решение, и это то, о чем клиент постоянно просит ... но это не значит, что оно правильное.Итак, я мог бы проанализировать отдельный XML-файл для извлечения описания, SKU и т. Д. В таблицу, чтобы я мог создать каталог, например, для использования с Magento, последующего добавления / изменения и т. Д. По мере необходимости (цены, связанный продукт и т. Д.).) Кажется, достаточно просто, но после примерно 3-4 тыс. Запросов GET или около того я загружаюсь, потому что копирую много данных, как только у меня будет весь каталог (мой каталог нужных категорий), тогда будет достаточно легко получить обновлениефайлы (XML ... и маленький по сравнению) и вносите соответствующие изменения ... это было бы замечательно, но сначала нужно получить все данные и сначала построить таблицы продуктов.

Итак, вот что я пинаю ...

Одна идея - получать данные в режиме реального времени по мере необходимости, но это не желательно ни клиентом, ни мной.Клиенту нужен каталог, понятно ... и я замечаю, что в режиме реального времени добавляется снижение производительности, и он не подключается (легко) ко многим решениям.Но, развивая идею «реального времени» ... используйте GET в реальном времени XML-данных, а затем сохраняйте данные в том виде, в каком они есть, с некоторой логикой типа «если они не представлены локально ...Это;если он присутствует локально, тогда проверьте, является ли он актуальной информацией ... если не обновлять ее ... ... конечно, если я собираюсь проверить, актуальна ли она, тогда на самом деле нет смысла хранитьданные, потому что я делаю запрос каждый раз, несмотря ни на что ... может просто извлечь его и выбросить, что кажется неэффективным.

-или-

Может быть, всев режиме реального времени: продукты выбираются и отображаются в режиме реального времени, когда администратор просматривает продукты для манипулирования, они представлены в режиме реального времени и т. д. Всегда извлекают то, что нужно в реальном времени, на основе метаданных, находящихся в базе данных, которыебыл (уже) уже заполнен из "основного" файла каталога ... который описывает весь каталог, доступный от Icecat, но это не включает в себя многие решения и приведет к снижению производительности, плюс некоторые хосты вообще не позволят нам ПОЛУЧИТЬ... так много ограничений здесь, но звучит как потрясающее решение, чтобы быть уверенным, что у вас всегда есть супер текущая информация (которая здесь не нужна)

Вот где явроде уже во главе ...

У меня есть метаданные, основанные на основном каталоге (более 500 тыс. Элементов).Я уже заполнил таблицы, основанные на желаемых категориях ... теперь я как бы стремлюсь к следующему: создание приложения (инструмента), которое лучше уточнит, например, одну категорию, с которой я работаю.Затем создайте задание «используйте идентификатор категории и получите все XML-каналы» ... затем «используйте cat.ID (возможно, снова то же самое) и затем загрузите изображения» ... затем возьмите тот же Cat.Идентифицируйте и создавайте продукты, используя SKU, Desc., Имя файла изображения и т. Д., И создавайте каталог.На данный момент в рабочем процессе у меня есть вся информация и я могу использовать SKU (или что нужно), чтобы получить цену и т. Д. Из другого канала, манипулировать описаниями, переименовывать изображения, если это необходимо (SEO) или что-то подобное.

Тогда янужно будет построить модель для обновления цен и весов отгрузки из другого фида ... Synnex в этом случае, но кажется намного проще, потому что отгрузка и цена должны быть в режиме реального времени ... такая другая история и намного меньше данных одновременно,Я думаю только о том, что в корзине.

До сих пор не знаю, как это сделать. Возможно, другие создали такой же каталог для того же клиента, скопировав хранилище Icecat, но никогда не создавая и не предоставляяинструменты для будущих манипуляций и т.д ... вот куда я направляюсь.Кроме того, старый каталог очень старый / устаревший, и я никогда не видел «доказательств», что они действительно скопировали данные и создали каталог, а не полный набор.

ОК, чтобы помочь с путаницей ...

Источник, который я использую, имеет более 600 000 продуктов во многих категориях.Мне нужно только около 45 000 продуктов (более чем в нескольких категориях).Как так, загрузка каждого XML-файла занимает несколько часов, примерно 1000 в час (это мы знаем из прошлого опыта).

Отчасти проблема в том, что не все XML-файлы абсолютно одинаковы, и нам нужна разная информация из разных категорий.Эти требования, скорее всего, изменятся (возможно, поначалу больше).Так что я не могу просто иметь одну схему для хранения их всех.Как только 45 000 (или около того) файлов загружены, нам нужно только получить изменения / обновления в будущем.Поэтому я действительно пытаюсь создать локальный репозиторий только тех категорий, которые нам нужны, чтобы мы могли работать с ними более эффективно.Мы также не планируем сразу использовать связанные категории, поэтому я хочу, чтобы файлы локально использовались, когда мы вернемся, чтобы сделать это тоже.

Ответы [ 2 ]

2 голосов
/ 13 ноября 2012

вы когда-нибудь решали это? Если вы попытались установить http://sourceforge.net/projects/icecatpim/, это очень сложно для начала, но это позволяет вам загружать базу данных продукта в локальную базу данных mysql, как только у вас есть локальная база данных, вы можете написать скрипт cron для периодического обновления базы данных. по мере необходимости. Затем получите доступ к данным или манипулируйте ими с помощью собственной программы.

есть также этот проект, который может помочь http://code.google.com/p/icecat-import/ у него есть код для записи данных в локальную базу данных, он изначально был разработан для загрузки полной базы данных, но там не хватает многих данных.

Я опубликовал патч для версии базы данных innodb. http://sourceforge.net/tracker/?func=detail&aid=3578405&group_id=312187&atid=1314070 Надеюсь, это поможет. в базе данных есть много плохих ссылок, которые вы должны остерегаться,

Вот шпаргалка для проверки и установки ссылочной целостности БД.

//# is the db holding refrential integrity.
SELECT * FROM Aclass a LEFT JOIN Bclass b ON a.column=b.column WHERE b.column IS NULL;

//# Set NULL on update
UPDATE Aclass a LEFT JOIN Bclass b ON a.column=b.column SET a.column=NULL WHERE b.column   IS NULL; 

//# Cascade on delete 
DELETE FROM A WHERE id NOT IN (SELECT DISTINCT B.id FROM B);
0 голосов
/ 08 мая 2014

Никогда не видел такого сложного в установке приложения, как IcePIM.
Нашел скрипт php:

http://snipplr.com/view/33098/icecat-product-specifications-drawer/

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