在 Quarkus 应用程序中配置数据源


Red Hat build of Quarkus 1.11

摘要

使用扩展为内置数据库驱动程序配置 Quarkus 应用程序的数据源,并将您的应用程序连接到关系数据库。

对红帽文档提供反馈

我们非常感谢您对我们的技术内容提供反馈,并鼓励您告诉我们您的想法。如果您想添加评论,提供见解、纠正拼写错误甚至询问问题,您可以在文档中直接这样做。

注意

您必须有一个红帽帐户并登录到客户门户网站。

要从客户门户网站提交文档反馈,请执行以下操作:

  1. 选择 Multi-page HTML 格式。
  2. 点文档右上角的 反馈 按钮。
  3. 突出显示您要提供反馈的文本部分。
  4. 点高亮文本旁的添加反馈对话框。
  5. 在页面右侧的文本框中输入您的反馈,然后单击 Submit

每次提交反馈时,我们都会自动创建跟踪问题。打开在点 Submit 后显示的链接,并开始监视问题或添加更多注释。

感谢您的宝贵反馈。

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息

第 1 章 在 Quarkus 中使用数据源简介

当您想向应用程序添加持久性数据存储时,您必须将应用程序连接到关系数据库。要达到此目的,您可以使用一个使用数据库驱动程序连接到应用程序的数据源。您可以将 Quarkus 应用程序连接到一个或多个数据源。您可以使用集成到 Quarkus 中的数据源管理功能:

  • 将您的应用程序配置为使用一个或多个数据源
  • 获取对代码中数据源的引用
  • 查看和设置池调优配置属性

在 Quarkus 应用程序中,您可以使用两种类型的数据库驱动程序将应用程序连接到关系数据库。您可以在一个应用程序中同时使用两种类型的多个数据源:

JDBC 驱动程序
使用标准 JDBC API,为基于 Java 的应用提供数据库连接。Quarkus JDBC 驱动程序使用 Agroal、一个快速、轻量级且高度可扩展的数据库连接池实现来管理数据库连接,与其他 Quarkus 功能集成,包括安全、事务管理和健康检查。
重新主动驱动程序
基于 Eclipse Vert.x 中的数据源驱动程序实现。Eclipse Vert.x 重新主动数据源驱动程序提供 Quarkus 的非阻塞和被动网络相关功能,适用于设计高度扩展和事件驱动的应用程序。

您可以使用 Quarkus 提供的一组统一和灵活的配置选项来配置这两种类型的数据源驱动程序。

1.1. 为数据源设置 db-kind 属性

当您在应用程序配置文件中设置 db-kind 属性以匹配您要使用的数据源的类型时,Quarkus 会自动解析适当的数据库驱动程序类型。以下流程演示了如何为数据源设置 db-kind 属性。

先决条件

  • 您有一个 Quarkus Maven 项目。

流程

  1. 导航到 Quarkus 项目目录。
  2. src/main/resources/application.properties 文件中,设置 db-kind 属性的值以匹配您要使用的 数据源的类型。以下示例使用 postgresql 作为数据源类型:

    quarkus.datasource.db-kind=postgresql

1.2. 设置数据库凭证

您可以定义应用程序用来访问数据库的凭证。为您的数据库定义访问凭证是可选的。您可以为应用程序配置数据源时跳过这个过程。

先决条件

  • 您有一个 Quarkus Maven 项目。
  • 您已为数据源设置了 db-kind 属性。
  • 您的 Quarkus 应用程序处于 JVM 模式。当您使用 Quarkus 在原生模式下不支持的 JDBC 驱动程序时,会应用此先决条件。

流程

  1. 导航到 Quarkus 项目目录。
  2. src/main/resources/application.properties 文件中,设置 quarkus.datasource.username 属性的值,以匹配应用程序用来访问数据库的用户名:

    quarkus.datasource.username=<username>
  3. src/main/resources/application.properties 文件中,设置 quarkus.datasource.password 属性的值以匹配应用程序用来访问数据库的密码:

    quarkus.datasource.password=<password>

1.3. 内置数据库的quarkus 驱动程序扩展

下表提供了 Quarkus 内置数据库和可用于将应用程序连接到关系数据库的扩展概述:

表 1.1. Quarkus 内置数据库的驱动程序扩展
数据库内置db-kindAgroal 扩展重新主动扩展

DB2

db2

quarkus-jdbc-db2

quarkus-reactive-db2-client

Derby

derby

quarkus-jdbc-derby

不适用

H2

h2

quarkus-jdbc-h2

不适用

MariaDB

mariadb

quarkus-jdbc-mariadb

quarkus-reactive-mysql-client

Microsoft SQL Server

mssql

quarkus-jdbc-mssql

不适用

MySQL

mysql

quarkus-jdbc-mysql

quarkus-reactive-mysql-client

PostgreSQL

PostgreSQLpgsqlpg

quarkus-jdbc-postgresql

quarkus-reactive-pg-client

您可以将 H2 和 Derby 数据库配置为在嵌入式模式下运行。H2 和 Derby 驱动程序扩展不支持将嵌入式数据库引擎编译到原生可执行文件中。

重要

此表包括受支持的和社区工件。有关支持的 Maven 工件列表,请参阅 Red Hat build of Quarkus 组件详情页

当您使用内置数据库之一时,JDBC 驱动程序会自动解析为以下值:

表 1.2. Quarkus 内置数据库的 JDBC 和 XA 驱动程序
数据库JDBC 驱动程序XA 驱动程序

DB2

com.ibm.db2.jcc.DBDriver

com.ibm.db2.jcc.DB2XADataSource

Derby

org.apache.derby.jdbc.ClientDriver

org.apache.derby.jdbc.ClientXADataSource

H2

org.h2.Driver

org.h2.jdbcx.JdbcDataSource

MariaDB

org.mariadb.jdbc.Driver

org.mariadb.jdbc.MySQLDataSource

Microsoft SQL Server

com.microsoft.sqlserver.jdbc.SQLServerDriver

com.microsoft.sqlserver.jdbc.SQLServerXADataSource

MySQL

com.mysql.cj.jdbc.Driver

com.mysql.cj.jdbc.MysqlXADataSource

PostgreSQL

org.postgresql.Driver

org.postgresql.xa.PGXADataSource

注意

您可以将 H2 和 Derby 数据库配置为在嵌入式模式下运行。H2 和 Derby 驱动程序扩展不支持将嵌入式数据库引擎编译到原生可执行文件中。

第 2 章 JDBC 数据源配置

JDBC 是基于 Java 的应用中最常用的数据库连接 API。您可以使用 JDBC 数据源驱动程序将应用程序连接到关系数据库。

要配置 JDBC 数据源,您必须

  • 在应用程序中添加 quarkus-agroal 扩展
  • 为应用程序添加 db-kind 扩展
  • 指定应用程序用来访问数据源的 JDBC URL

以下示例演示了如何将 postgresql 数据源连接到应用程序,并为数据源指定访问凭据和 JDBC URL。有关如何指定 JDBC URL 的更多信息 ,请参阅设置数据源的 JDBC URL

JDBC 数据源配置示例

quarkus.datasource.db-kind=postgresql
quarkus.datasource.username=<your_username>
quarkus.datasource.password=<your_password>

quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/hibernate_orm_test
quarkus.datasource.jdbc.max-size=16

2.1. 为 JDBC 数据源安装 Quarkus 扩展

您必须安装 quarkus-agroal 扩展和 Quarkus JDBC 数据库驱动程序扩展,以配置 JDBC 数据源。您添加的 JDBC 数据库驱动程序必须与您要使用的 JDBC 数据库类型匹配。

以下流程演示了如何为 JDBC 数据源安装 Quarkus 扩展。

先决条件

  • 您有一个 Quarkus Maven 项目。
  • 您已为数据源设置了 db-kind 属性。

流程

  1. 导航到 Quarkus 项目目录。
  2. 在您的项目中添加 quarkus-agroal 扩展:

    ./mvnw quarkus:add-extension -Dextensions="agroal"
  3. 在应用程序中添加适当的相关数据库驱动程序的 Quarkus 扩展:

    ./mvnw quarkus:add-extension -Dextensions="<extension>"

    例如,要添加 PostgreSQL 数据库驱动程序扩展,请使用:

    ./mvnw quarkus:add-extension -Dextensions="jdbc-postgresql"
注意

如果您使用 Hibernate ORM,则不需要显式添加 Agroal 扩展依赖项。Ggroal 是 Hibernate ORM 扩展的传输依赖项。您必须使用带有 Hibernate ORM 的 JDBC 数据源驱动程序。

2.2. 设置数据源的 JDBC URL

您必须设置 JDBC URL 来完成 JDBC 数据源的配置。以下流程演示了如何设置 JDBC URL。

先决条件

  • 您有一个 Quarkus Maven 项目。
  • 您已在应用程序中添加了对应的数据源驱动程序。
  • 您已为数据源设置了 db-kind 属性。

流程

  1. 导航到 Quarkus 项目目录。
  2. 打开 src/main/resources/application.properties 文件。
  3. 设置 quarkus.datasource.jdbc.url 属性的值,以匹配数据源的 JDBC URL:

    quarkus.datasource.jdbc.url=<JDBC_URL>

    例如,要设置 PostgreSQL 数据源的 JDBC URL,请使用:

    quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/hibernate_orm_test

2.3. 使用 Hibernate ORM 获取 JDBC 数据源

如果您使用 Hibernate ORM,您的应用程序会自动识别并连接到可用的 JDBC 数据源。要访问应用程序代码中的数据源,您可以将其作为 CDI bean 获取。

先决条件

  • 您有一个 Quarkus Maven 项目。
  • 已安装 Hibernate ORM。

流程

  • 要访问应用程序代码中的数据源,请将 @Inject 注解添加到 dataSource 属性中:

    import javax.sql.DataSource;
    
    @Inject DataSource dataSource;

2.4. 在同时配置中禁用 JDBC 数据源

您可以为应用程序中的同一数据源同时配置 JDBC 驱动程序扩展和被动驱动程序扩展。您可以在同时配置中禁用 JDBC 数据源驱动程序,从而强制应用程序使用重新主动数据源驱动程序。

先决条件

  • 您有一个 Quarkus Maven 项目。
  • 您已在应用程序中同时配置了 JDBC 数据源驱动程序和被动数据源驱动程序。

流程

  1. 导航到 Quarkus 项目目录。
  2. 打开 src/main/resources/application.properties 文件。
  3. quarkus.datasource.jdbc 属性设置为 false 以禁用 JDBC 数据源:

    quarkus.datasource.jdbc=false

2.5. 配置没有内置驱动程序扩展的 JDBC 驱动程序

您可以使用没有内置驱动程序扩展的 JDBC 驱动程序和数据库。以下流程演示了如何配置没有内置扩展的 JDBC 驱动程序。

注意

您可以在 JVM 模式中使用 Quarkus 应用程序时使用任何 JDBC 驱动程序。当您将 Quarkus 编译为原生可执行文件时,非包括的 JDBC 驱动程序可能无法正常工作。

先决条件

  • 您有一个 Quarkus Maven 项目。
  • 您的 Quarkus 应用程序处于 JVM 模式。
  • 您可以在项目的 pom.xml 文件中添加您要用作依赖项的数据源驱动程序。

流程

  1. 导航到 Quarkus 项目目录。
  2. 打开 src/main/resources/application.properties 文件。
  3. db-kind 属性的值设置为 其他

    quarkus.datasource.db-kind=other
  4. 设置 quarkus.datasource.jdbc.driver 属性的值,以匹配您要使用的驱动程序扩展类型:

    quarkus.datasource.jdbc.driver=<driver>
  5. 设置 quarkus.datasource.jdbc.url 属性的值,以匹配数据源的 JDBC URL:

    quarkus.datasource.jdbc.url=<JDBC_URL>

    例如,Quarkus 没有为 OpenTracing 驱动程序提供内置驱动程序扩展。确保将 opentracing-jdbc 工件添加到 pom.xml 文件中,并在 application.properties 文件中设置以下属性来配置 OpenTracing 驱动程序:

    quarkus.datasource.db-kind=postgresql
    quarkus.datasource.jdbc.url=jdbc:tracing:postgresql://localhost:5432/mydatabase
    quarkus.datasource.jdbc.driver=io.opentracing.contrib.jdbc.TracingDriver
    quarkus.hibernate-orm.dialect=org.hibernate.dialect.PostgreSQLDialect

2.6. 配置多个 JDBC 数据源

您可以使用 Agroal 为 Quarkus 应用程序配置多个 JDBC 数据源。

注意

使用 Hibernate ORM 扩展时,您可以在应用程序中添加多个持久性数据存储单元。对于每个持久性单元,您可以指向您选择的数据源。

先决条件

  • 您有一个 Quarkus Maven 项目。
  • 您有多个 JDBC 数据源。

流程

  1. 导航到 Quarkus 项目目录。
  2. src/main/resources/application.properties 文件中,为每个数据源设置以下属性:

    以下示例显示了 3 JDBC 数据源的完整配置:

    quarkus.datasource.db-kind=h2 1
    quarkus.datasource.username=username-default 2
    quarkus.datasource.jdbc.url=jdbc:h2:tcp://localhost/mem:default 3
    quarkus.datasource.jdbc.min-size=3 4
    quarkus.datasource.jdbc.max-size=13 5
    
    quarkus.datasource.users.db-kind=h2 6
    quarkus.datasource.users.username=username1
    quarkus.datasource.users.jdbc.url=jdbc:h2:tcp://localhost/mem:users
    quarkus.datasource.users.jdbc.min-size=1
    quarkus.datasource.users.jdbc.max-size=11
    
    quarkus.datasource.inventory.db-kind=h2
    quarkus.datasource.inventory.username=username2
    quarkus.datasource.inventory.jdbc.url=jdbc:h2:tcp://localhost/mem:inventory
    quarkus.datasource.inventory.jdbc.min-size=2
    quarkus.datasource.inventory.jdbc.max-size=12
    1
    要使用的数据源的类型。
    2
    数据源的用户名。
    3
    数据源的 JDBC 连接 URL。
    4
    数据源连接池中维护的最小连接数。
    5
    在数据源的连接池中维护的最大连接数。
    6
    如果选择 用户 作为数据源的名称,则数据源的完全限定引用是 quarkus.datasource.users
  3. 通过将 @Inject 注释添加到每个类属性,将多个数据源注入其中。当您为应用程序配置多个数据源时,请确保将 io.quarkus.agroal.DataSource 限定符添加为每个 DataSource 类的值:

    import javax.inject.Inject;
    import io.agroal.api.AgroalDataSource;
    import io.quarkus.agroal.DataSource;
    
    @Inject
    AgroalDataSource defaultDataSource;
    
    @Inject
    @DataSource("users")
    AgroalDataSource usersDataSource;
    
    @Inject
    @DataSource("inventory")
    AgroalDataSource inventoryDataSource;

第 3 章 重新主动数据源配置

您可以使用被动数据源驱动程序将应用程序连接到关系数据库。

3.1. 设置重新主动数据源连接 URL

您必须为重新主动数据源配置连接 URL,以完成数据源的配置。

先决条件

  • 您有一个 Quarkus Maven 项目。
  • 您已在应用程序中添加了被动数据源驱动程序。

流程

  1. 导航到 Quarkus 项目目录。
  2. src/main/resources/application.properties 文件中,设置 quarkus.datasource.reactive.url 属性的值以匹配重新主动数据源的连接 URL:

    quarkus.datasource.reactive.url=<datasource_URL>

    例如,要为 PostgreSQL 数据源设置重新主动数据源连接 URL:

    quarkus.datasource.reactive.url=postgresql:///your_database
  3. 另外,您还可以在数据源的连接池中设置连接的最大数量,以提高应用程序的性能:

    quarkus.datasource.reactive.max-size=20

    例如,使用被动数据源驱动程序添加 postgresql 数据源:

    quarkus.datasource.db-kind=postgresql
    quarkus.datasource.username=<your_username>
    quarkus.datasource.password=<your_password>
    
    quarkus.datasource.reactive.url=postgresql://localhost:5432/quarkus_test_database
    quarkus.datasource.reactive.max-size=20

3.2. 在同时配置中禁用被动数据源

您可以为应用程序中的同一数据源同时配置被动驱动程序扩展和 JDBC 驱动程序扩展。您可以在同时配置中禁用 reactive 数据源驱动程序,从而强制应用程序使用 JDBC 数据源驱动程序。

先决条件

  • 您有一个 Quarkus Maven 项目。
  • 您已在应用程序中同时配置了 JDBC 数据源驱动程序和被动数据源驱动程序。

流程

  1. 导航到 Quarkus 项目目录。
  2. 打开 src/main/resources/application.properties 文件。
  3. quarkus.datasource.reactive 属性设置为 false 以禁用重新主动数据源:

    quarkus.datasource.reactive=false

第 4 章 数据源管理

您可以通过应用程序属性启用其他功能来管理数据源。

4.1. 数据源健康检查

外部系统(如 Kubernetes)在您的数据源上执行健康检查,以确定您的应用程序是否可以响应请求。

如果您使用 quarkus-smallrye-health 扩展,quarkus-agroal 和 reactive 客户端扩展会自动添加就绪度健康检查以验证数据源。

要查看数据源验证状态的信息,请访问应用程序的 /health/ready 端点。如果您有多个数据源,如果数据源验证失败,应用程序会检查所有数据源,其状态将在端点上列为 DOWN

您可以使用 quarkus.datasource.health.enabled 属性禁用此行为。

4.2. 数据源指标

当您使用 quarkus-smallrye-metricsquarkus-micrometer 扩展时,quarkus-agroal 扩展发送的指标会在指标端点 /q/metrics 上公开。

要为所有数据源启用指标,您可以将 quarkus.datasource.jdbc.enable-metrics 属性设置为 true。要禁用所有数据源的指标,请将 quarkus.datasource.jdbc.enable-metrics 属性设置为 false

当您启用了数据源指标(quarkus.datasource.jdbc.enable-metrics=true)时,您可以通过将指定数据源的 quarkus.datasource.<datasource_name>.jdbc.enable-metrics 属性设置为 false 来禁用特定数据源的指标。

当您禁用了数据源指标(quarkus.datasource.jdbc.enable-metrics=false)时,您可以通过将命名数据源的 quarkus.datasource.<datasource_name>.jdbc.enable-metrics 属性设置为 true 来启用特定数据源的指标。

您可以使用此功能以编程方式访问收集的指标。在注入的 AgroalDataSource 实例上调用 dataSource.getMetrics () 方法后,收集的指标就会可用。如果为数据源禁用指标集合,则所有值都为零。

4.3. Narayana 事务管理器集成

quarkus-narayana-jta 扩展可用时,会自动添加 Narayana 事务管理器集成。

您可以通过设置 quarkus.datasource.jdbc.transactions 配置属性来覆盖它。

4.4. 使用内存数据库进行测试

使用您要在生产环境中使用的数据库,容器技术使其易于实现。也可以使用 JVM 电源的数据库运行集成测试。H2 和 Derby 数据库通常用于运行集成测试的嵌入式模式。

嵌入式引擎将以 JVM 模式正常工作,但无法编译到原生可执行文件中。Quarkus 不支持将整个数据库引擎嵌入到原生可执行文件中。

如果要在 JVM 和/或原生可执行文件中运行集成测试,您可以在集成测试中的任何类中添加 @QuarkusTestResource(H2DatabaseTestResource.class)或 @QuarkusTestResource(DerbyDatabaseTestResource.class)。现在,测试套件可以作为一个独立的进程启动和停止嵌入的数据库,以便运行测试。

@QuarkusTestResource(H2DatabaseTestResource.class)和 @QuarkusTestResource(DerbyDatabaseTestResource.class)由具有 Maven 协调 io.quarkus:quarkus-test-h2io.quarkus:quarkus-test-derby、分别用于 H2 和 Derby 的工件提供。

以下示例演示了如何为 H2 数据库使用帮助程序:

package my.app.integrationtests.db;

import io.quarkus.test.common.QuarkusTestResource;
import io.quarkus.test.h2.H2DatabaseTestResource;

@QuarkusTestResource(H2DatabaseTestResource.class)
public class TestResources {
}

这样,即使应用程序被编译成原生可执行文件,但数据库将在 JVM 中运行。

使用以下方法连接到它:

quarkus.datasource.db-kind=h2
quarkus.datasource.jdbc.url=jdbc:h2:tcp://localhost/mem:test

附录 A. 带有生产和开发支持的数据库的 JDBC 数据库连接 URL

您可以使用 JDBC 数据库连接 URL 连接到关系数据库。每个数据库都有自己的数据库 URL 格式,其中包含数据库本身和其他配置属性的信息。

以下示例显示了已使用红帽构建的 Quarkus 测试的数据库的 JDBC 数据库连接 URL。有关支持的数据库和版本的更多信息,请参阅 Red Hat build of Quarkus 支持的配置 页面。

A.1. PostgreSQL 数据库 URL 示例

PostgreSQL 仅作为服务器运行。您必须指定连接详情或使用默认值。

配置选项

jdbc:postgresql:[//][host][:port][/database][?key=value…​]

示例

jdbc:postgresql://localhost/test

其他资源

A.2. MariaDB 数据库 URL 示例

MariaDB 仅作为服务器运行。您必须指定连接详情或使用默认值。

配置选项

jdbc:mariadb:[replication:|failover:|sequential:|aurora:]//<hostDescription>[,<hostDescription>…​]/[database][?<key1>=<value1>[&<key2>=<value2>]] hostDescription:: <host>[:<portnumber>] or address=(host=<host>)[(port=<portnumber>)][(type=(master|slave))]

示例

jdbc:mariadb://localhost:3306/test

其他资源

A.3. MySQL 数据库 URL 示例

MySQL 仅作为服务器运行。您必须指定连接详情或使用默认值。

配置选项

jdbc:mysql:[replication:|failover:|sequential:|aurora:]//<hostDescription>[,<hostDescription>…​]/[database][?<key1>=<value1>[&<key2>=<value2>]] hostDescription:: <host>[:<portnumber>] or address=(host=<host>)[(port=<portnumber>)][(type=(master|slave))]

示例

jdbc:mysql://localhost:3306/test

其他资源

A.4. Microsoft SQL Server 数据库 URL 示例

Microsoft SQL Server 使用默认的系统值,除非您指定了不同的值。Microsoft SQL Server JDBC 驱动程序的工作方式与其他驱动程序相同。连接 URL 应采用以下格式:

配置选项

jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]

示例

jdbc:sqlserver://localhost:1433;databaseName=AdventureWorks

附录 B. 带有开发支持的数据库的 JDBC 数据库连接 URL

您可以使用 JDBC 数据库连接 URL 连接到关系数据库。每个数据库都有自己的数据库 URL 格式,其中包含数据库本身和其他配置属性的信息。

以下示例演示了开发支持的数据库的 JDBC 数据库连接 URL。有关 开发支持的更多信息,请参阅开发支持覆盖范围 页面。

B.1. Derby 数据库 URL 示例

Derby 是一个嵌入式数据库,可作为服务器、文件或内存中运行。

配置选项

jdbc:derby:[//serverName[:portNumber]/][memory:]databaseName[;property=value[;property=value]]

示例

jdbc:derby://localhost:1527/myDB, jdbc:derby:memory:myDB;create=true

其他资源

B.2. H2 数据库 URL 示例

H2 是一个嵌入式数据库,可作为服务器运行,基于文件或完全在内存中运行。

配置选项

jdbc:h2:{ {.|mem:}[name] | [file:]fileName | {tcp|ssl}:[//]server[:port][,server2[:port]]/name }[;key=value…​]

示例

jdbc:h2:tcp://localhost/~/test, jdbc:h2:mem:myDB

其他资源

更新于 2023-05-16

法律通告

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.