.. _monitor_db:
Database Persistence
====================
The monitor extension is capable of persisting request data to a database via the
`Hibernate `_ library.
.. note::
In order to utilize hibernate persistence the hibernate extension must be installed on
top of the core monitoring extension. See the :ref:`monitor_installation` for details.
Configuration
-------------
General
^^^^^^^
In order to activate hibernate persistence the ``storage`` parameter must be set to the
value "hibernate"::
storage=hibernate
The hibernate storage backend supports both the ``history`` and ``live`` modes however
care should be taken when enabling the ``live`` mode as it results in many transactions
with the database over the life of a request. Unless updating the database in real time
is required the ``history`` mode is recommended.
Database
^^^^^^^^
The file ``db.properties`` in the ``/monitoring`` directory specifies
the Hibernate database. By default an embedded H2 database located in the ``monitoring``
directory is used. This can be changed by editing the ``db.properties`` file::
# default configuration is for h2
driver=org.h2.Driver
url=jdbc:h2:file:${GEOSERVER_DATA_DIR}/monitoring/monitoring
For example to store request data in an external PostgreSQL database, set ``db.properties`` to::
driver=org.postgresql.Driver
url=jdbc:postgresql://192.168.1.124:5432/monitoring
username=bob
password=foobar
defaultAutoCommit=false
In addition to ``db.properties`` file is the ``hibernate.properties`` file that contains
configuration for Hibernate itself. An important parameter of this file is the hibernate
dialect that informs hibernate of the type of database it is talking to.
When changing the type of database both the ``databasePlatform`` and ``database`` parameters
must be updated. For example to switch to PostgreSQL::
# hibernate dialect
databasePlatform=org.hibernate.dialect.PostgreSQLDialect
database=POSTGRESQL
# other hibernate configuration
hibernate.use_sql_comments=true
generateDdl=true
hibernate.format_sql=true
showSql=false
hibernate.generate_statistics=true
hibernate.session_factory_name=SessionFactory
hibernate.hbm2ddl.auto=update
hibernate.bytecode.use_reflection_optimizer=true
hibernate.show_sql=false
Hibernate
^^^^^^^^^
As mentioned in the previous section the ``hibernate.properties`` file contains the configuration
for Hibernate itself. Aside from the database dialect parameters it is not recommended that you
change this file unless you are an experienced Hibernate user.