1

Я использую Spring MVC 3.2 Embedded database (H2) Поддержка хранения в режиме реального времени выполнения задач, уведомлений о очередности и некоторых временных журналов. Единственная проблема с этим утверждением заключается в том, что мои данные исчезли; Если повторное развертывание приложения или перезагрузка сервера. Этот сценарий, вероятно, очень редок в рабочей среде, но все же я хочу знать, что использование встроенных баз данных в производственной среде является хорошим выбором или нет? .. Или существует какой-либо способ сохранить состояние встроенной базы данных жесткий диск, чтобы при следующем загрузке сервера мы могли восстановить состояние базы данных на сохраненную контрольную точку?Использование встроенной базы данных в производственной среде?

спасибо.

ответ

0

Встроенные базы данных не предназначены для использования в производственной среде. Они предназначены для более быстрого варианта разработки, поскольку вам не нужно иметь зависимость от внешней базы данных. Со встроенной базой данных вы можете программно запускать ее и, при необходимости, инициализировать ее на основе ваших потребностей.

Причина, по которой ваши изменения теряются во время перераспределения, заключается в том, что вы используете версию HsQL в памяти вместо режима In-process (автономный файл). Вы можете использовать автономный режим, который сохраняет изменения постоянными.

In-Process (Standalone) Mode 

This mode runs the database engine as part of your application program in the same Java Virtual Machine. For most applications this mode can be faster, as the data is not converted and sent over the network. The main drawback is that it is not possible by default to connect to the database from outside your application. As a result you cannot check the contents of the database with external tools such as Database Manager while your application is running. In 1.8.0, you can run a server instance in a thread from the same virtual machine as your application and provide external access to your in-process database. 

The recommended way of using the in-process mode in an application is to use an HSQLDB Server instance for the database while developing the application and then switch to In-Process mode for deployment. 

An In-Process Mode database is started from JDBC, with the database file path specified in the connection URL. For example, if the database name is testdb and its files are located in the same directory as where the command to run your application was issued, the following code is used for the connection: 

    Connection c = DriverManager.getConnection("jdbc:hsqldb:file:testdb", "sa", ""); 
The database file path format can be specified using forward slashes in Windows hosts as well as Linux hosts. So relative paths or paths that refer to the same directory on the same drive can be identical. For example if your database path in Linux is /opt/db/testdb and you create an identical directory structure on the C: drive of a Windows host, you can use the same URL in both Windows and Linux: 

    Connection c = DriverManager.getConnection("jdbc:hsqldb:file:/opt/db/testdb", "sa", ""); 
When using relative paths, these paths will be taken relative to the directory in which the shell command to start the Java Virtual Machine was executed. Refer to Javadoc for jdbcConnection for more details. 

HSQL documentation

+0

Я использую встроенный дб только для отслеживания текущего прогресса и после завершения задания все изменения сохранялись на реальный сервер БД такой подход не так ли? .. И спасибо за предложение В режиме процесса Я попробую это. –

+0

есть ли какая-либо автономная версия MySQL, которую вы можете поместить в один и тот же каталог вашего загрузочного JAR-файла весны ... и затем вы создаете сценарий bash или Windows .bat, который инициализирует сервер MySQL ... затем он запускает загрузку Spring JAR-файл? .... Если этот сценарий будет работать, у меня будет настольное веб-приложение для весеннего загрузочного стенда –