UltipaConfiguration
UltipaConfiguration
用于配置连接 Ultipa 数据库时所需的信息。
配置项 | 类型 | 默认值 | 说明 |
---|---|---|---|
hosts | str | Ultipa 数据库集群地址列表,用英文逗号隔开 | |
username | str | 用户名 | |
password | str | 密码 | |
timeout | int | 15 | 超时时间(秒) |
consistency | bool | False | 是否使用 leader 保证读一致性 |
crt | str | crt证书路径,使用 ssl 连接方式时需提供证书,且需要设置 overrideAuthority |
|
overrideAuthority | str | 使用 'ultipa' 覆盖 'hostname' 来匹配服务器的证书 | |
maxRecvSize | int | 4MB | 接收数据的最大字节数 |
defaultGraph | str | default | 连接时使用的图集名称 |
heartBeat | int | 10000 | 所有实例的心跳时间(毫秒),0 为关闭心跳 |
poolConfig | PoolConfig | 连接池配置 |
示例:创建一个连接,配置时使用 default 图集,实例化 UltipaClientDriver
时使用 amz 图集
public class Main {
public static void main(String[] args) {
UltipaConfiguration configuration = UltipaConfiguration.config()
.hosts("192.168.1.85:64801,192.168.1.85:64802,192.168.1.85:64803")
.username("root")
.password("root");
UltipaClientDriver driver = new UltipaClientDriver(configuration);
Connection conn = new DefaultConnection(driver,"amz");
String reply = conn.sayHello("Hi");
System.out.println(reply);
}
}
PoolConfig
PoolConfig
用于配置与连接池(Apache Common-Pool)相关的信息。
配置项 | 类型 | 默认值 | 说明 |
---|---|---|---|
maxIdle | int | 8 | 最大空闲数 |
minIdle | int | 0 | 最小空闲数 |
maxTotal | int | 8 | 最大池对象总数 |
minEvictableIdleTimeMillis | long | 1800000 | 逐出连接的最小空闲时间(毫秒) |
timeBetweenEvictionRunsMillis | long | -1 | 逐出扫描的时间间隔(毫秒),设置为负数则不运行逐出线程 |
maxWaitMillis | long | -1 | 最大等待时间(毫秒),设置为负数则无限等待 |
testOnBorrow | bool | false | 在获取对象的时候检查有效性 |
testOnReturn | bool | false | 在归还对象的时候检查有效性 |
testWhileIdle | bool | false | 在空闲时检查有效性 |
lifo | bool | true | 是否启用后进先出 |
blockWhenExhausted | bool | true | 连接耗尽时是否阻塞直到超时,false 时会在连接耗尽时报异常 |
numTestsPerEvictionRun | int | 3 | 每次逐出检查时逐出的最大数目 |
示例:创建一个连接,使用 default 图集,并对连接池进行配置
public class Main {
public static void main(String[] args) {
UltipaConfiguration configuration = UltipaConfiguration.config()
.hosts("192.168.1.85:64801,192.168.1.85:64802,192.168.1.85:64803")
.username("root")
.password("root");
PoolConfig poolConfig = configuration.getPoolConfig();
poolConfig.setMaxIdle(50);
poolConfig.setMinIdle(2);
poolConfig.setMaxTotal(200);
UltipaClientDriver driver = new UltipaClientDriver(configuration);
Connection conn = new DefaultConnection(driver);
String reply = conn.sayHello("Hi");
System.out.println(reply);
}
}
ultipa.properties
ultipa.properties
为配置文件,用于存放连接 Ultipa 数据库时所需的信息,以及和连接池相关的信息:
ultipa.properties
与UltipaConfiguration
同时存在时,数据库连接的配置将优先使用ultipa.properties
中的信息,ultipa.properties
中不包含的项再以UltipaConfiguration
的配置为准;ultipa.properties
与PoolConfig
同时存在时,连接池的配置将以ultipa.properties
中的信息为准,而忽略PoolConfig
的配置。
ultipa.properties 文件需放置于 Java 项目的 classpath 下,基于 Maven 架构的 Java 项目的 classpath 默认为 './src/main/resources'
示例:用配置文件创建一个连接
ultipa.hosts=192.168.1.85:64801,192.168.1.85:64802,192.168.1.85:64803
ultipa.username=root
ultipa.password=root
ultipa.defaultGraph=amz
ultipa.timeout=15
ultipa.consistency=false
# ultipa.crt=F:\\ultipa.crt
# ultipa.overrideAuthority=ultipa
ultipa.pool.maxIdle=50
ultipa.pool.minIdle=20
ultipa.pool.maxTotal=200
ultipa.pool.timeBetweenEvictionRunsMillis=3600000
ultipa.pool.testOnBorrow=true
public class Main {
public static void main(String[] args) {
UltipaClientDriver driver = new UltipaClientDriver();
Connection conn = new DefaultConnection(driver);
String reply = conn.sayHello("Hi");
System.out.println(reply);
}
}
DataSource
DataSrouce
用于配置与 Ultipa 数据库连接时所需的信息,以及与连接池相关的信息。DataSrouce
与 ultipa.properties
同时存在时,配置信息将以 DataSrouce
为准,而忽略 ultipa.properties
文件中的信息。
示例:创建一个连接,使用 DataSource 进行数据库连接配置与连接池配置
public class Main {
public static void main(String[] args) {
UltipaConfiguration configuration = UltipaConfiguration.config()
.hosts("192.168.1.85:64801,192.168.1.85:64802,192.168.1.85:64803")
.username("root")
.password("root");
PoolConfig poolConfig = configuration.getPoolConfig();
poolConfig.setMaxIdle(50);
poolConfig.setMinIdle(2);
poolConfig.setMaxTotal(200);
poolConfig.setMaxWaitMillis(-1);
DataSource dataSource = new DataSource();
dataSource.setUltipaConfiguration(configuration);
dataSource.setDefaultGraph("amz");
UltipaClientDriver driver = new UltipaClientDriver(dataSource);
Connection conn = new DefaultConnection(driver);
String reply = conn.sayHello("Hi");
System.out.println(reply);
}
}