Spring Boot中实现JPA多数据源配置指南

本文还有配套的精品资源,点击获取 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

简介:本文详细介绍了在Spring Boot项目中配置和使用JPA进行多数据源管理的步骤。从引入依赖开始,到配置数据源、创建DataSource bean、定义实体和Repository,最后到配置事务管理器和使用多数据源进行操作。内容涵盖了为不同的数据库配置独立数据源、实体类和对应的Repository接口,以及通过注解注入服务层并使用特定的事务管理器执行操作。本文旨在为开发者提供一个清晰的多数据源配置流程,提高开发效率并确保数据一致性与完整性。 springboot 配置多数据源

1. Spring Boot多数据源配置简介

在分布式系统和复杂应用日益增多的今天,单一数据源往往无法满足业务需求。多数据源配置应运而生,它允许应用连接和管理多个数据库,以实现数据的整合、优化和隔离。

什么是多数据源配置?

多数据源配置指的是在同一个应用或服务中配置并使用多个数据库连接。每个数据库连接对应一个数据源,它们可以是不同类型的数据库,如MySQL、PostgreSQL或MongoDB等。

为何需要使用多数据源?

在实际项目中,多数据源配置是因应多种业务场景的需要。例如,为了数据隔离,主从分离,或者整合遗留系统。它带来以下好处:

  • 灵活性 :能够根据不同数据源的特性优化数据库操作。
  • 扩展性 :支持水平扩展,对不同模块使用专用数据源。
  • 维护性 :可以单独管理和维护不同数据源,减少系统间干扰。

当然,使用多数据源也会面临挑战,比如复杂的配置管理,以及事务处理和数据一致性的问题。随着本系列文章的深入,我们将探讨这些挑战和相应的解决方案。

2. 依赖引入方法

2.1 Spring Boot项目中多数据源的支持

2.1.1 核心依赖介绍

在Spring Boot项目中实现多数据源配置,首先需要在项目中引入必要的核心依赖。核心依赖包括Spring Boot自身提供的starter以及与数据库连接相关的依赖。例如,如果我们需要连接MySQL数据库,则需要引入 spring-boot-starter-jdbcmysql-connector-java 。对于其他类型的数据库,比如PostgreSQL或Oracle,你将需要添加对应的数据库驱动依赖。

<!-- 引入Spring Boot Starter JDBC -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<!-- 引入MySQL数据库驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.23</version>
</dependency>

在上述Maven依赖中, spring-boot-starter-jdbc 是连接关系型数据库的核心starter,它负责自动配置JDBC和连接池。 mysql-connector-java 是MySQL的JDBC驱动,用于与数据库进行通信。

2.1.2 版本选择与兼容性问题

在选择依赖版本时,需要考虑项目中使用的Spring Boot版本,以确保所有组件的兼容性。可以通过Spring Initializr(***)生成一个基础项目,以获取推荐的依赖版本组合。

flowchart LR
    A[Spring Boot版本] -->|影响| B[依赖版本选择]
    B -->|确保| C[组件兼容性]

如果在实际开发中遇到版本冲突,可以使用Maven的 dependencyManagement 进行管理,明确指定需要的版本号。

2.2 多数据源相关的依赖库

2.2.1 数据访问技术栈选择

在多数据源的配置中,选择合适的数据访问技术栈至关重要。技术栈的选择取决于你的项目需求和开发者的熟悉度。Spring Data JPA是目前比较流行的选择,它提供了基于JPA的数据访问层,并且支持通过Repository接口简化数据操作。

<!-- 引入Spring Data JPA Starter -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

对于复杂的查询或者需要更灵活的数据访问方式,可以选择MyBatis。MyBatis提供了更细粒度的控制,使得SQL映射更加直观。

2.2.2 版本管理与冲突解决

在多数据源环境中,各个依赖库之间的版本兼容性问题可能会导致冲突。例如,HikariCP是Spring Boot 2.x推荐的连接池实现,如果引入了其他非兼容版本的连接池库,可能会导致冲突。

<!-- 引入HikariCP连接池 -->
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
</dependency>

在Maven项目中,可以通过 <dependencyManagement> 标签在 pom.xml 中锁定依赖的版本,确保项目中的依赖版本统一,避免冲突。

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>4.0.3</version>
        </dependency>
    </dependencies>
</dependencyManagement>

此外,还可以利用IDE的冲突解决工具来手动解决依赖冲突。以IntelliJ IDEA为例,可以通过右侧的Maven窗口查看项目的依赖树,点击相应的依赖项可以找到冲突的来源,并进行手动选择和排除。

3. 数据源配置细节

3.1 数据源配置文件设置

3.1.1 分离数据源配置文件的必要性

在大型企业级应用中,可能会涉及到多种不同类型的数据库,比如MySQL用于业务数据,Redis用于缓存,MongoDB用于非关系型数据存储。每种数据库的配置项、连接方式、连接池参数等可能都不相同。因此,将不同数据源的配置分离至各自的配置文件中,可以使得项目的配置更加清晰,方便管理和维护。

举例来说,我们可能需要维护多个配置文件,如:

  • application.yml - 基础配置文件
  • application-datasource1.yml - 数据源1的配置
  • application-datasource2.yml - 数据源2的配置

application.yml 中,我们可以指定哪些配置文件需要被加载:

spring:
  profiles:
    active: datasource1,datasource2
3.1.2 不同数据源配置文件的结构和内容

每个数据源的配置文件会遵循Spring Boot的配置规范,包含所有必要的配置项。一个典型的 application-datasource1.yml 配置文件内容示例如下:

spring:
  datasource:
    datasource1:
      url: jdbc:mysql://localhost:3306/db1
      username: user1
      password: pass1
      driver-class-name: com.mysql.cj.jdbc.Driver
      jpa:
        properties:
          hibernate:
            dialect: org.hibernate.dialect.MySQL5InnoDBDialect
      initialization-mode: always

3.2 数据源参数配置详解

3.2.1 数据库连接URL、用户名和密码配置

数据库连接URL通常包含协议、主机地址、端口以及数据库名称。用户名和密码是访问数据库的凭证。

对于MySQL数据库,URL可能看起来像这样:

url: jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC

确保在配置数据库连接时,使用正确的URL、用户名和密码。敏感信息如密码不应该直接写在配置文件中,而是应该使用环境变量或其他安全的配置方式来管理。

3.2.2 驱动类名、JDBC参数等高级配置选项

对于JDBC参数,可以根据需要设置额外的JDBC连接参数,例如:

driver-class-name: com.mysql.cj.jdbc.Driver

而一些高级配置项,比如连接池的最大连接数,保持活动的最长时间,或者初始化时是否验证连接等,可以在 application.yml 中进行如下配置:

hibernate:
  connection:
    pool_size: 20
    max.TimeUnit: 1800
    validate: true

3.3 多数据源环境下的连接池配置

3.3.1 连接池的作用和选择

连接池是数据库连接的缓存池,它可以提供快速的数据库连接,同时减少资源消耗。在多数据源环境中,每个数据源都可以独立配置连接池。

常见的连接池实现有HikariCP、Apache DBCP、C3P0等。Spring Boot默认使用的是HikariCP,因其性能出色且配置简单。

3.3.2 针对不同数据源的连接池参数配置

针对不同的数据源,我们可能需要调整连接池的参数来优化性能。例如,对于读写负载较为均衡的数据源,我们可能希望设置更多的连接数:

spring:
  datasource:
    datasource1:
      hikari:
        maximum-pool-size: 10
        minimum-idle: 5
        idle-timeout: 30000
        maxLifetime: 1800000

而如果另一个数据源主要是用于读操作,可以减少最大池大小和保持活动时间:

spring:
  datasource:
    datasource2:
      hikari:
        maximum-pool-size: 5
        minimum-idle: 2
        idle-timeout: 30000
        maxLifetime: 900000

application-datasource2.yml 中进行类似的配置,可以帮助我们针对不同的数据库负载进行调优。

4. DataSource bean配置方法

4.1 DataSource接口与实现类

4.1.1 DataSource接口在Spring中的角色

DataSource 接口在Spring框架中扮演着连接数据库的关键角色。它定义了获取连接的方法,是连接池实现的抽象。通过 DataSource ,Spring能够管理数据库连接的生命周期,包括连接的创建、获取、释放和关闭,保证了数据库连接的有效管理,并提升了应用的性能。

在多数据源的场景中,需要为每个数据源定义一个 DataSource 实现。Spring Boot通过自动配置和约定优于配置的原则,简化了数据源的配置过程。当项目中存在多个数据源时,需要明确地为每个数据源指定相应的 DataSource 实例,并将它们配置到 Spring 容器中,以便在需要的时候,能够正确地注入对应的数据库连接。

4.1.2 常见的DataSource实现类介绍

在实际开发中,常见的 DataSource 实现类包括以下几种:

  • HikariDataSource : 由 HikariCP 提供的一个高效且轻量级的连接池实现,被广泛用于Spring Boot项目中。
  • TomcatJDBCDataSource : Tomcat 提供的 DataSource 实现,同样是高性能的连接池选项之一。
  • DruidDataSource : 阿里巴巴提供的Druid连接池,它提供了强大的监控和扩展功能。

选择合适的 DataSource 实现类是关键,需要综合考虑性能、功能和项目的具体需求。

4.2 基于Java配置的DataSource Bean创建

4.2.1 使用@Configuration注解创建DataSource

在Spring Boot项目中,通常使用 @Configuration 注解标注的类来配置 DataSource bean。这种方式是通过Java代码直接定义 DataSource 的配置,提供了灵活性和可读性。

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;

@Configuration
public class DataSourceConfig {

    @Bean
    public DataSource dataSourceOne() {
        // 实例化数据源,配置数据源属性
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/db_one");
        dataSource.setUsername("user");
        dataSource.setPassword("password");
        // 其他配置...

        return dataSource;
    }

    @Bean
    public DataSource dataSourceTwo() {
        // 实例化另一个数据源
        HikariDataSource dataSource = new HikariDataSource();
        // 配置数据源属性...
        return dataSource;
    }
}

在上述代码中,我们定义了两个 @Bean 方法,分别用于创建两个不同的 DataSource 实例。每个 DataSource 都需要单独配置相应的数据库连接信息,例如URL、用户名和密码等。通过这种方式,我们可以灵活地配置多个数据源,以满足项目需求。

4.2.2 配置数据源属性和连接池参数

在创建 DataSource bean时,需要根据不同的数据库和应用场景,设置合适的连接池参数。例如,在上面的 dataSourceOne 方法中,我们使用了 HikariCP 的 HikariDataSource ,它可以设置包括但不限于以下参数:

  • jdbcUrl : 数据库的JDBC URL。

  • username : 数据库的登录用户名。

  • password : 数据库的登录密码。

  • maximumPoolSize : 连接池中最大连接数,建议根据应用的并发需求进行设置。

  • connectionTimeout : 连接获取的最长等待时间。

    dataSource.setJdbcUrl(“jdbc:mysql://localhost:3306/db_one”);
    dataSource.setUsername(“user”);
    dataSource.setPassword(“password”);
    dataSource.setMaximumPoolSize(10);
    dataSource.setConnectionTimeout(30000);

合理的连接池参数设置可以显著提升应用性能,减少数据库的负载。

4.3 XML配置方式的DataSource Bean设置

4.3.1 XML配置文件的编写和读取

虽然Java配置在现代Spring Boot项目中占据了主流,但仍有部分遗留系统或特殊场景下会使用XML配置。XML配置方式提供了另一种配置 DataSource 的方式,适用于那些依赖于XML配置的应用场景。

application.xml 或者特定的配置文件中,可以通过XML标签来定义 DataSource ,如下所示:

<bean id="dataSourceOne" class="com.zaxxer.hikari.HikariDataSource">
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db_one"/>
    <property name="username" value="user"/>
    <property name="password" value="password"/>
    <!-- 其他连接池参数 -->
</bean>

<bean id="dataSourceTwo" class="com.zaxxer.hikari.HikariDataSource">
    <!-- 数据源二的配置 -->
</bean>

Spring会解析XML配置文件,根据 bean 标签创建对应的 DataSource 实例。这种方式虽然灵活度较低,但能清晰地将配置分离出业务代码。

4.3.2 XML中配置数据源的方法和注意事项

在使用XML配置数据源时,有几点需要注意:

  • 确保Spring能够加载到配置文件,通常通过在 applicationContext.xml 中引入配置文件来实现。

  • 指定合适的 DataSource 实现类的全限定名,以便Spring能够创建正确的实例。

  • 使用XML配置时,连接池的参数设置通常以 property 子标签的形式进行配置。

为了避免潜在的错误,确保XML文件的格式正确,属性名和参数名与数据源实现类的要求一致。同时,对于不同数据源的配置,需要为每个数据源指定唯一的ID,以便在Spring容器中准确引用。

5. JPA实体和Repository配置

5.1 JPA多数据源配置概述

在多数据源环境中,JPA配置需要为每个数据源创建一个独立的 EntityManagerFactory 实例。这样,应用程序就可以为每个数据源创建和管理不同实体类的实体管理器。关键点在于配置能够识别多个数据源,并且能够相应地管理它们的持久化操作。

5.1.1 配置多个EntityManagerFactory

要配置多个 EntityManagerFactory ,你需要在Spring配置中使用不同的数据源定义,并为每个数据源创建一个 LocalContainerEntityManagerFactoryBean 。例如,如果你有 primarysecondary 两个数据源,你需要为每个数据源定义一个 EntityManagerFactory

@Bean(name = "primaryEntityManager")
public LocalContainerEntityManagerFactoryBean primaryEntityManager(
        EntityManagerFactoryBuilder builder, @Qualifier("primaryDataSource") DataSource dataSource) {
    return builder
            .dataSource(dataSource)
            .packages("com.example.primary") // 指定实体类的包路径
            .persistenceUnit("primary")
            .build();
}

@Bean(name = "secondaryEntityManager")
public LocalContainerEntityManagerFactoryBean secondaryEntityManager(
        EntityManagerFactoryBuilder builder, @Qualifier("secondaryDataSource") DataSource dataSource) {
    return builder
            .dataSource(dataSource)
            .packages("com.example.secondary") // 指定实体类的包路径
            .persistenceUnit("secondary")
            .build();
}
5.1.2 实现不同数据源的实体管理

每个 EntityManagerFactory 创建的实例将只管理它所关联的数据源的实体。这允许你针对每个数据源的特定需求优化实体映射和查询性能。使用 @Entity 注解为每个实体指定数据源,并通过 @PersistenceContextEntityManager 注入不同的实体管理器实例到你的服务层。

5.2 Repository接口的配置和使用

JPA的Repository接口极大地简化了数据访问层的代码编写。配置Repository接口以使用多数据源需要一些额外的步骤。

5.2.1 配置JPA Repository接口的细节

每个数据源配置需要与 EntityManagerFactory 相匹配。为每个数据源定义一个配置类,并使用 @EnableJpaRepositories 注解指定该数据源的Repository接口位置:

@EnableJpaRepositories(basePackages = "com.example.primary.repository",
        entityManagerFactoryRef = "primaryEntityManager",
        transactionManagerRef = "primaryTransactionManager")

确保每个数据源都定义了对应的事务管理器。

5.2.2 不同数据源下Repository的使用方法

在服务层代码中,你可以通过依赖注入来获取特定数据源的Repository接口,并使用它们进行数据访问:

@Service
public class SomeService {
    @Autowired
    private PrimaryRepository primaryRepository;

    @Autowired
    private SecondaryRepository secondaryRepository;

    public void someBusinessLogic() {
        primaryRepository.findById(...); // 使用primary数据源的Repository
        secondaryRepository.findById(...); // 使用secondary数据源的Repository
    }
}

5.3 JPA事务管理配置

在多数据源环境下,事务管理变得复杂,因为需要确保事务在多个数据源之间一致性和正确性。

5.3.1 PlatformTransactionManager的配置要点

对于每个数据源,都需要配置一个 PlatformTransactionManager 实例。通常,每个数据源对应一个事务管理器:

@Bean(name = "primaryTransactionManager")
public PlatformTransactionManager primaryTransactionManager(
        @Qualifier("primaryEntityManager") EntityManagerFactory entityManagerFactory) {
    return new JpaTransactionManager(entityManagerFactory);
}

@Bean(name = "secondaryTransactionManager")
public PlatformTransactionManager secondaryTransactionManager(
        @Qualifier("secondaryEntityManager") EntityManagerFactory entityManagerFactory) {
    return new JpaTransactionManager(entityManagerFactory);
}
5.3.2 多数据源环境下的事务隔离级别和传播行为

在多数据源事务管理中,特别需要注意事务的隔离级别和传播行为。正确的配置可以避免事务冲突、数据不一致以及性能问题:

@Transactional(isolation = Isolation.READ_COMMITTED, propagation = Propagation.REQUIRED)
public void performMultiSourceTransaction() {
    // 执行相关事务操作...
}

在实际操作中,你可能需要结合业务需求和数据一致性要求,来设置合理的事务隔离级别和传播行为。

以上章节详细介绍了在Spring Boot项目中配置JPA多数据源的步骤,包括EntityManagerFactory、Repository接口以及事务管理器的配置。这些步骤确保了应用能够正确地管理多个数据源,并进行高效的数据操作。在实际操作过程中,你可能还需要结合具体业务逻辑进行调整和优化。

本文还有配套的精品资源,点击获取 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

简介:本文详细介绍了在Spring Boot项目中配置和使用JPA进行多数据源管理的步骤。从引入依赖开始,到配置数据源、创建DataSource bean、定义实体和Repository,最后到配置事务管理器和使用多数据源进行操作。内容涵盖了为不同的数据库配置独立数据源、实体类和对应的Repository接口,以及通过注解注入服务层并使用特定的事务管理器执行操作。本文旨在为开发者提供一个清晰的多数据源配置流程,提高开发效率并确保数据一致性与完整性。

本文还有配套的精品资源,点击获取 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/933955.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSS学习记录04

CSS边框 CSS border 属性指定元素边框的样式、宽度和颜色。border-style 属性指定要显示的边框类型。dotted - 定义点线边框dashed - 定义虚线边框solid - 定义实线边框double - 定义双边框groove - 定义3D坡口边框&#xff0c;效果取决于border-color值ridge - 定义3D脊线边框…

【ArcGISPro】训练自己的深度学习模型并使用

本教程主要训练的是识别汽车的对象检测模型 所使用的工具如下(导出训练数据进行深度学习、训练深度学习模型、使用深度学习检测对象) 1.准备训练数据 1.1新建面矢量,构建检测对象 右键地理数据库->新建->要素类 选择面类型 1.2点击编辑窗口进行勾画汽车检测对象…

芝法酱学习笔记(1.3)——SpringBoot+mybatis plus+atomikos实现多数据源事务

一、前言 1.1 业务需求 之前我们在讲解注册和登录的时候&#xff0c;有一个重要的技术点忽略了过去。那就是多数据源的事务问题。 按照我们的业务需求&#xff0c;monitor服务可能涉及同时对监控中心数据库和企业中心数据库进行操作&#xff0c;而我们希望这样的操作在一个事…

Centos服务器如何访问windows的共享目录

CentOS服务器访问Windows的共享目录通常需要使用SMB/CIFS&#xff08;Server Message Block/Common Internet File System&#xff09;协议。以下是详细的步骤&#xff1a; 1、Windows端设置共享文件夹 1&#xff09;右键要共享的文件夹&#xff0c;点击属性-->在“共享”选…

JVM, JRE 和 JDK

JRE: Java Runtime Environment, Java 运行环境. JDK: Java Development Kit, Java 开发工具包. JRE JVM 核心类库 运行工具 JDK JVM 核心类库 开发工具 JVM: Java Virtual Machine, Java 虚拟机. 核心类库: Java 已经写好的东西, 直接拿来用即可. 开发工具: 包括 …

图数据库 | 13、图数据库架构设计——高性能计算架构再续

书接上文 图数据库 | 12、图数据库架构设计——高性能计算架构​​​​​​。昨天老夫就图数据库架构设计中的 实时图计算系统架构、图数据库模式与数据模型、核心引擎如何处理不同的数据类型、图计算引擎中的数据结构 这四块内容进行了展开讲解&#xff0c;今儿继续往下、往深…

Linux Cgroup学习笔记

文章目录 Cgroup(Control Group)引言简介Cgroup v1通用接口文件blkio子系统cpu子系统cpuacct子系统cpuset子系统devices子系统freezer子系统hugetlb子系统memory子系统net_cls子系统net_prio子系统perf_event子系统pids子系统misc子系统 Cgroup V2基础操作组织进程和线程popula…

R语言 | 峰峦图 / 山脊图

目的&#xff1a;为展示不同数据分布的差异。 1. ggplot2 实现 # 准备数据 datmtcars[, c("mpg", "cyl")] colnames(dat)c("value", "type") head(dat) # value type #Mazda RX4 21.0 6 #Mazda RX4 Wag …

java+ssm+mysql收纳培训网

项目介绍&#xff1a; 使用javassmmysql开发的收纳视频培训网&#xff0c;系统包含超级管理员&#xff0c;系统管理员、培训师、用户角色&#xff0c;功能如下&#xff1a; 超级管理员&#xff1a;管理员管理&#xff1b;用户管理&#xff08;培训师、用户&#xff09;&#…

【教程】创建NVIDIA Docker共享使用主机的GPU

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 这套是我跑完整理的。直接上干货&#xff0c;复制粘贴即可&#xff01; # 先安装toolkit sudo apt-get update sudo apt-get install -y ca-certifica…

【全攻略】React Native与环信UIKit:Expo项目从创建到云打包完整指南

前言 在当今快速发展的移动应用领域&#xff0c;React Native 因其跨平台开发能力和高效的开发周期而受到开发者的青睐。而 Expo&#xff0c;作为一个基于 React Native 的框架&#xff0c;进一步简化了开发流程&#xff0c;提供了一套完整的工具链&#xff0c;使得开发者能够…

新浪财经-数据中心-基金重仓GU-多页数据批量获取

拉到底部&#xff0c;可以看到一共有6页。 import pandas as pd dfpd.DataFrame() url_strhttp://vip.stock.finance.sina.com.cn/q/go.php/vComStockHold/kind/jjzc/index.phtml?p for i in range(6): urlstr(url_str)str(i1) df pd.concat([df,pd.read_html(url)…

从爱尔兰歌曲到莎士比亚:LSTM文本生成模型的优化之旅

上一篇&#xff1a;《再用RNN神经网络架构设计生成式语言模型》 序言&#xff1a;本文探讨了如何通过多种方法改进模型的输出&#xff0c;包括扩展数据集、调整模型架构、优化训练数据的窗口设置&#xff0c;以及采用字符级编码。这些方法旨在提高生成文本的准确性和合理性&am…

ElasticSearch常见的索引_集群的备份与恢复方案

方案一&#xff1a;使用Elasticsearch的快照和恢复功能进行备份和恢复。该方案适用于集群整体备份与迁移&#xff0c;包括全量、增量备份和恢复。 方案二&#xff1a;通过reindex操作在集群内或跨集群同步数据。该方案适用于相同集群但不同索引层面的迁移&#xff0c;或者跨集…

软件工程复习记录

基本概念 软件工程三要素&#xff1a;方法、工具、过程 软件开发方法&#xff1a;软件开发所遵循的办法和步骤&#xff0c;以保证所得到的运行系统和支持的文档满足质量要求。 软件开发过程管理 软件生命周期&#xff1a;可行性研究、需求分析、概要设计、详细设计、编码、测…

快速了解 Aurora DSQL

上周在 AWS re:Invent大会&#xff08;类似于阿里云的云栖大会&#xff09;上推出了新的产品 Aurora DSQL[1] &#xff0c;在数据库层面提供了多区域、多点一致性写入的能力&#xff0c;兼容 PostgreSQL。并声称&#xff0c;在多语句跨区域的场景下&#xff0c;延迟只有Google …

差异基因富集分析(R语言——GOKEGGGSEA)

接着上次的内容&#xff0c;上篇内容给大家分享了基因表达量怎么做分组差异分析&#xff0c;从而获得差异基因集&#xff0c;想了解的可以去看一下&#xff0c;这篇主要给大家分享一下得到显著差异基因集后怎么做一下通路富集。 1.准备差异基因集 我就直接把上次分享的拿到这…

运维排错系列:Excel上传失败,在剪切板有大量信息。是否保存其内容...

问题点 在导入 Excel 数据到 SAP 的时候&#xff0c;某些时刻系统会出现如下的弹窗。 上载 excel 文件时&#xff0c;您会收到错误&#xff1a;“剪贴板上有大量信息。XXX” Microsoft Office Excel 的弹出窗口显示以下信息&#xff1a; 剪贴板上存在大量信息。是否保留其内容…

Linux系统下常用资源查看

一、查看CPU使用率 top 命令 top命令可以看到总体的系统运行状态和cpu的使用率 。 %us&#xff1a;表示用户空间程序的cpu使用率&#xff08;没有通过nice调度&#xff09; %sy&#xff1a;表示系统空间的cpu使用率&#xff0c;主要是内核程序。 %ni&#xff1a;表示用户空间且…

关于一些游戏需要转区的方法

当玩非国区游戏时有时会出现乱码导致无法启动&#xff0c;此时多半需要转区来进行解决 1.下载转区软件 【转区工具】Locale Emulator 下载链接&#xff1a;Locale.Emulator.2.5.0.1.zip - 蓝奏云 用此软件可以解决大部分问题。 2.进行系统转区 首先打开控制面板选择时间与…