UltipaConfiguration
UltipaConfiguration
用于配置连接 Ultipa 数据库时所需的 server 信息。
配置项 | 类型 | 默认值 | 说明 |
---|---|---|---|
hosts | String | Ultipa 数据库集群地址列表,用英文逗号隔开 | |
username | String | 用户名 | |
password | String | 密码 | |
timeout | Integer | 15 | 请求超时时间(秒) |
connectTimeout | Integer | 2000 | 连接超时时间(毫秒),默认每个节点试三次 |
consistency | Boolean | false | 是否使用 leader 保证读一致性 |
crt | String | crt证书路径,使用 ssl 连接方式时需提供证书,且需要设置 overrideAuthority |
|
overrideAuthority | String | 使用 'ultipa' 覆盖 'hostname' 来匹配服务器的证书 | |
maxRecvSize | Integer | 4MB | 接收数据的最大字节数 |
defaultGraph | String | default | 连接时使用的图集名称 |
heartBeat | Integer | 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:60061,192.168.1.86:60061,192.168.1.87:60061")
.username("***")
.password("***");
UltipaClientDriver driver = null;
try {
driver = new UltipaClientDriver(configuration);
Connection conn = driver.getConnection("amz");
String reply = conn.sayHello("Hi");
System.out.println(reply);
} finally {
if (driver != null) {
driver.close();
}
}
}
}
PoolConfig
PoolConfig
用于配置连接 Ultipa 数据库时所需的连接池(Apache Common-Pool)信息。
配置项 | 类型 | 默认值 | 说明 |
---|---|---|---|
maxIdle | int | 8 | 最大空闲数 |
minIdle | int | 0 | 最小空闲数 |
maxTotal | int | 8 | 最大池对象总数 |
minEvictableIdleTimeMillis | long | 1800000 | 逐出连接的最小空闲时间(毫秒) |
timeBetweenEvictionRunsMillis | long | -1 | 逐出扫描的时间间隔(毫秒),设置为负数则不运行逐出线程 |
maxWaitMillis | long | -1 | 最大等待时间(毫秒),设置为负数则无限等待 |
testOnBorrow | boolean | false | 在获取对象的时候检查有效性 |
testOnReturn | boolean | false | 在归还对象的时候检查有效性 |
testWhileIdle | boolean | false | 在空闲时检查有效性 |
lifo | bool | true | 是否启用后进先出 |
blockWhenExhausted | boolean | true | 连接耗尽时是否阻塞直到超时,false 时会在连接耗尽时报异常 |
numTestsPerEvictionRun | int | 3 | 每次逐出检查时逐出的最大数目 |
示例:创建一个连接,使用 default 图集,并对连接池进行配置
public class Main {
public static void main(String[] args) {
UltipaConfiguration configuration = UltipaConfiguration.config()
.hosts("192.168.1.85:60061,192.168.1.86:60061,192.168.1.87:60061")
.username("***")
.password("***");
PoolConfig poolConfig = configuration.getPoolConfig();
poolConfig.setMaxIdle(50);
poolConfig.setMinIdle(2);
poolConfig.setMaxTotal(200);
UltipaClientDriver driver = null;
try {
driver = new UltipaClientDriver(configuration);
Connection conn = driver.getConnection();
String reply = conn.sayHello("Hi");
System.out.println(reply);
} finally {
if (driver != null) {
driver.close();
}
}
}
}
ultipa.properties
ultipa.properties
为配置文件,用于存放连接 Ultipa 数据库时所需的 server、连接池信息。
ultipa.properties 文件需放置于 Java 项目的 classpath 下,基于 Maven 架构的 Java 项目的 classpath 默认为 './src/main/resources'
使用 UltipaConfiguration
创建 UltipaClientDriver
且同时提供了 ultipa.properties
文件时:
- 数据库连接的配置将优先使用
ultipa.properties
中的信息,ultipa.properties
中不包含的项再以UltipaConfiguration
的配置为准; - 连接池的配置将以
ultipa.properties
中的信息为准,而忽略PoolConfig
的配置。
示例:用配置文件创建一个连接
ultipa.hosts=192.168.1.85:60061,192.168.1.86:60061,192.168.1.87:60061
ultipa.username=root
ultipa.password=root
ultipa.defaultGraph=amz
# 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 = null;
try {
driver = new UltipaClientDriver();
Connection conn = driver.getConnection();
String reply = conn.sayHello("Hi");
System.out.println(reply);
} finally {
if (driver != null) {
driver.close();
}
}
}
}
DataSource
DataSrouce
用于配置与 Ultipa 数据库连接时所需的信息,以及与连接池相关的信息。
使用 DataSrouce
创建 UltipaClientDriver
且同时提供了 ultipa.properties
文件时:
- 数据库连接的配置、连接池的配置都将以
DataSrouce
为准,而忽略ultipa.properties
文件中的信息。
示例:创建一个连接,使用 DataSource 进行数据库连接配置与连接池配置
public class Main {
public static void main(String[] args) {
UltipaConfiguration configuration = UltipaConfiguration.config()
.hosts("192.168.1.85:60061,192.168.1.86:60061,192.168.1.87:60061")
.username("***")
.password("***");
PoolConfig poolConfig = configuration.getPoolConfig();
poolConfig.setMaxIdle(50);
poolConfig.setMinIdle(2);
poolConfig.setMaxTotal(200);
DataSource dataSource = new DataSource();
dataSource.setUltipaConfiguration(configuration);
dataSource.setDefaultGraph("amz");
UltipaClientDriver driver = null;
try {
driver = new UltipaClientDriver(DataSource);
Connection conn = driver.getConnection();
String reply = conn.sayHello("Hi");
System.out.println(reply);
} finally {
if (driver != null) {
driver.close();
}
}
}
}
RequestConfig
RequestConfig
用于向 Ultipa 数据库发送非插入类请求时进行相关的配置。
配置项 | 类型 | 默认值 | 说明 |
---|---|---|---|
graphName | String | 当前请求使用的图集名,不设置则使用连接配置时的 defaultGraph | |
timeout | int | 15 | 请求超时时间(秒),不设置则使用连接配置时的 timeout |
host | String | 使用指定的主机进行请求,不设置则随机选择一台主机 | |
useMaster | boolean | False | 是否使用 leader 进行请求来保证读一致性 |
threadNum | int | 当前请求使用的线程数 |
示例:创建连接时使用 default 图集,执行 UQL 查询时使用 amz 图集并发送给集群的 leader
public class Main {
public static void main(String[] args) {
UltipaConfiguration configuration = UltipaConfiguration.config()
.hosts("192.168.1.85:60061,192.168.1.86:60061,192.168.1.87:60061")
.username("***")
.password("***");
UltipaClientDriver driver = null;
try {
driver = new UltipaClientDriver(configuration);
Connection conn = driver.getConnection();
String reply = conn.sayHello("Hi");
System.out.println(reply);
RequestConfig requestConfig = new RequestConfig();
requestConfig.setGraphName("amz");
requestConfig.setUseMaster(true);
Response res = conn.uql("find().nodes() as nodes return nodes{*} limit 10", requestConfig);
List<Node> nodeList = res.alias("nodes").asNodes();
for(int i = 0; i < nodeList.size(); i ++){
System.out.println("node " + i + " is: " + nodeList.get(i).toJson());
}
} finally {
if (driver != null) {
driver.close();
}
}
}
}
InsertRequestConfig
InsertRequestConfig
用于向 Ultipa 数据库发送插入类请求时进行相关的配置。
配置项 | 类型 | 默认值 | 说明 |
---|---|---|---|
graphName | String | 当前请求使用的图集名,不设置则使用连接配置时的 defaultGraph | |
timeout | int | 15 | 请求超时时间(秒),不设置则使用连接配置时的 timeout |
host | String | 使用指定的主机进行请求,不设置则随机选择一台主机 | |
useMaster | boolean | false | 是否使用 leader 进行请求来保证读一致性 |
insertType | Ultipa.InsertType | NORMAL | 插入操作的类型(NORMAL、UPSERT、OVERWRITE) |
createNodeIfNotExist | boolean | false | 插入边时如果起点或终点不存在,是否自动插入起点或终点 |
示例:创建连接时使用 default 图集,执行插入点时使用 test 图集并进行插入覆盖操作
public class Main {
public static void main(String[] args) {
UltipaConfiguration configuration = UltipaConfiguration.config()
.hosts("192.168.1.85:60061,192.168.1.86:60061,192.168.1.87:60061")
.username("***")
.password("***");
UltipaClientDriver driver = null;
Connection conn;
try {
driver = new UltipaClientDriver(configuration);
conn = driver.getConnection();
String reply = conn.sayHello("Hi");
System.out.println(reply);
InsertRequestConfig insertRequestConfig = new InsertRequestConfig();
insertRequestConfig.setGraphName("test");
insertRequestConfig.setInsertType(Ultipa.InsertType.OVERWRITE);
List<Node> nodeList = new ArrayList<>();
Node node1 = new Node();
node1.setSchema("client");
node1.setID("CLIENT00001");
nodeList.add(node1);
Node node2 = new Node();
node2.setSchema("card");
node2.setID("CARD00004");
nodeList.add(node2);
conn.insertNodesBatchAuto(nodeList, insertRequestConfig);
} finally {
if (driver != null) {
driver.close();
}
}
}
}