GreenPlum - Schema 如何连接?

简介: GreenPlum - Schema 如何连接?

背景

最近在写多数据源的时候,遇到了 GP,因为之前倒腾过 Oracle 和 Gaussdb,他们也都有 schema 的概念,以为这个也差不多,但是发现在连接池那块总是报错 schema,如下

java.lang.AbstractMethodError: com.pivotal.jdbc.greenplumbase.ddu.setSchema

后来在一番倒腾,找到了解决方案~

方案

1、URL 拼接 Schema

这个方案是针对使用 com.pivotal.jdbc.GreenplumDriver 驱动来讲的,URL 规范jdbc:pivotal:greenplum:// 因为在如下连接的时候,绝对报上面的错

<dependency><groupId>com.pivotal.greenplum</groupId><artifactId>greenplum</artifactId><version>1.0</version></dependency>
HikariConfigconfiguration=newHikariConfig();
configuration.setJdbcUrl(url);
configuration.setUsername(username);
configuration.setPassword(password);
configuration.setDriverClassName(driverName);
configuration.setSchema(schema);
HikariDataSourcehikariDataSource=newHikariDataSource(configuration);

所以我们需要稍微改造下,采用拼接 URL,代码如下

HikariConfigconfiguration=newHikariConfig();
// 处理特殊数据库的 URLDataSourceEntityUtil.evalParam(dataSource);
configuration.setJdbcUrl(dataSource.getUrl());
configuration.setUsername(username);
configuration.setPassword(password);
configuration.setDriverClassName(driverName);
configuration.setSchema(dataSource.getSchema());
HikariDataSourcehikariDataSource=newHikariDataSource(configuration);
publicclassDataSourceEntityUtil {
publicstaticvoidevalParam(DataSourceEntitydataSource) {
IntegerdataSourceType=dataSource.getDataSourceType();
if (DataSourceTypeEnum.GREENPLUM.getType().equals(dataSourceType)) {
dataSource.setUrl(buildUrlForGreenPlum(dataSource));
// 清空 SchemadataSource.setSchema(null);
        }
    }
privatestaticStringbuildUrlForGreenPlum(DataSourceEntitydataSource) {
Stringschema=dataSource.getSchema();
Stringurl=dataSource.getUrl() +";initializationString=set search_path to "+schema;
returnurl;
    }
}

2、使用 setSchema 方法

<dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><version>42.1.1</version></dependency>

首先这种驱动,需要按照它的 URL 规范 jdbc:postgresql://XXX,然后使用下面这种方式即可,但唯一的缺点就是如果你项目中还有 GaussDB,那么它会和 GaussDB 的驱动 JAR 会依赖冲突,所以就只能转向第一种方案了,否则的话用这个即可

HikariConfigconfiguration=newHikariConfig();
configuration.setJdbcUrl(url);
configuration.setUsername(username);
configuration.setPassword(password);
configuration.setDriverClassName(driverName);
configuration.setSchema(schema);
HikariDataSourcehikariDataSource=newHikariDataSource(configuration);
目录
相关文章
|
监控 NoSQL 算法
Redis之哨兵模式
【1月更文挑战第8天】哨兵模式说白点就是:自动选举老大的模式。
465 86
|
10月前
|
算法 数据挖掘 网络安全
DeepSeek自监督学习基础与实践
自监督学习(SSL)利用未标注数据进行模型训练,通过设计预训练任务自动生成标签,学习有用的特征表示。DeepSeek提供强大工具和API,支持高效构建与训练SSL模型。本文详细介绍使用DeepSeek实现基于对比学习的自监督学习(SimCLR),涵盖数据增强、模型定义、训练及下游任务应用,并提供代码示例和常见问题解决方案,帮助读者掌握相关技巧。
|
存储 开发工具 git
GIT LFS是什么
【4月更文挑战第21天】GIT LFS是什么
2952 1
|
消息中间件 编解码 运维
阿里云 Serverless 异步任务处理系统在数据分析领域的应用
本文主要介绍异步任务处理系统中的数据分析,函数计算异步任务最佳实践-Kafka ETL,函数计算异步任务最佳实践-音视频处理等。
176235 349
|
Java 数据库连接 网络安全
springboot使用Pivotal Greenplum JDBC如何进行配置
【5月更文挑战第23天】springboot使用Pivotal Greenplum JDBC如何进行配置
432 6
|
监控 Java API
Java一分钟之-JPA事务管理:PROPAGATION_REQUIRED, PROPAGATION_REQUIRES_NEW等
【6月更文挑战第14天】Java企业开发中,事务管理确保数据一致性,Spring事务管理核心概念包括`PROPAGATION_REQUIRED`和`PROPAGATION_REQUIRES_NEW`。前者在无事务时新建,有事务时加入,常用于保证业务方法在事务中执行。后者始终创建新事务,独立于当前事务,适用于需隔离影响的场景。理解其应用场景和易错点,合理配置事务传播行为,能提升应用的健壮性和性能。通过监控和日志优化事务策略是关键。
381 1
|
SQL 关系型数据库 数据处理
|
分布式计算 Hadoop Serverless
数据处理的艺术:EMR Serverless Spark实践及应用体验
阿里云EMR Serverless Spark是基于Spark的全托管大数据处理平台,融合云原生弹性与自动化,提供任务全生命周期管理,让数据工程师专注数据分析。它内置高性能Fusion Engine,性能比开源Spark提升200%,并有成本优化的Celeborn服务。支持计算存储分离、OSS-HDFS兼容、DLF元数据管理,实现一站式的开发体验和Serverless资源管理。适用于数据报表、科学项目等场景,简化开发与运维流程。用户可通过阿里云控制台快速配置和体验EMR Serverless Spark服务。
vue3.2中setup语法糖父组件如何调用子组件中的方法
vue3.2中setup语法糖父组件如何调用子组件中的方法
vue3.2中setup语法糖父组件如何调用子组件中的方法