вторник, 31 мая 2011 г.

Project Kaiser: Derby, H2 и MySQL

По-умолчанию для новых инсталляций в Project Kaiser создается БД Derby. Опыт показал, что по мере роста проектов и увеличении нагрузки, начинает ощущаться замедление, порой весьма существенное. При этом на базах MySQL и MSSQL все работает на ура (это не касается небольших проектов, где разница почти незаметна). Да, Derby выигрывает тем, что развертывается быстро и не требует установки дополнительного ПО, поэтому она и была выбрана для настроек по-умолчанию. В новой версии мы решили что-то менять, в итоге придя к мнению, что H2 послужит прекрасной заменой (тесты показали, что H2 не испытвает таких проблем). Так что начиная с версии 6 базы Project Kaiser создаются в формате H2.

Ну и, наконец, теперь можно переносить базы из одного формата в другой. Для этого в версии 6.0 мы добавили функции по экспорту/импорту базы данных. Причем экспортируется не только данные БД (в переносимом формате), но и вложения, и даже настройки сервера. Экспорт можно сделать в любой момент, его удобно использовать также для резервного копирования. В последствии мы, возможно, добавим возможность резервного копирования по расписанию.

Таким образом, перенос БД с Derby на MySQL будет выглядеть примерно так. Сначала делаем резервную копию:

1. Входим пользователем Admin, в разделе "Администрирование" открываем "Конфигурация сервера / панель администратора"

2. На странице настроек видим кнопку "Make DB Backup", которую нажимаем:
После этого указываем путь, к создаваемому файлу резервной копии:
После нажатия "Next" программа немного пошуршит и выдаст сообщение что Backup Complete.

Далее нужно удалить старую БД Derby (про то, как это сделать можно почитать здесь) и вместо нее создать новую MySQL. При создании новой базы нужно указать, что данные необходимо взять из резервной копии:
Один совет. Перед тем, как удалять старую БД, проверьте на другом компьютере, что резервная копия восстанавливается без проблем.
И еще: восстанавливать базу из резервной копии можно только на той же версии программы, на которой эта резервная копия сделана.