Это старая версия документа!


Инвентаризация: DEV: Синхронизация

Механизм синхронихации между БД

Хорошо бы иметь общую БД таких объектов как

  • Производители
  • Написание производителей
  • Типы оборудования
  • Модели оборудования
  • ПО

Направление

  • Прием
  • передача
  • двусторонняя синхронизация

Создание/Обновление

  • Добавление новых
  • обновление существующих
  • добавление+обновление

Вопрос с удалением отсутствующих объектов

  • Вызываем какой-то консольный контроллер, передаем аргументами учетные данные от другой базы
  • Запрашиваем через API список объектов из другой базы
  • В зависимости от выставленных режимов
    • Добавляем/обновляем локальные
    • Добавляем/удаляем удаленные
  • При обновлении/добавлении нужно четко понимать что поля-ссылки нельзя передавать в исходном виде.
  • При необходимости надо понимать куда ссылается исходный объект и искать такой-же на второй системе
  • Учитывая необходимость исправлять ссылки на лету, логично все затолкать в один котроллер, чтобы в процессе синхронизации держать удаленные объекты разных типов в памяти, а не загружать постоянно

Нужно разрешить extend вложений в типах и моделях оборудования
При сравнении объектов дополнительно запрашивать сравнение сканов:

  • Выбираем дату самого свежего скана с обеих сторон - таким образом определяем направление обновления
  • Определив направление сравниваем сканы поименно с учетом размера и даты
  • При наличии различий - обновляем в нужном направлении

Возможно логичнее все сделать в виде внешнего ПО работающего через REST API, чтобы ограничиться работой с REST, а не делать часть задач через локальную БД
С другой стороны полезно встроить в саму инвентори с точки зрения добавления Моделей/Софта/Производителей на лету подтягивая из «облака» при необходимости

Для корректной простановки ссылок:
Грузим все объекты с одной стороны для понимания кто куда ссылается
Также согласно зависимостей их надо поселедовательно добавлять во вторую систему

Производители   Типы оборудования
 |      \    \    /

Написание ПО Модели оборудования

Как обнаруживать переименование объектов, например производителя
хз
типы оборудования по коду
Все остальное походу по имени
В случае получения в БД переименованного объекта и перестановки ссылок на него, старый должен оказаться не используемым и может быть удален (если не найден в источнике синхронизации)

  • инвентаризация/dev/синхронизация.1692683908.txt.gz
  • Последнее изменение: 2023/08/22 05:58
  • admin