72 похожих чатов

Всем привет. Есть задача агрегации товарных позиций из прайс листов

(это прайс-листы автозапчастей).

Например есть 10 поставщиков. Они предоставляют таблички с полями производитель и модель каждый день (к примеру, но вообще там разное время обновления). И вот у всех поставщиков может быть та же деталь правда с другими ценами/другими полями.

Мне нужно отдавать клиенту актуальное состояние. А для этого нужно понять как это всё хранить и обрабатывать.

Сначала я думал хранить в реляционной бд кортежи с композитным ключом из полей поставщик, производитель, модель. Вот например пришёл прайс лист, мы по композитному ключу сделали апдейт/апсерт. Но тут возникает проблема, а что если поставщик удалит какой-то товар?

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

Потом подумал в сторону документных БД, и с каждой обновой тупо удалять все вложенные товары по производителю и вносить все новые. Но это скорее всего плохо и ненадёжно (особенно учитвая лимит на 16МБ документа в монгоДБ).

В общем поделитесь опытом, уверен у кого-то были подобные задачи. Хочется хранить актуальные данные по товарам, с возможностью определения дубликатов позиций у других поставщиков и учётом этого. Извините за долгую простыню и нескладное описание, я старался написать как можно лучше)

4 ответов

11 просмотров

> Но тут возникает проблема, а что если поставщик удалит какой-то товар? Ну так поступите с этим товаром так, как нужно в модели (удалите или сделайте поле с timestampt внесения). А выбирать только из-за этого NoSQL — это безумие, IMHO. ;)

"Дальше я подумал" -- это очень хорошо, это ключевые слова для правильного подхода к решению проблемы. От нас только не жди это решение

Хранить в реляционной БД - да. Что, если удалит - ну, так надо просто тоже удалять, или помечать что удаленно. Создавать отдельную таблицу каждые три дня -нет, не нужно. Документальные БД - нет , не нужно. Делай на реляционных.

Вставлю и свои 5 копеек. Задачу можно решить на любой модели данных (реляционной или nosql или графовой или еще какой) тут только вопрос как будет удобно конкретно вам, переделать вы всегда успеете. В любом случае вам прийдется обучаться по ходу дела. То ли пониманию и управлению реляционной моделью и соответственно базой данных. То ли впринципе архитектуре добавления, изменения и удаления ваших данных. От себя могу добавить только то, что прайс листы от ваших партнеров это одни данные и имеют свой вид у каждого конкретного. А у вас эти данные будут уже иметь другой вид и как вы их будете перегонять из одного вида в другой - зависит от ваших знаний и умений и от кучи других параметров, а т.к. у вас это впервые, то можно поступить проще для вас, потому что сроки, или же по best practice, но тогда это будет дольше по срокам. Данные которые вы будете показывать клиентам это еще один вид данных и выглядеть будут иначе, т.е. их преобразование из ваших данных это тоже отдельная история и тоже нужно учитывать кучу параметров - сроки разработки, бюджет на сервера, бюджет на дбс и т.д. P.s. если бы делал я, то это была бы реляционная модель по первой (т.е. в первой версии, пока мало что известно) просто потому, что где с оптимизировать - потом станет ясно из уже работающего прототипа и все узкие места тоже будут известны. А вместе с реляционной моделью использовал еще какой-то кэш. P.p.s. может вам стоит еще глянуть в сторону заказать консультацию дба, который вам поможет в нелегком решении 😏

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

Обсуждают сегодня

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта