Задать вопрос
  • Как лучше хранить журнал в долгосрочной перспективе?

    BumblingBee
    @BumblingBee
    Во всем по немногу диванный эксперт
    Лучше всего использовать для хранения логов отдельную БД,предназначенную для этих целей, иначе вы рискнуете очень быстро получить ситуцию, когда таблица с логами будет занимать больше места на диске, чем все остальные таблицы с бизнес данными, вместе взятые. Это неминуемо приведет к проблемам с администрированием такой базы, бэкапы станут больше по размеру, будут делаться дольше и т.д.

    В качестве БД для логов лучше всего использовать Click House - базу от Яндекс. Она отлично для этих целей подходит и невероятно хорошо сжимает данные, т.е. помимо всего прочего, еще и на диске эти данные будут не много места занимать. Также вы можете с Click House настроить полтики хранения данных, например указать что данные в таблице лога должны храниться 5 лет, и CH будет сам их чистить.

    Нужно также учесть, что если вы хотите сделать хранение лога транзакционным, т.е. гарантировать, что не будет ситуации, когда у вас бизнес данные поменялись, а при запили в лог упала ошибка, и данные не были залогированы, то нужно вести запись в CH в два этапа. Нужно продублировать таблицу для ведения лога в вашей транзакционной БД, и писать в нее информацию о действиях пользователей в одной транзакции с изменением бизнес данных. Далее нужно реализовать джобу, которая в фоне например по расписанию, или иным образом, будет скидывать данные из лог таблицы в транзакционной БД в таблицу ClickHouse, затем удалять данные в лог таблице транзакцонной БД, только после их успешного переноса в CH. Таким образом таблица с логами в транзакционной БД всегда будет маленького размера.

    См. также паттерн Transactional Outbox
    Ответ написан
    Комментировать
  • Обработка прайсов?

    BumblingBee
    @BumblingBee
    Во всем по немногу диванный эксперт
    Для одного заказчика делали сайт на OpenCart. Для автоматизации работы с прайсами он использовал сервис Shop Manager - делают ребята из Беларуси.

    Работала схема таким образом (полностью онлайн):

    1. отдавали в Shop Manager наш ассортимент товаров в виде YML ссылки

    2. в личнои кабинете Shop Manager автоматически скачивались прайс листы поставщиков из разных источников (почта, гугл диск и прочее по расписнаию), там-же осуществлялась привязка товаров из прайсов к товарам сайта, и там-же настраивались правила формирования розничных цен.

    3. далее поставили их модуль на сайт, который автоматически обновлял розничные цены и наличие товаров на Open Cart, как только у поставщиков в прайсах менялись оптовые цены или наличие.

    Там у них и для других движков сайтов есть кажется интеграции.

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