12.4. 配置持久数据源
通过数据网格,您可以将存储在缓存中的数据保存到数据源。Red Hat Data Grid 有两个类型的数据源:
在 OpenShift 上运行的内部数据源。这些数据源可通过 Red Hat Container Registry 提供,且不需要配置额外的环境文件。
注意内部数据源包括 PostgreSQL、MySQL 和 MongoDB。但是,适用于 OpenShift 的 Red Hat Data Grid 目前仅支持 PostgreSQL 和 MySQL。
- 未在 OpenShift 上运行的外部数据源。您必须使用添加到 OpenShift Secret 的环境文件来配置这些外部数据源。
12.4.1. 配置内部数据源
DB_SERVICE_PREFIX_MAPPING
环境变量为内部数据源定义 JNDI 映射。
您可以将多个 JNDI 映射定义为 DB_SERVICE_PREFIX_MAPPING
环境变量的逗号分隔值。当您为 OpenShift 镜像运行 Data Grid 时,启动脚本会为每个 JNDI 映射创建一个独立数据源。OpenShift 的 Data Grid 会自动发现每个数据源。
要定义 JNDI 映射,以以下格式指定环境变量的值:
${POOL_NAME}-${DATABASE_TYPE}=${PREFIX}
-
${POOL_NAME}
是数据源的pool-name
属性。使用有意义的、易于识别的任何字母数字值。该值不能包含特殊字符。同样,该值必须包含小写字母字符。 ${DATABASE_TYPE}
指定要使用的数据库驱动程序。该值必须仅包含小写字符。注意只有
mysql
和postgresql
是{$DATABASE_TYPE}
的支持值。-
${PREFIX}
用于配置数据源的环境变量的名称。
12.4.1.1. 单一数据源示例
如果您将 test-postgresql=TEST
指定为 DB_SERVICE_PREFIX_MAPPING
环境变量的值,它会创建一个具有以下名称的数据源:
java:jboss/datasources/test_postgresql
在为数据源指定其他环境变量时,您必须使用 TEST
前缀。例如,若要设置用户名和密码,可使用 TEST_USERNAME
和 TEST_PASSWORD
作为环境变量。
12.4.1.2. 多个数据源示例
如果您指定了 cloud-postgresql=CLOUD,test-mysql=TEST_MYSQL
作为 DB_SERVICE_PREFIX_MAPPING
环境变量的值,它会使用以下名称创建两个数据源:
-
java:jboss/datasources/test_mysql
-
java:jboss/datasources/cloud_postgresql
为数据源指定其他环境变量时,您必须使用 TEST_MYSQL
前缀来配置 MySQL 数据源。例如,使用 TEST_MYSQL_USERNAME
作为环境变量来指定用户名。
同样,您必须使用 CLOUD
前缀来配置 PostgreSQL 数据源。例如,使用 CLOUD_USERNAME
作为环境变量来指定用户名。