UltipaConfiguration
UltipaConfiguration
用于配置连接嬴图数据库时所需的服务器信息。
配置项 |
类型 |
默认值 |
说明 |
---|---|---|---|
hosts | String | 嬴图服务器或集群(英文逗号隔开)的IP地址或URL地址(不包括 "https://" 或 "http://") | |
username | String | 嬴图服务器用户名 | |
password | String | 上述用户名对应的密码 | |
passwordEncrypt | String | MD5 | password 的加密方式;可配置为MD5或LDAP,或者NOTHING(不进行加密);配置内容为空时使用NOTHING |
timeout | Integer | 15 | 请求超时时间(秒) |
connectTimeout | Integer | 2000 | 连接超时时间(毫秒),默认每个节点试三次 |
consistency | Boolean | false | 是否使用leader保证读一致性 |
crt | String | 设置为本地证书地址时,使用SSL连接,并且需要设置overrideAuthority ;设置为"https"时(要求hosts 填写的URL使用HTTPS协议),使用公共证书;忽略此项或设置为空时,使用非SSL连接 |
|
keepAlive | Integer | 120 | 当连接的空闲状态超过设定的时长(秒)时,向服务器发送保活探测信息,这会增加一定的服务负载 |
keepAliveWithoutCalls | Boolean | false | 当连接处于空闲状态时,是否启用保活机制 |
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("root")
.password("root");
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
用于配置连接嬴图数据库时所需的连接池(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 | true | 在归还对象的时候检查有效性 |
testWhileIdle | boolean | true | 在空闲时检查有效性 |
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
为配置文件,用于存放连接嬴图数据库时所需的server、连接池信息。
ultipa.properties文件需放置于Java项目的classpath下,基于Maven架构的Java项目的classpath默认为'./src/main/resources'。
各配置项的取值顺序为:优先使用UltipaConfiguration
的配置,其次为ultipa.properties
文件,都没有的使用默认值。
示例:用配置文件创建一个连接
ultipa.hosts=192.168.1.85:60061,192.168.1.86:60061,192.168.1.87:60061
ultipa.username=root
ultipa.password=root
ultipa.passwordEncrypt=NOTHING
ultipa.defaultGraph=amz
# ultipa.crt=F:\\ultipa.crt
# ultipa.overrideAuthority=ultipa
# ultipa.crt=https
# ultopa.crt=
ultipa.keepAlive=180
ultipa.keepAliveWithoutCalls=true
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
用于配置与嬴图数据库连接时所需的信息,以及与连接池相关的信息。
使用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
用于向嬴图数据库发送非插入类请求时进行相关的配置。
配置项 | 类型 | 默认值 | 说明 |
---|---|---|---|
graphName | String | 当前请求使用的图集名,不设置则使用连接配置时的defaultGraph | |
timeout | int | 15 | 请求超时时间(秒),不设置则使用连接配置时的timeout |
host | String | 使用指定的主机进行请求,不设置则随机选择一台主机 | |
useMaster | boolean | False | 是否使用leader进行请求来保证读一致性 |
threadNum | int | 当前请求使用的线程数 |
示例:创建连接时使用default图集,执行嬴图GQL查询时使用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
用于向嬴图数据库发送插入类请求时进行相关的配置。
配置项 | 类型 | 默认值 | 说明 |
---|---|---|---|
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");
node1.setID("CARD00004");
nodeList.add(node2);
} finally {
if (driver != null) {
driver.close();
}
}
conn.insertNodesBatchAuto(nodeList, insertRequestConfig);
}
}