UltipaConfig
UltipaConfig
用于配置连接嬴图数据库时所需的server信息。
配置项 |
类型 |
默认值 |
说明 |
---|---|---|---|
Hosts | []string | 嬴图数据库集群IP地址列表或服务器URL地址(不包括 "https://" 或 "http://") | |
Username | string | 用户名 | |
Password | string | 密码 | |
DefaultGraph | string | 连接时使用的图集名 | |
MaxRecvSIze | int | 10MB | 接收数据的最大字节数 |
Consistency | bool | false | 是否使用leader保证读一致性 |
CurrentGraph | string | default | 当前使用的图集名 |
CurrentClusterId | string | name server的集群ID | |
Timeout | uint32 | 1000 | 发送请求时的超时时间(秒) |
Debug | bool | false | 是否使用debug模式 |
HeartBeat | int | 0 | 所有实例的心跳时间(秒),0则为关闭心跳时间 |
示例:创建一个嬴图连接,使用代码进行配置
func TestMisc(t *testing.T) {
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)
testResult, _ := conn.Test()
println(testResult)
}
yaml配置文件
yaml配置文件用于存放连接嬴图数据库时所需的server信息。yaml文件中的变量名与UltipaConfig
的配置项略有不同:
yaml变量名 | 对应的配置项 |
---|---|
hosts | Hosts |
username | Username |
password | Password |
default_graph | DefaultGraph |
crt | Crt |
max_recv_size | MaxRecvSIze |
consistency | Consistency |
current_graph | CurrentGraph |
current_cluster_id | CurrentClusterId |
timeout | Timeout |
debug | Debug |
heart_beat | HeartBeat |
示例:创建一个嬴图连接,使用yaml文件进行配置,将配置文件testConfig.yml放置于当前go文件的目录下
hosts:
- "192.168.1.85:60061"
- "192.168.1.86:60061"
- "192.168.1.87:60061"
username: ***
password: ***
default_graph: amz
timeout:: 300
func TestMisc(t *testing.T) {
config, _ := configuration.LoadConfigFromYAML("./testConfig.yml")
conn, _ := sdk.NewUltipa(config)
testResult, _ := conn.Test()
println(testResult)
}
RequestConfig
RequestConfig
用于向嬴图数据库发送非插入类请求时进行相关的配置。
配置项 | 类型 | 默认值 | 说明 |
---|---|---|---|
GraphName | string | 当前请求使用的图集名,不设置则使用连接配置时的DefaultGraph | |
Timeout | uint32 | 0 | 发送请求时的超时时间(秒) |
ClusterId | string | name server的集群ID | |
Host | string | 使用指定的主机进行请求,不设置则随机选择一台主机 | |
UseMaster | bool | false | 是否使用leader进行请求来保证读一致性 |
UseControl | bool | false | 是否使用control节点进行请求 |
RequestType | RequestType或int32 | 0 | 根据请求类型选择请求发送方式: RequestType_Write或1时,将增、删、改请求发送至leader RequestType_Task或2时,将任务类嬴图GQL语句发送至algo(算法节点) RequestType_Normal或3时,随机选择一台主机进行发送 |
Uql | string | 内部程序使用的嬴图GQL语句 |
示例:创建连接时使用default图集,执行嬴图GQL时使用amz图集,发送至算法节点并执行算法回写
func TestMisc(t *testing.T) {
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: "amz",
RequestType: configuration.RequestType_Task,
}
conn.UQL("algo(degree).params().write({db:{property: \"degree\"}})", requestConfig)
}
InsertRequestConfig
InsertRequestConfig
用于向嬴图数据库发送插入类请求时进行相关的配置。
配置项 | 类型 | 默认值 | 说明 |
---|---|---|---|
GraphName | string | 当前请求使用的图集名,不设置则使用连接配置时的DefaultGraph | |
Timeout | uint32 | 0 | 发送请求时的超时时间(秒) |
ClusterId | string | name server的集群ID | |
Host | string | 使用指定的主机进行请求,不设置则随机选择一台主机 | |
UseMaster | bool | false | 是否使用leader进行请求来保证读一致性 |
UseControl | bool | false | 是否使用control节点进行请求 |
RequestType | RequestType或int32 | 0 | 根据请求类型选择请求发送方式: RequestType_Write或1时,将增、删、改请求发送至leader RequestType_Task或2时,将任务类嬴图GQL语句发送至algo(算法节点) RequestType_Normal或3时,随机选择一台主机进行发送 |
Uql | string | 内部程序使用的嬴图GQL语句 | |
InsertType | ultipa.InsertType或int32 | 0 | 插入操作的类型: InsertType_NORMAL或0时,为普通插入操作 InsertType_OVERWRITE或1时,为插入覆盖操作 InsertType_UPSERT或2时,为插入更新操作 |
CreateNodeIfNotExist | bool | false | 插入边时如果起点或终点不存在,是否自动插入起点或终点 |
示例:创建连接时使用default图集,执行插入点时使用test图集并进行插入覆盖操作
func TestMisc(t *testing.T) {
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)
}