配置数据库¶
引言¶
GeoNetwork使用数据库来持久保存元数据记录、权限和配置等方面。数据库默认结构由应用程序在初次启动时创建。GeoNetwork的后续版本将自动更新数据库结构。因此,数据库用户最初需要数据库上的CREATE权限。支持多种数据库方言; H2 , PostgreSQL , PostGIS , Oracle , SQL Server 。本节介绍配置数据库连接的各种选项。
H2数据库¶
默认情况下,一个 H2 数据库是在应用程序首次启动时配置和创建的。名为的H2数据库 gn.h2.db
已创建:
在
jetty
使用时,GeoNetwork应用程序文件夹的文件夹 ZIP distribution 。在
bin
在部署时使用Tomcat文件夹 WAR 在Tomcat上(开始使用startup.sh
)。
注解
你不会的 need 如果您对本地H2数据库满意,可以配置数据库。仅当您希望将数据存储在远程数据库上时才更改配置。
通过配置文件配置数据库¶
数据库方言在中配置 /WEB-INF/config-node/srv.xml
。取消对要使用的方言的注释。
包含用于PostgreSQL、Oracle和H2的JDBC驱动程序。其他方言需要安装JDBC驱动程序。下载该方言的JDBC库并将其放入 /WEB-INF/lib
或在Tomcat或GeoNetwork lib文件夹中。
要更新连接详细信息,请使用相关连接信息更新|jdbc.properties|文件。
GeoNetwork假定数据存储在用户的默认架构中。如果不是这样,您需要激活一个设置 hibernate.default_schema
在……里面 /WEB-INF/config-spring-geonetwork.xml
。有些脚本在初始化时直接在数据库上运行,不能使用 hibernate.default-schema
参数。对于这些脚本,您需要手动设置默认模式。在PostgreSQL中,这可以通过将 ?currentSchema=example
连接到数据库连接。
通过JNDI配置数据库¶
Java命名和目录接口(Java Naming and Directory Interface,JNDI)是一种允许在Tomcat中配置数据库并按名称引用JNDI连接的技术。
要激活JNDI,需要在中激活JNDI数据库类型
/WEB-INF/config-node/srv.xml
。在Tomcat中配置JNDI连接,方法是将新资源添加到
TOMCAT/conf/context.xml
。在香港的码头WEB-INF/jetty-env.xml
。<Resource name="geonetwork" type="javax.sql.DataSource" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/geonetwork" username="xxxxx" password="xxxxxx" maxActive="20" />
通过环境配置数据库¶
通过环境变量设置配置属性在Docker等容器环境中很常见。存在2个选项:
通过替换JAVA_OPTS将参数直接添加到Java环境。
docker run --rm --name gn -p 8080:8080 -e JAVA_OPTS=" -Dgeonetwork.db.type=postgres -Djdbc.database=example -Djdbc.username=example -Djdbc.password=xxx -Djdbc.host=localhost -Djdbc.port=5432" geonetwork:latest
设置准确的环境变量,包括“.”。许多GeoNetwork配置参数都包含一个点,这对于通过环境变量进行替换是一个挑战。Docker在这里是个例外,它提供了一种允许在环境变量中使用圆点的机制。
docker run --rm --name gn -p 8080:8080 -e geonetwork.db.type=postgres -e jdbc.database=example -e jdbc.username=example -e jdbc.password=xxx -e jdbc.host=localhost -e jdbc.port=5432 geonetwork:latest
在PostgreSQL中,可以配置 postgres 或 postgis 。在后一种情况下,GeoNetwork将使用PostGIS的空间功能来转换过滤元数据。在第一种情况下(对于其他数据库方言),创建一个shapefile来存储元数据复盖率。
日志记录¶
要查看有关数据库连接和查询的更多详细信息,可以在中将日志切换到调试级别 source file web/src/main/webapp/WEB-INF/classes/log4j.xml (或参见 目录服务器 >日志级别)。
<logger name="org.hibernate.SQL" additivity="false">
<level value="DEBUG" />
<appender-ref ref="consoleAppender" />
<appender-ref ref="fileAppender" />
</logger>
<logger name="org.hibernate.type" additivity="false">
<level value="DEBUG" />
<appender-ref ref="consoleAppender" />
<appender-ref ref="fileAppender" />
</logger>
<logger name="org.hibernate.tool.hbm2ddl" additivity="false">
<level value="DEBUG" />
<appender-ref ref="consoleAppender" />
<appender-ref ref="fileAppender" />
</logger>
摘要¶
在GeoNetwork中配置数据库有多种方法。JNDI和环境是有利的,因为在更新到新版本或更改数据库时,您不需要接触任何应用程序文件。