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


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

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

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

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

Направление

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

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

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

инвентаризация:dev:sync.png

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

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

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

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

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

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

В процессе перепривязывания ссылок можно обнаруживать ссылки на какие объекты были отвязаны
Потом перепровеврить все отвязанные объекты на предмет допустимости удаления, если отвязанный объект осиротел - удаляем

  • инвентаризация/dev/синхронизация.1693137664.txt.gz
  • Последнее изменение: 2023/08/27 12:01
  • admin