Как отправить обновления базы данных? - PullRequest
3 голосов
/ 21 сентября 2010

У меня есть приложение Java (универсальное), которое использует базу данных через Hibernate. Я отправляю его через банку клиентам. Каков наилучший способ доставки обновлений базы данных (схемы и данных) клиентам? Учтите, что клиенты могут иметь разные версии моего приложения, и обновление должно быть автоматическим, без поддержки пользователя. А если приложение написано с граалями?

Ответы [ 4 ]

3 голосов
/ 21 сентября 2010

Вы можете сделать это, отслеживая текущую версию схемы (то есть номер редакции) и затем имея файл исправления, чтобы привести схему к следующей версии. Вы можете продолжать применять патчи постепенно, пока не достигнете новой версии prod / update.

например. Скажем, клиент на 5-й версии. С тех пор вы отправили 10-ю и 12-ю версии, но он обновляет только последнюю версию - 15.

Вы можете сделать:

foreach rev in [clientRev ... currentRev]:
   apply rev.patch

Итак, вы будете применять патч, чтобы довести до 10-й версии; затем еще один, чтобы привести его к 12-й версии; затем еще один, чтобы довести его до 15-й версии;

Если другой клиент уже на 12-й версии, ему нужно будет только применить последний патч.

2 голосов
/ 21 сентября 2010

Как говорит @ user779, сохранение каждого изменения в каком-либо формате - это путь. В документации Grails упоминается несколько библиотек, которые могут выполнять некоторую тяжелую работу: LiquiBase и DbMigrate .

0 голосов
/ 24 февраля 2011

Существует порт миграции рельсов на Java, называемый tapestry5-db-migrations (зависит только от tapestry5 ioc)

https://github.com/spreadthesource/tapestry5-db-migrations/

0 голосов
/ 21 сентября 2010

Вы можете отправлять миграции Ruby и Active Record в свой дистрибутив, и ваш обновитель будет выполнять новые миграции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...