嬴图Go驱动提供一系列数据类,用于应用与图数据库的交互。所有数据类均支持getter方法获取属性和setter方法设置属性。
Node
Node
值包含以下字段:
字段 |
类型 |
默认 |
描述 |
---|---|---|---|
UUID |
types.UUID (uint64) |
/ | 点_uuid |
ID |
types.ID (string) |
/ | 点_id |
Schema |
string | / | 点所属的Schema名称 |
Values |
map[string]interface{}{} |
/ | 点属性键值对 |
requestConfig := &configuration.RequestConfig{
Graph: "miniCircle",
}
response, _ := driver.Gql("MATCH (n) RETURN n LIMIT 5", requestConfig)
nodes, _, _ := response.Alias("n").AsNodes()
fmt.Println("ID of the first node:", nodes[0].GetID())
fmt.Println("Name of the first node:", nodes[0].GetValues().Get("name"))
ID of the first node: ULTIPA800000000000004B
Name of the first node: Claire89
Edge
Edge
值包含以下字段:
字段 |
类型 |
默认 |
描述 |
---|---|---|---|
UUID |
tyeps.UUID (uint64) |
/ | 边_uuid |
FromUUID |
types.UUID (uint64) |
/ | 边起点的_uuid |
ToUUID |
types.UUID (uint64) |
/ | 边终点的_uuid |
From |
types.ID (string) |
/ | 边起点的_id |
To |
types.ID (string) |
/ | 边终点的_id |
Schema |
string | / | 边所属的Schema名称 |
Values |
map[string]interface{}{} |
/ | 边属性键值对 |
requestConfig := &configuration.RequestConfig{
Graph: "miniCircle",
}
response, _ := driver.Gql("MATCH ()-[e]->() RETURN e LIMIT 3", requestConfig)
edges, _, _ := response.Alias("e").AsEdges()
for _, edge := range edges {
fmt.Println(edge.GetValues())
}
&{map[fromUuid:7 toUuid:13 uuid:110]}
&{map[datetime:2018-09-19T12:38:33.000Z fromUuid:7 timestamp:2018-09-19T12:38:33.000+08:00 toUuid:1032 uuid:1391]}
&{map[datetime:2018-12-07T01:56:00.000Z fromUuid:7 timestamp:2018-12-07T01:56:00.000+08:00 toUuid:1005 uuid:1390]}
Path
Path
值包含以下字段:
字段 |
类型 |
默认 |
描述 |
---|---|---|---|
NodeUUIDs |
[]types.UUID |
/ | 路径中点的_uuid 列表 |
EdgeUUIDs |
[]types.UUID |
/ | 路径中边的_uuid 列表 |
Nodes |
map[types.UUID]*Node |
/ | 路径中点的映射,其中键是点的_uuid ,值是相应的点 |
Edges |
map[types.UUID]*Edge |
/ | 路径中边的映射,其中键是边的_uuid ,值是相应的边 |
Path
值支持的方法:
方法 |
返回值 |
描述 |
---|---|---|
Length() |
int | 获取路径长度,即路径中的边数量 |
requestConfig := &configuration.RequestConfig{
Graph: "miniCircle",
}
response, _ := driver.Gql("MATCH p = ()-[]-()-[]-() RETURN p LIMIT 3", requestConfig)
graph, _ := response.Alias("p").AsGraph()
fmt.Println("Nodes in each returned path:")
paths := graph.Paths
for _, path := range paths {
fmt.Println(path.NodeUUIDs)
}
Nodes in each returned path:
[6196955286285058053 7998395137233256458 8214567919347040276]
[6196955286285058053 7998395137233256458 8214567919347040276]
[6196955286285058053 7998395137233256458 5764609722057490442]
Graph
Graph
值包含以下字段:
字段 |
类型 |
默认 |
描述 |
---|---|---|---|
Paths |
[]*Path |
/ | 返回的路径列表 |
Nodes |
map[types.UUID]*Node |
/ | 路径中点的映射,其中键是点的_uuid ,值是相应的点 |
Edges |
map[types.UUID]*Edge |
/ | 路径中边的映射,其中键是边的_uuid ,值是相应的边 |
Graph
值支持的方法:
方法 |
参数 |
返回值 |
描述 |
---|---|---|---|
AddNode() |
node: *Node |
/ | 向Nodes 中新增一个点 |
AddEdge() |
edge: *Edge |
/ | 向Edges 中新增一条边 |
requestConfig := &configuration.RequestConfig{
Graph: "miniCircle",
}
response, _ := driver.Gql("MATCH p = ()-[]-()-[]-() RETURN p LIMIT 3", requestConfig)
graph, _ := response.Alias("p").AsGraph()
fmt.Println("Nodes in each returned path:")
paths := graph.Paths
for _, path := range paths {
fmt.Println(path.NodeUUIDs)
}
fmt.Println("----------")
fmt.Println("Nodes in the graph formed by all returned paths:")
for key := range graph.Nodes {
fmt.Print(key, " ")
}
Nodes in each returned path:
[6196955286285058053 7998395137233256458 8214567919347040276]
[6196955286285058053 7998395137233256458 8214567919347040276]
[6196955286285058053 7998395137233256458 5764609722057490442]
----------
Nodes in the graph formed by all returned paths:
6196955286285058053 7998395137233256458 8214567919347040276 5764609722057490442
GraphSet
GraphSet
值包含以下字段:
字段 |
类型 |
默认 |
描述 |
---|---|---|---|
ID |
types.ID (string) |
/ | 图ID |
Name |
string | / | 图名称 |
TotalNodes |
uint64 | / | 图中点的总数 |
TotalEdges |
uint64 | / | 图中边的总数 |
Shards |
[]string | / | 用来存储图的Shard服务器的ID列表 |
PartitionBy |
string | Crc32 |
用于图分片的哈希函数,包括Crc32 、Crc64WE 、Crc64XZ 和CityHash64 |
Status |
string | / | 图状态,包括NORMAL 、LOADING_SNAPSHOT 、CREATING 、DROPPING 和SCALING |
Description |
string | / | 图描述 |
SlotNum |
int | / | 图分片使用的槽数量 |
response, _ := driver.Gql("SHOW GRAPH", nil)
graphs, _ := response.Alias("_graph").AsGraphSets()
for _, graph := range graphs {
fmt.Println(graph.Name)
}
DFS_EG
cyber
netflow
Schema
Schema
值包含以下字段:
字段 |
类型 |
默认 |
描述 |
---|---|---|---|
Name |
string | / | Schema名称 |
DBType |
ultipa.DBType |
DBNODE |
Schema类型,包括DBNODE 和DBEDGE |
Properties |
[]*Property |
/ | 与Schema关联的属性列表 |
Description |
string | / | Schema描述 |
Total |
uint64 | / | 属于该Schema的点或边总数 |
Id |
string | / | Schema ID |
Stats |
[]*SchemaStat |
/ | 一个SchemaStat 值列表,每个SchemaStat 值包含字段Schema (schema名称)、DBType (schema类型)、FromSchema (起点schema)、ToSchema (终点schema)以及Count (点或边的数量) |
requestConfig := &configuration.RequestConfig{
Graph: "miniCircle",
}
response, _ := driver.Gql("SHOW NODE SCHEMA", requestConfig)
schemas, _ := response.Alias("_nodeSchema").AsSchemas()
for _, schema := range schemas {
fmt.Println(schema.Name)
}
default
account
celebrity
country
movie
Property
Property
值包含以下字段:
字段 |
类型 |
默认 |
描述 |
---|---|---|---|
Name |
string | / | 属性名 |
Type |
ultipa.PropertyType |
UNSET |
属性值类型,包括INT32 、UINT32 、INT64 、UINT64 、FLOAT 、DOUBLE 、DECIMAL 、STRING 、TEXT 、DATETIME 、TIMESTAMP 、BLOB 、BOOL 、POINT 、LIST 、SET 、MAP 、NULL_ 和UNSET |
SubTypes |
[]ultipa.PropertyType |
/ | 如果Type 为LIST 或SET ,设定其元素类型;列表内只能包括一个ultipa.PropertyType |
Schema |
string | / | 属性关联的Schema名称 |
Description |
string | / | 属性描述 |
Lte |
bool | / | 属性是否加载到引擎(LTE) |
Read |
bool | / | 属性是否可读 |
Write |
bool | / | 属性是否可写 |
Encrypt |
string | / | 属性加密方法,包括AES128 、AES256 、RSA 和ECC |
DecimalExtra |
*DecimalExtra |
/ | DECIMAL 类型的精度(1到65)和标度(0到30) |
requestConfig := &configuration.RequestConfig{
Graph: "miniCircle",
}
response, _ := driver.Gql("SHOW NODE account PROPERTY", requestConfig)
properties, _ := response.Alias("_nodeProperty").AsProperties()
for _, property := range properties {
fmt.Println(property.Name)
}
title
profile
age
name
logo
Attr
Attr
值包含以下字段:
字段 |
类型 |
默认 |
描述 |
---|---|---|---|
Name |
string | / | 返回的别名 |
Values |
Value |
[]interface{} |
返回值 |
PropertyType |
ultipa.PropertyType |
UNSET |
返回的属性类型 |
ResultType |
ultipa.ResultType |
RESULT_TYPE_UNSET |
返回结果的类型,包括RESULT_TYPE_NODE 、RESULT_TYPE_EDGE 、RESULT_TYPE_PATH 、RESULT_TYPE_ATTR 、RESULT_TYPE_TABLE 和RESULT_TYPE_UNSET |
requestConfig := &configuration.RequestConfig{
Graph: "miniCircle",
}
response, _ := driver.Gql("MATCH (n:account) RETURN n.name LIMIT 3", requestConfig)
attr, _ := response.Alias("n.name").AsAttr()
fmt.Println("Name:", attr.Name)
fmt.Println("Values:", attr.Values)
fmt.Println("Type:", attr.PropertyType)
Name: n.name
Values: [Velox K03 Lunatique]
Type: STRING
Table
Table
值包含以下字段:
字段 |
类型 |
默认 |
描述 |
---|---|---|---|
Name |
string | / | 表名称 |
Headers |
[]*Header |
/ | 表头 |
Rows |
[]*Values |
/ | 表中的行 |
Table
值支持的方法:
方法 |
返回值 |
描述 |
---|---|---|
ToKV() |
[]*Values |
将表中的所有行转换成映射列表 |
requestConfig := &configuration.RequestConfig{
Graph: "miniCircle",
}
response, _ := driver.Gql("MATCH (n:account) RETURN table(n._id, n.name) LIMIT 3", requestConfig)
table, _ := response.Get(0).AsTable()
fmt.Println("Header:")
for _, header := range table.Headers {
fmt.Println(header)
}
rows := table.ToKV()
fmt.Println("First Row:", rows[0])
Header:
&{n._id STRING}
&{n.name STRING}
First Row: &{map[n._id:ULTIPA800000000000003B n.name:Velox]}
HDCGraph
HDCGraph
值包含以下字段:
字段 |
类型 |
默认 |
描述 |
---|---|---|---|
Name |
string | / | HDC图名称 |
GraphName |
string | / | HDC图的源图名称 |
Status |
string | / | HDC图状态 |
Stats |
string | / | HDC图的统计信息 |
IsDefault |
string | / | 是否为源图的默认HDC图 |
HdcServerName |
string | / | 托管HDC图的HDC服务器名称 |
HdcServerStatus |
string | / | 托管HDC图的HDC服务器状态 |
Config |
string | / | HDC图的配置 |
requestConfig := &configuration.RequestConfig{
Graph: "miniCircle",
}
response, _ := driver.Gql("SHOW HDC GRAPH", requestConfig)
hdcGraphs, _ := response.Alias("_hdcGraphList").AsHDCGraphs()
for _, hdcGraph := range hdcGraphs {
fmt.Println(hdcGraph.Name, "on", hdcGraph.HDCServerName)
}
miniCircle_hdc_graph on hdc-server-1
miniCircle_hdc_graph2 on hdc-server-2
Algo
Algo
值包含以下字段:
字段 |
类型 |
默认 |
描述 |
---|---|---|---|
Name |
string | / | 算法名称 |
Type |
string | / | 算法类型 |
Version |
string | / | 算法版本 |
Params |
[]*AlgoParam |
/ | 算法参数,每个AlgoParam 有字段Name 和Desc |
WriteSupportType |
string | / | 算法支持的回写类型 |
CanRollback |
string | / | 算法版本是否可回退 |
ConfigContext |
string | / | 算法配置文件内容 |
response, _ := driver.Gql("SHOW HDC ALGO ON 'hdc-server-1'", nil)
algos, _ := response.Alias("_algoList").AsAlgos()
for _, algo := range algos {
fmt.Print(algo.Name, " supports writeback type(s): ")
if algo.WriteSupportType != "" {
fmt.Print(algo.WriteSupportType)
} else {
fmt.Print("None")
}
fmt.Println()
}
fastRP supports writeback type(s): DB,FILE
schema_overview supports writeback type(s): None
Projection
Projection
值包含以下字段:
字段 |
类型 |
默认 |
描述 |
---|---|---|---|
Name |
string | / | 映射名称 |
GraphName |
string | / | 映射的源图名称 |
Status |
string | / | 映射状态 |
Stats |
string | / | 映射的统计信息 |
Config |
string | / | 映射的配置 |
requestConfig := &configuration.RequestConfig{
Graph: "miniCircle",
}
response, _ := driver.Gql("SHOW PROJECTION", requestConfig)
projections, _ := response.Alias("_projectionList").AsProjections()
for _, projection := range projections {
fmt.Println(projection.Name)
}
miniCircle_projection_1
Index
Index
值包含以下字段:
字段 |
类型 |
默认 |
描述 |
---|---|---|---|
Id |
string | / | 索引ID |
Name |
string | / | 索引名称 |
Properties |
string | / | 索引关联的属性 |
Schema |
string | / | 索引关联的schema |
Status |
string | / | 索引状态 |
DBType |
ultipa.DBType |
DBNODE |
索引类型,包括DBNODE 和DBEDGE |
requestConfig := &configuration.RequestConfig{
Graph: "miniCircle",
}
response, _ := driver.Gql("SHOW NODE INDEX", requestConfig)
indexList, _ := response.Alias("_nodeIndex").AsIndexes()
for _, index := range indexList {
fmt.Println(index.Schema, "-", index.Properties)
}
account - gender(6),year
Privilege
Privilege
值包含以下字段:
字段 |
类型 |
默认 |
描述 |
---|---|---|---|
Name |
string | / | 权限名称 |
Level |
PrivilegeLevel |
/ | 权限级别,包括SystemPrivilege 和GraphPrivilege |
response, _ := driver.Uql("show().privilege()", nil)
privileges, _ := response.Alias("_privilege").AsPrivileges()
var graphPrivileges []string
var systemPrivileges []string
for _, privilege := range privileges {
if privilege.Level == structs.GraphPrivilege {
graphPrivileges = append(graphPrivileges, privilege.Name)
} else {
systemPrivileges = append(systemPrivileges, privilege.Name)
}
}
fmt.Println("Graph Privileges:", graphPrivileges)
fmt.Println("System Privileges:", systemPrivileges)
Graph Privileges: [READ INSERT UPSERT UPDATE DELETE CREATE_SCHEMA DROP_SCHEMA ALTER_SCHEMA SHOW_SCHEMA RELOAD_SCHEMA CREATE_PROPERTY DROP_PROPERTY ALTER_PROPERTY SHOW_PROPERTY CREATE_FULLTEXT DROP_FULLTEXT SHOW_FULLTEXT CREATE_INDEX DROP_INDEX SHOW_INDEX LTE UFE CLEAR_JOB STOP_JOB SHOW_JOB ALGO CREATE_PROJECT SHOW_PROJECT DROP_PROJECT CREATE_HDC_GRAPH SHOW_HDC_GRAPH DROP_HDC_GRAPH COMPACT_HDC_GRAPH SHOW_VECTOR_INDEX CREATE_VECTOR_INDEX DROP_VECTOR_INDEX SHOW_CONSTRAINT CREATE_CONSTRAINT DROP_CONSTRAINT]
System Privileges: [TRUNCATE COMPACT CREATE_GRAPH SHOW_GRAPH DROP_GRAPH ALTER_GRAPH CREATE_GRAPH_TYPE SHOW_GRAPH_TYPE DROP_GRAPH_TYPE TOP KILL STAT SHOW_POLICY CREATE_POLICY DROP_POLICY ALTER_POLICY SHOW_USER CREATE_USER DROP_USER ALTER_USER SHOW_PRIVILEGE SHOW_META SHOW_SHARD ADD_SHARD DELETE_SHARD REPLACE_SHARD SHOW_HDC_SERVER ADD_HDC_SERVER DELETE_HDC_SERVER LICENSE_UPDATE LICENSE_DUMP GRANT REVOKE SHOW_BACKUP CREATE_BACKUP SHOW_VECTOR_SERVER ADD_VECTOR_SERVER DELETE_VECTOR_SERVER]
Policy
Policy
值包含以下字段:
字段 |
类型 |
默认 |
描述 |
---|---|---|---|
Name |
string | / | 策略名称 |
SystemPrivileges |
[]string | / | 策略中包含的系统权限 |
GraphPrivileges |
GraphPrivileges |
/ | 策略中包含的图集权限;在映射中,键是图集名称,值是相应的图集权限 |
PropertyPrivileges |
PropertyPrivileges |
/ | 策略中包含的属性权限;PropertyPrivilege 有Node 和Edge 两个字段,都是PropertyPrivilegeElement 值 |
policies |
[]string | / | 策略中包含的其他策略 |
PropertyPrivilegeElement
值包含以下字段:
字段 |
类型 |
默认 |
描述 |
---|---|---|---|
Read |
[][]string | / | 一个元素均为列表的列表;内部的每个列表包含三个字符串,分别指定图、schema和属性 |
Write |
[][]string | / | 一个元素均为列表的列表;内部的每个列表包含三个字符串,分别指定图、schema和属性 |
Deny |
[][]string | / | 一个元素均为列表的列表;内部的每个列表包含三个字符串,分别指定图、schema和属性 |
response, _ := driver.Uql("show().policy('Tester')", nil)
policy, _ := response.Alias("_policy").AsPolicies()
fmt.Println("Graph Privileges:", policy[0].GraphPrivileges)
fmt.Println("System Privileges:", policy[0].SystemPrivileges)
fmt.Println("Property Privileges:")
fmt.Println("- Node (Read):", policy[0].PropertyPrivileges.Node.Read)
fmt.Println("- Node (Write):", policy[0].PropertyPrivileges.Node.Write)
fmt.Println("- Node (Deny):", policy[0].PropertyPrivileges.Node.Deny)
fmt.Println("- Edge (Read):", policy[0].PropertyPrivileges.Edge.Read)
fmt.Println("- Edge (Write):", policy[0].PropertyPrivileges.Edge.Write)
fmt.Println("- Edge (Deny):", policy[0].PropertyPrivileges.Edge.Deny)
fmt.Println("Policies:", policy[0].Policies)
Graph Privileges: map[*:[SHOW_PROPERTY READ SHOW_SCHEMA] alimama:[SHOW_JOB SHOW_INDEX] trans:[SHOW_JOB SHOW_INDEX]]
System Privileges: [ALTER_GRAPH SHOW_GRAPH]
Property Privileges:
- Node (Read): [[* * *]]
- Node (Write): []
- Node (Deny): []
- Edge (Read): [[alimama * timestamp]]
- Edge (Write): [[alimama edgx behavior] [alimama edgx timestamp]]
- Edge (Deny): []
Policies: [manager]
User
User
值包含以下字段:
字段 |
类型 |
默认 |
描述 |
---|---|---|---|
Username |
string | / | 用户名 |
Password |
string | / | 密码 |
CreatedTime |
string | / | 用户创建时间 |
SystemPrivileges |
[]string | / | 授予用户的系统权限 |
GraphPrivileges |
GraphPrivileges |
/ | 授予用户的图集权限;在字典中,键是图集名称,值是相应的图集权限 |
propertyPrivileges |
PropertyPrivilege |
/ | 授予用户的属性权限;PropertyPrivilege 有Node 和Edge 两个字段,都是PropertyPrivilegeElement 值 |
policies |
[]string | / | 授予用户的策略 |
PropertyPrivilegeElement
值包含以下字段:
字段 |
类型 |
默认 |
描述 |
---|---|---|---|
Read |
[][]string | / | 一个元素均为列表的列表;内部的每个列表包含三个字符串,分别指定图、schema和属性 |
Write |
[][]string | / | 一个元素均为列表的列表;内部的每个列表包含三个字符串,分别指定图、schema和属性 |
Deny |
[][]string | / | 一个元素均为列表的列表;内部的每个列表包含三个字符串,分别指定图、schema和属性 |
response, _ := driver.Uql("show().user('johndoe')", nil)
user, _ := response.Alias("_user").AsUsers()
fmt.Println("Created Time:", user[0].CreatedTime)
fmt.Println("Graph Privileges:", user[0].GraphPrivileges)
fmt.Println("System Privileges:", user[0].SystemPrivileges)
fmt.Println("Property Privileges:")
fmt.Println("- Node (Read):", user[0].PropertyPrivileges.Node.Read)
fmt.Println("- Node (Write):", user[0].PropertyPrivileges.Node.Write)
fmt.Println("- Node (Deny):", user[0].PropertyPrivileges.Node.Deny)
fmt.Println("- Edge (Read):", user[0].PropertyPrivileges.Edge.Read)
fmt.Println("- Edge (Write):", user[0].PropertyPrivileges.Edge.Write)
fmt.Println("- Edge (Deny):", user[0].PropertyPrivileges.Edge.Deny)
fmt.Println("Policies:", user[0].Policies)
Created Time: 2025-04-02T11:08:38.000+08:00
Graph Privileges: map[*:[SHOW_PROPERTY READ SHOW_SCHEMA] alimama:[SHOW_JOB SHOW_INDEX] trans:[SHOW_JOB SHOW_INDEX]]
System Privileges: [ALTER_GRAPH SHOW_GRAPH]
Property Privileges:
- Node (Read): [[* * *]]
- Node (Write): []
- Node (Deny): []
- Edge (Read): [[alimama * timestamp]]
- Edge (Write): [[alimama edgx behavior] [alimama edgx timestamp]]
- Edge (Deny): []
Policies: [manager]
Process
Process
值包含以下字段:
字段 |
类型 |
默认 |
描述 |
---|---|---|---|
ProcessId |
string | / | 进程ID |
ProcessQuery |
string | / | 进程执行的语句 |
Status |
string | / | 进程状态 |
Duration |
string | / | 任务的运行时长(单位:秒) |
response, _ := driver.Gql("TOP", nil)
processes, _ := response.Alias("_top").AsProcesses()
for _, proprocess := range processes {
fmt.Println(proprocess.ProcessId)
}
1049435
Job
Job
值包含以下字段:
字段 |
类型 |
默认 |
描述 |
---|---|---|---|
Id |
string | / | 作业ID |
GraphName |
string | / | 作业执行所在的图名称 |
Query |
string | / | 作业执行的语句 |
Type |
string | / | 作业类型 |
ErrNsg |
string | / | 作业错误信息 |
Result |
map[string]string | / | 作业结果 |
StartTime |
string | / | 作业开始时间 |
EndTime |
string | / | 作业结束时间 |
Status |
string | / | 作业状态 |
Progress |
string | / | 作业的进度更新,例如提示回写操作已开始 |
requestConfig := &configuration.RequestConfig{
Graph: "miniCircle",
}
response, _ := driver.Gql("SHOW JOB", requestConfig)
jobs, _ := response.Alias("_job").AsJobs()
for _, job := range jobs {
if job.Status == "FAILED" {
fmt.Println(job.Id, "-", job.ErrMsg, "-", job.Type)
}
}
51 - Fulltext name already exists. - CREATE_FULLTEXT
42 - Fulltext name already exists. - CREATE_FULLTEXT
26 - [engine] uuids should be unsigned integer - HDC_ALGO
26_1 - - HDC_ALGO
17 - [engine] all failed, because some nodes do not exist in db - HDC_ALGO
17_1 - - HDC_ALGO