Я пытаюсь найти решение, чтобы иметь какой-то конвейер миграции данных в моей среде непрерывного развертывания.Пример того, как хранятся данные, будет выглядеть следующим образом для следующего интерфейса:
public interface IEntity
{
String getName();
List<ISubEntity> getSubEntities();
}
public interface ISubEntity
{
String getSomething();
}
Значение полезной нагрузки в моей базе данных для этого объекта:
{"name":"SomeName","subEntities":[{"something":"SomeSomething"}]}
Так что, если кто-то удалитили переименовать метод, я также хотел бы обновить данные в базе данных.
То, что мы имеем сейчас в плане развертывания (вкратце), выглядит примерно так:
Сборка проекта -> Запустите 2-ю сборку, чтобы запустить несколько тестов, и поместить приложение в образ докера. -> Воссоздать модули k8s для запуска последнего образа.
Я подумал, что мог бы создать другой репозиторий для обработки миграции данных и включить егов процессе развертывания так же, как мы помещаем приложение в образ докера.Здесь я бы использовал JGit, чтобы найти изменения в моих сущностях и создать какое-то отображение, например:
{
"changedEntity": "IEntity",
"deletedProperties": [
"subEntities"
],
"addedProperties": [
{
"name": "exoticName",
"type": "String",
"defaultValue": null
}
],
"changedProperties": [
{
"name": "name",
"type": "SomeEnum",
"defaultValue": "DEFAULT"
}
]
}
Тогда я подумал, что могу получить записи в базе данных, использовать отображение для создания новых данных и обновленияЭто.Оберните это в образ докера, чтобы его могли использовать другие пользователи, использующие те же данные, и запустите его на моей установке K8s.
Моя главная задача - как создать собственное отображение, сработает ли JGit?Будет ли лучший способ применения сопоставления в базе данных?Любые материалы или ссылки будут оценены.
Спасибо