本节为您介绍如何使用Connection
对象的方法管理数据库中的图集。
每个示例主要展示如何使用所列方法。点击完整示例查看完整代码示例。
ShowGraph()
从数据库获取全部图集。
参数:
-
RequestConfig
(可选):请求的配置。如果填入nil
,函数将使用默认的配置。 返回值: -
GraphSet
:数据库中全部图集列表。 -
error
:包含发生问题详细信息的错误对象。如果操作成功,则返回nil
。
// 获取全部图集并打印边数超过2000条的图集名称
myGraph, _ := conn.ShowGraph(nil)
for i := 0; i < len(myGraph); i++ {
if myGraph[i].TotalEdges > 2000 {
fmt.Println("GraphSet:", myGraph[i].Name)
}
}
Display_Ad_Click
ERP_DATA2
wikiKG
GetGraph()
根据图集名称从数据库获取图集信息。
参数:
-
string
:图集名称。 -
RequestConfig
(可选):请求的配置。如果填入nil
,函数将使用默认的配置。 返回值: -
GraphSet
:目标图集。 -
error
:包含发生问题详细信息的错误对象。如果操作成功,则返回nil
。
// 获取名为wikiKG的图集并打印其全部信息
myGraph, _ := conn.GetGraph("wikiKG", nil)
fmt.Println("ID", "Name", "TotalNodes", "TotalEdges", "Status")
fmt.Println(myGraph)
ID Name TotalNodes TotalEdges Status
&{13844 wikiKG 44449 167799 MOUNTED}
CreateGraph()
在数据库中新建图集。
参数:
GraphSet
:待创建的图集;必须设置name
字段,description
字段可选。RequestConfig
(可选):请求的配置。如果填入nil
,函数将使用默认的配置。
返回值:
UQLResponse
:请求的结果。error
:包含发生问题详细信息的错误对象。如果操作成功,则返回nil
。
// 创建图集并打印错误代码
myGraph, _ := conn.CreateGraph(&structs.GraphSet{Name: "testGoSDK", Description: "Description for testGoSDK"}, nil)
fmt.Println("Creation succeeds:", myGraph.Status.IsSuccess())
数据库中已创建名为testGoSDK
的新图集,驱动程序打印结果如下:
Creation succeeds: true
CreateGraphIfNotExist()
在数据库中新建图集,若同名图集已存在,忽略报错。
参数:
-
GraphSet
:待创建的图集;必须设置name
字段,description
字段可选。 -
RequestConfig
(可选):请求的配置。如果填入nil
,函数将使用默认的配置。 返回值: -
Response
:请求的结果。 -
bool
:图集是否存在。 -
error
:包含发生问题详细信息的错误对象。如果操作成功,则返回nil
。
// 创建图集并打印错误代码
myGraph, status, err := conn.CreateGraphIfNotExist(&structs.GraphSet{Name: "testGoSDK", Description: "Description for testGoSDK"}, nil)
if err == nil {
fmt.Println("Graph already exists:", status)
fmt.Println("First creation succeeds:", myGraph.Status.IsSuccess())
}
// 尝试再次创建图集并打印错误代码
_, result, _ := conn.CreateGraphIfNotExist(&structs.GraphSet{Name: "testGoSDK", Description: "Description for testGoSDK"}, nil)
fmt.Println("Graph already exists:", result)
在数据库中创建了一个新的图集testGoSDK
,驱动程序打印结果如下:
Graph already exists: false
First creation succeeds: true
Graph already exists: true
DropGraph()
根据图集名称从数据库中删除图集。
参数:
string
:图集名称。RequestConfig
(可选):请求的配置。如果填入nil
,函数将使用默认的配置。
返回值:
Response
:请求的结果。error
:包含发生问题详细信息的错误对象。如果操作成功,则返回nil
。
// 创建图集后将其删除并打印结果
myGraph, _ := conn.CreateGraph(&structs.GraphSet{Name: "testGoSDK", Description: "Description for testGoSDK"}, nil)
fmt.Println("Creation succeeds:", myGraph.Status.IsSuccess())
resp1, _ := conn.DropGraph("testGoSDK", nil)
fmt.Println(resp1)
Creation succeeds: true
&{map[] status:{} statistics:{table_name:"statistics" headers:{property_name:"node_affected" property_type:STRING} headers:{property_name:"edge_affected" property_type:STRING} headers:{property_name:"total_time_cost" property_type:STRING} headers:{property_name:"engine_time_cost" property_type:STRING} table_rows:{values:"0" values:"0" values:"6" values:"0"}} explain_plan:{} 0xc0002a0648 0xc0004a2040 0xc000484b40 [] 0xc0002814f0}
AlterGraph()
根据图集名称,修改数据库中已有图集的名称和描述信息。
参数:
-
oldGraph: GraphSet
:待修改的图集;必须设置name
字段。 -
newGraph: GraphSet
:更新已有图集的配置;必须设置字段“name”和“description”中的一个或两个。 -
RequestConfig
(可选):请求的配置。如果填入nil
,函数将使用默认的配置。 返回值: -
Response
:请求的结果。 -
error
:包含发生问题详细信息的错误对象。如果操作成功,则返回nil
。
// 将图集testGoSDK重命名为newGraph,添加图集描述并打印结果
resp1, _ := conn.AlterGraph(&structs.GraphSet{Name: "testGoSDK"}, &structs.GraphSet{Name: "newGraph", Description: "The graph is altered."}, nil)
fmt.Println(resp1)
&{map[] status:{} statistics:{table_name:"statistics" headers:{property_name:"node_affected" property_type:STRING} headers:{property_name:"edge_affected" property_type:STRING} headers:{property_name:"total_time_cost" property_type:STRING} headers:{property_name:"engine_time_cost" property_type:STRING} table_rows:{values:"0" values:"0" values:"0" values:"0"}} explain_plan:{} 0xc0002327c8 0xc00001cba0 0xc000009248 [] 0xc000207820}
Truncate()
清空(删除)给定图集中的指定点或边,或清空全部图集。请注意,清空点数据的同时会删除与点相连的所有边。清空操作仅删除点边数据,不会删除schema和属性信息。
参数:
Truncate
:待清空的对象;必须设置GraphName
字段,可选择设置Schema
字段和DbType
字段,但设置Schema
字段时,必须设置DbType
字段。RequestConfig
(可选):请求的配置。如果填入nil
,函数将使用默认的配置。
返回值:
Response
:请求的结果。error
:包含发生问题详细信息的错误对象。如果操作成功,则返回nil
。
// 清空图集myGraph_1中@user点数据并打印错误代码
db := ultipa.DBType_DBNODE
myGraph1, _ := conn.Truncate(&structs.Truncate{GraphName: "myGraph_1", DbType: &db, Schema: "user"}, nil)
fmt.Println(myGraph1.Status)
// 清空图集myGraph_2中全部边数据并打印错误代码
db := ultipa.DBType_DBEDGE
myGraph2, _ := conn.Truncate(&structs.Truncate{GraphName: "myGraph_2", DbType: &db, Schema: "*"}, nil)
fmt.Println(myGraph2.Status)
// 清空图集myGraph_3并打印错误代码
myGraph3, _ := conn.Truncate(&structs.Truncate{GraphName: "myGraph_3"}, nil)
fmt.Println(myGraph3.Status)
&{ SUCCESS}
&{ SUCCESS}
&{ SUCCESS}
Compact()
清除服务器磁盘上的无效及冗余数据以压缩图集。有效数据不会受到影响。
参数:
string
:图集名称。RequestConfig
(可选):请求的配置。如果填入nil
,函数将使用默认的配置。
返回值:
Response
:请求的结果。error
:包含发生问题详细信息的错误对象。如果操作成功,则返回nil
。
// 压缩图集miniCircle并打印错误代码
resp, _ := conn.Compact("miniCircle", nil)
fmt.Println(resp.Status)
&{ SUCCESS}
HasGraph()
根据图集名称查看数据库中是否存在该图集。
参数:
-
string
:图集名称。 -
RequestConfig
(可选):请求的配置。如果填入nil
,函数将使用默认的配置。 返回值: -
bool
:请求的结果。 -
error
:包含发生问题详细信息的错误对象。如果操作成功,则返回nil
。
// 查看图集miniCircle是否存在并打印结果
resp, _ := conn.HasGraph("miniCircle", nil)
fmt.Println("Graph exists:", resp)
Graph exists: true
UnmountGraph()
卸载图集以节省数据库内存。
参数:
-
string
:图集名称。 -
RequestConfig
(可选):请求的配置。如果填入nil
,函数将使用默认的配置。 返回值: -
Response
:请求的结果。 -
error
:包含发生问题详细信息的错误对象。如果操作成功,则返回nil
。
// / 卸载图集miniCircle并打印图集状态
resp, _ := conn.UnmountGraph("miniCircle", nil)
fmt.Println(resp.Status)
&{ SUCCESS}
MountGraph()
将图集挂载至数据库内存。
参数:
-
string
:图集名称。 -
RequestConfig
(可选):请求的配置。如果填入nil
,函数将使用默认的配置。 返回值: -
Response
:请求的结果。 -
error
:包含发生问题详细信息的错误对象。如果操作成功,则返回nil
。
// 挂载图集'miniCircle'并打印结果
resp, _ := conn.MountGraph("miniCircle", nil)
fmt.Println(resp.Status)
&{ SUCCESS}
完整示例
package main
import (
"fmt"
"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() {
// 配置连接
//URI 示例: Hosts:=[]string{"mqj4zouys.us-east-1.cloud.ultipa.cn:60010"}
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{
UseMaster: true,
}
// 创建图集'testGoSDK'
myGraph, _ := conn.CreateGraph(&structs.GraphSet{Name: "testGoSDK", Description: "Description for testGoSDK"}, nil)
fmt.Println("Creation succeeds:", myGraph.Status.IsSuccess())
// 删除刚刚创建的图集'testGoSDK'
resp1, _ := conn.DropGraph("testGoSDK", nil)
fmt.Println(resp1.Status)
}