Задать вопрос
MSerhio
@MSerhio
Вхожу в IT

Как правильно построить взаимодействие своей «внутренней» базы товаров с движком интернет-магазина?

Здравствуйте.
Подскажите, пожалуйста, как правильно построить взаимодействие своей "внутренней" базы, хранящей данные по товарам, с движком интернет-магазина, в котором эти товары продаются?
Начиналось (и сейчас продолжается) так: у владельца бизнеса есть гуглодока, в нескольких таблицах которой хранится весь каталог. Таблицы все устроены по-разному, единообразия нет.
Когда каталог обновляется, он экспортит эти таблицы в xlsx и присылает мне -> я выгружаю из движка интернет-магазина текущий каталог в csv -> загоняю в Excel, вручную правлю -> загружаю назад.
Это довольно больно, но, пока товарных позиций было немного, было терпимо. Теперь и каталог больше, и вторая площадка открывается. В самом движке, конечно, есть возможность настраивать карточки товаров, но делать это массово больше одного раза очень неудобно.
Думается, что должно быть так: товары хранятся не в таблицах, а в единой БД. Когда владелец бизнеса что-то там меняет, эти изменения автоматически распространяются в каталоги интернет-магазинов.
Как такое делают?
Спасибо!
  • Вопрос задан
  • 268 просмотров
Подписаться 2 Средний 3 комментария
Пригласить эксперта
Ответы на вопрос 3
@quad69
Думается, что должно быть так: товары хранятся не в таблицах, а в единой БД. Когда владелец бизнеса что-то там меняет, эти изменения автоматически распространяются в каталоги интернет-магазинов.
Как такое делают?


А в чём сложность? Ставите тот же Mysql, складываете в него товары, потом подключаетесь, берёте данные и выводите.
Ответ написан
@mletov
Проблема тут не столько программистская, сколько организационная.
И главный ключевой вопрос тут в том: на какие трудозатраты со своей стороны готов владелец бизнеса.

Когда каталог обновляется, он экспортит эти таблицы в xlsx и присылает мне -> я выгружаю из движка интернет-магазина текущий каталог в csv -> загоняю в Excel, вручную правлю -> загружаю назад.


Вот это, с точки зрения автоматизации, никуда не годится. И логично посадить девочку, которая будет через веб-интерфейс вбивать товары в базу прямо в админку магазина. А уже из одного магазина можно полностью или частично экспортировать товары в другой, особенно, если это Битрикс какой-нибудь, в котором уже есть готовый XML формат. Или часть экспортировать, часть забить руками через админку другого магазина. В общем, варианты и простор для творчества есть.

Но может владелец бизнеса эту эксельку еще где-то использует или просто принципиально не готов менять подходы со своей стороны, осваивать веб-интерфейс не захочет, "я всю жизнь через Excel делал, переучиваться не хочу".

Еще есть вариант, что эту Excel заказчик формирует из 1C, тогда логично разобраться с импортом из него прямо в базу магазинов.

В общем, я бы поговорил с заказчиком, обсудил варианты и выяснил возможности.
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Значит имеет место некий pipeline который работает в 3 фазы.

1) Скачивание из гугло-таблиц в файлы. Здесь я предполагаю что у нас есть full-structured данные xlsx
Тоесть таблицы и фиксированная шапка.

2) Конверсия xlsx-csv. Ну здесь как-бы все понятно. Это можно сделать локально уже без веба.

3) Загрузка (или merge) данных из CSV в реляционную базу данных.

Мне кажется что интересно обсуждать только пункт (3). Потому что первый и второй - это просто задачи скачивания и конверсии без изменений. Задача чисто техническая и любой "школьник-парсильщик" это делает.
Чисто утилитарная задача.

Обсуждать одновременно сразу 3 пункта - это безсмысленный флуд. Слишком много неизвестных. Поэтому лучше вот в таком вот виде когда контракт понятен.

Если в какой-то момент (например фазы 1-2) схема может быть изменена или сломана - то это надо тоже обсуждать как ветки алгоритма загрузки. Как грузить.

Что делать если новая колонка зашла?
Что делать если колонка изменила тип? Был int. Стал - string.
Что делать если колонка дропнулась? Удалять ли в БД.
Что делать если schema evolution нарушается. Был string, и пошел int. Это сужает возможности загрузки.

Вот эти все вопросы надо ответить до разработки.

UPD:
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы