ConnectionPool
ConnectionPool
用于配置连接嬴图数据库时所需的连接池信息。
配置项 |
类型 |
说明 |
---|---|---|
hosts | string[] | 嬴图数据库集群IP地址列表或服务器URL地址(不包括 "https://" 或 "http://") |
username | string | 用户名 |
password | string | 密码 |
crt | buffer | 如需使用SSL方式连接,需提供证书 |
defaultConfig | ULTIPA.UltipaConfig | 其他配置,比如图集、超时、一致性等 |
otherParams | object | 包含两个键值对:isHttps 和isHttp ,它们的值都是布尔值;如果都设置为true,优先使用HTTP;如果忽略此项,先使用HTTP连接,如果失败再使用HTTPS |
示例:创建一个嬴图连接
import { ConnectionPool } from "@ultipa-graph/ultipa-node-sdk";
import fs from "fs";
let sdkUsage = async () => {
let hosts = [
"192.168.1.85:60061",
"192.168.1.86:60061",
"192.168.1.87:60061"
];
let username = "***";
let password = "***";
let crt: Buffer;
{ // if uses crt
let crt_file_path = "./ultipa.crt";
crt = fs.readFileSync(crt_file_path);
}
let connPool = new ConnectionPool(hosts, username, password, crt);
let conn = await connPool.getActive();
let isSuccess = await conn.test();
console.log(isSuccess);
};
sdkUsage().then(console.log).catch(console.log);
UltipaConfig
ULTIPA.UltipaConfig
用于配置连接嬴图数据库时所需的图集等信息。
配置项 | 类型 | 说明 |
---|---|---|
graphSetName | string | 连接时使用的图集名称,不设置则使用default图集 |
timeout | number | 请求超时时间(秒) |
consistency | boolean | 是否使用leader保证读一致性 |
示例:创建一个嬴图连接,使用图集amz
import { ConnectionPool } from "@ultipa-graph/ultipa-node-sdk";
let sdkUsage = async () => {
let hosts = [
"192.168.1.85:60061",
"192.168.1.86:60061",
"192.168.1.87:60061"
];
let username = "***";
let password = "***";
let connPool = new ConnectionPool(hosts, username, password);
connPool.defaultConfig = { graphSetName: "amz" };
let conn = await connPool.getActive();
let isSuccess = await conn.test();
console.log(isSuccess);
};
sdkUsage().then(console.log).catch(console.log);
RequestConfig
RequestType.RequestConfig
用于向嬴图数据库发送非插入类请求时进行相关的配置。
配置项 | 类型 | 说明 |
---|---|---|
graphSetName | string | 当前请求使用的图集名,不设置则使用连接配置时的graphSetName |
timeout | number | 请求超时时间(秒) |
useHost | string | 使用指定的主机进行请求,不设置则随机选择一台主机 |
useMaster | boolean | 是否使用leader进行请求来保证读一致性 |
retry | object | 请求失败重试配置 |
stream | Stream | 是否流式返回 |
threadNum | number | 当前请求使用的线程数 |
clusterId | string | 指定集群ID |
示例:创建连接时使用default图集,执行嬴图GQL查询时使用amz图集并发送给集群的leader
import { ConnectionPool } from "@ultipa-graph/ultipa-node-sdk";
import { RequestType } from "@ultipa-graph/ultipa-node-sdk/dist/types";
let sdkUsage = async () => {
let hosts = [
"192.168.1.85:60061",
"192.168.1.86:60061",
"192.168.1.87:60061"
];
let username = "***";
let password = "***";
let connPool = new ConnectionPool(hosts, username, password);
let conn = await connPool.getActive();
let isSuccess = await conn.test();
console.log(isSuccess);
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "amz",
useMaster: true,
};
let uqlResult = await conn.uql(`find().nodes([1]) as n return n.name`, requestConfig);
console.log(uqlResult.data?.alias("n.name").asAttrs());
};
sdkUsage().then(console.log).catch(console.log);
InsertRequestConfig
RequestType.InsertRequestConfig
用于向嬴图数据库发送插入类请求时进行相关的配置。
配置项 | 类型 | 说明 |
---|---|---|
graphSetName | string | 当前请求使用的图集名,不设置则使用连接配置时 graphSetName |
timeout | number | 请求超时时间(秒) |
useHost | string | 使用指定的主机进行请求,不设置则随机选择一台主机 |
useMaster | boolean | 是否使用leader进行请求来保证读一致性 |
retry | object | 请求失败重试配置 |
stream | Stream | 是否流式返回 |
threadNum | number | 当前请求使用的线程数 |
clusterId | string | 指定集群ID |
insertType | ULTIPA.InsertType | 插入操作的类型(INSERT_TYPE_NORMAL、INSERT_TYPE_UPSERT、INSERT_TYPE_OVERWRITE) |
createNodeIfNotExist | boolean | 插入边时如果起点或终点不存在,是否自动插入起点或终点 |
示例:创建连接时使用default图集,执行插入点时使用test图集并进行插入覆盖操作
import { ConnectionPool, ULTIPA } from "@ultipa-graph/ultipa-node-sdk";
import { RequestType } from "@ultipa-graph/ultipa-node-sdk/dist/types";
let sdkUsage = async () => {
let hosts = [
"192.168.1.85:60061",
"192.168.1.86:60061",
"192.168.1.87:60061"
];
let username = "***";
let password = "***";
let connPool = new ConnectionPool(hosts, username, password);
let conn = await connPool.getActive();
let isSuccess = await conn.test();
console.log(isSuccess);
let node1 = new ULTIPA.Node();
node1.schema = "card";
node1.id = "ULTIPA8000000000000001";
node1.values = {balance: Number(3235.2)};
let node2 = new ULTIPA.Node();
node2.schema = "client";
node2.id = "ULTIPA800000000000000B";
node2.values = {level: Number(7)};
let nodes = [node1, node2];
let insertRequestConfig = <RequestType.InsertRequestConfig>{
graphSetName: "test",
insertType: ULTIPA.InsertType.INSERT_TYPE_OVERWRITE,
};
let uqlResult = await conn.insertNodesBatchAuto(nodes, insertRequestConfig);
console.log(uqlResult.status.code);
};
sdkUsage().then(console.log).catch(console.log);