全部查询方法均支持使用可选配置参数(RequestConfig
或InsertRequestConfig
)来自定义向数据库发出的请求。您可使用该参数指定各种设置,如图集名称、超时时间和主机,根据自身需求定制请求。
RequestConfig
RequestConfig
用来定义向数据库发送非插入请求时所需的配置。
package main
import (
"log"
"github.com/ultipa/ultipa-go-sdk/sdk"
"github.com/ultipa/ultipa-go-sdk/sdk/configuration"
)
func main() {
config, _ := configuration.NewUltipaConfig(&configuration.UltipaConfig{
Hosts: []string{"192.168.1.85:60061", "192.168.1.86:60061", "192.168.1.87:60061"},
Username: "***",
Password: "***",
})
conn, _ := sdk.NewUltipa(config)
requestConfig := &configuration.RequestConfig{
GraphName: "miniCircle",
RequestType: configuration.RequestType_Task,
}
uqlResult, err := conn.Uql("find().nodes({@account.year > 2000}) as nodes return nodes{*} limit 5", requestConfig)
log.Print(uqlResult, err)
}
RequestConfig
包含如下字段:
字段 | 类型 | 默认 | 描述 |
---|---|---|---|
GraphName |
string | 待使用的图集;若未设定,则为建立连接时配置的defaultGraph |
|
Timeout |
int32 | 1000 | 请求超时时间,单位为秒 |
ClusterId |
string | 指定要使用的集群 | |
Host |
string | 将请求发送到指定的主机节点,如果没有设置,则发送到随机的主机节点 | |
UseMaster |
bool | FALSE | 设置为true 时,将请求发送到leader节点以保证一致性读取 |
UseControl |
bool | FALSE | 设置为true 时,将请求发送到控制节点 |
RequestType |
RequestType or int32 | 0 | 根据请求类型将请求发送到相应节点:RequestType_Write 或 1:发送到leader节点 RequestType_Task 或 2:发送到算法节点 RequestType_Normal 或 3:发送到随机主机 |
Uql |
string | 内部程序使用的UQL语句 | |
Timezone |
string | 要使用的时区 | |
TimezoneOffset |
int64 | 所用时区与UTC的时间差(秒) | |
ThreadNum |
uint32 | 线程数 | |
MaxPkgSize |
int | 10M | 最大包大小(字节),适用于发送和接收数据 |
InsertRequestConfig
InsertRequestConfig
用于定义向数据库发送数据插入或删除请求时所需的配置。
package main
import (
ultipa "github.com/ultipa/ultipa-go-sdk/rpc"
"github.com/ultipa/ultipa-go-sdk/sdk"
"github.com/ultipa/ultipa-go-sdk/sdk/configuration"
"github.com/ultipa/ultipa-go-sdk/sdk/structs"
)
func main() {
config, _ := configuration.NewUltipaConfig(&configuration.UltipaConfig{
Hosts: []string{"192.168.1.85:60061", "192.168.1.86:60061", "192.168.1.87:60061"},
Username: "***",
Password: "***",
})
conn, _ := sdk.NewUltipa(config)
requestConfig := &configuration.RequestConfig{
GraphName: "test",
}
insertRequestConfig := &configuration.InsertRequestConfig{
RequestConfig: requestConfig,
InsertType: ultipa.InsertType_OVERWRITE,
}
var nodes []*structs.Node
newNode1 := structs.NewNode()
newNode1.Schema = "card"
newNode1.ID = "ULTIPA8000000000000001"
newNode1.Set("amount", float32(3235.2))
nodes = append(nodes, newNode1)
newNode2 := structs.NewNode()
newNode2.Schema = "client"
newNode2.ID = "ULTIPA8000000000000007"
newNode2.Set("level", int32(77))
nodes = append(nodes, newNode2)
conn.InsertNodesBatchAuto(nodes, insertRequestConfig)
}
InsertRequestConfig
包含以下字段:
字段 | 类型 | 默认值 | 描述 |
---|---|---|---|
GraphName |
string | 要使用的图名称。如果没有设置,则使用建立连接时配置的 graphSetName |
|
Timeout |
int32 | 1000 | 请求超时时间,单位为秒 |
ClusterId |
string | 指定要使用的集群 | |
Host |
string | 将请求发送到指定主机节点,若未设置则发送到随机主机节点 | |
UseMaster |
bool | FALSE | 设置为true 时,将请求发送到leader节点以保证一致性读取 |
UseControl |
bool | FALSE | 设置为true 时,将请求发送到控制节点 |
RequestType |
RequestType or int32 | 0 | 根据请求类型发送到相应节点:RequestType_Write 或 1:发送到 leader 节点 RequestType_Task 或 2:发送到算法节点 RequestType_Normal 或 3:发送到随机主机 |
Uql |
string | 内部程序使用的UQL语句 | |
Timezone |
string | 要使用的时区 | |
TimezoneOffset |
int64 | 所用时区与UTC的时间差(秒) | |
ThreadNum |
uint32 | 线程数 | |
MaxPkgSize |
int | 10M | 最大包大小(字节),适用于发送和接收数据 |
InsertType |
ultipa.InsertType or int32 | 0 | 插入模式:InsertType_NORMAL (或 0)InsertType_OVERWRITE (或 1)InsertType_UPSERT 或2 |
CreateNodeIfNotExist |
bool | FALSE | 当目标节点在图中不存在时,是否创建边的起点/终点 |
Silent |
bool | FALSE | 插入成功后,是否保持静默,即是否返回插入的节点或边 |