| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- package main
- import (
- "encoding/json"
- "fmt"
- "log"
- "time"
- )
- type odbDemo struct {
- g *odb.Gutil
- }
- func (demo *odbDemo) graph() {
- //ret, _, err := g.Query(`match ('biz:b1')-[:contain]->()-[:contain]->()`)
- ret, meta, err := demo.g.Query(`match ('biz:查账系统')-[*]->() until 'router:router1','router:router2'`)
- if err != nil {
- log.Fatal(err)
- }
- fmt.Println("Meta:")
- mb, err := json.MarshalIndent(meta, "", " ")
- if err != nil {
- log.Fatal(err)
- }
- fmt.Println(string(mb))
- fmt.Println("Data:")
- b, err := json.MarshalIndent(ret, "", " ")
- if err != nil {
- log.Fatal(err)
- }
- fmt.Println(string(b))
- fmt.Println(len(ret[0]["graph"].(*odb.CypherGraph).Edges))
- if len(ret) != 0 {
- var endPoints []string
- allSource := make(map[string]struct{})
- allTarget := make(map[string]struct{})
- graph := ret[0]["graph"].(*odb.CypherGraph)
- for _, edge := range graph.Edges {
- fmt.Println(edge["source"])
- allSource[edge["source"].(string)] = struct{}{}
- allTarget[edge["target"].(string)] = struct{}{}
- }
- fmt.Println(allSource)
- fmt.Println(allTarget)
- for targetID := range allTarget {
- if _, ok := allSource[targetID]; !ok {
- endPoints = append(endPoints, targetID)
- }
- }
- fmt.Println(endPoints)
- fmt.Print(len(ret[0]["graph"].(*odb.CypherGraph).Edges))
- }
- }
- func (demo *odbDemo) classTree() {
- start := time.Now()
- obj, err := demo.g.GetClassChildren("/matrix/entity/pe/electric_sys", true)
- if err != nil {
- log.Fatal(err)
- }
- _, err = json.Marshal(obj)
- log.Println(time.Now().Sub(start).String())
- }
- func (demo *odbDemo) testCql() {
- ret, err := demo.g.RawQuery(`select * from matrix.object limit 1`)
- if err != nil {
- log.Fatal(err)
- }
- fmt.Println(ret)
- }
- func (demo *odbDemo) testPrepare() {
- stmt := `insert into /matrix/system/depot (tags, name, version, remark) values (?, ?, ?, ?)`
- ps, err := demo.g.Prepare(stmt, &odb.QueryMeta{Return: odb.ReturnColMeta})
- if err != nil {
- log.Fatal(err)
- }
- values := []interface{}{
- `["SCRIPT"]`,
- "test12",
- "10",
- "null",
- }
- data, schema, err := ps.Exec(values...)
- if err != nil {
- log.Fatal(err)
- }
- log.Println("data:", data)
- log.Println("schema:", schema)
- }
- func (demo *odbDemo) testMql() {
- data, meta, err := demo.g.Query("select id, name, biz, contain from /matrix/devops/event limit 10", &odb.QueryMeta{Return: odb.ReturnColMeta})
- if err != nil {
- log.Fatal(err)
- }
- fmt.Println("Meta:")
- mb, err := json.MarshalIndent(meta, "", " ")
- if err != nil {
- log.Fatal(err)
- }
- fmt.Println(string(mb))
- fmt.Println("Data:")
- b, err := json.MarshalIndent(data, "", " ")
- if err != nil {
- log.Fatal(err)
- }
- fmt.Println(string(b))
- }
- func (demo *odbDemo) testBucket() {
- //mql := `select id, host, bk2["iparam1", "iparam2"].time('2020-05-23 00:00:00', '2020-05-23 23:59:59') from testbucket4`
- mql := `SELECT id, bk2 FROM /matrix/testbucket7/subbk`
- data, meta, err := demo.g.Query(mql)
- if err != nil {
- log.Fatal(err)
- }
- fmt.Println("Meta:")
- mb, _ := json.MarshalIndent(meta, "", " ")
- fmt.Println("Data:")
- db, _ := json.MarshalIndent(data, "", " ")
- fmt.Println(string(mb))
- fmt.Println(string(db))
- }
- func main() {
- log.SetFlags(log.LstdFlags | log.Lshortfile)
- g, err := odb.New(&odb.Option{Cache: odb.CacheAll, DisableInitialHostLookup: true}) // For aliyun
- //g, err := odb.New(&odb.Option{Cache:odb.CacheAll})
- if err != nil {
- log.Fatal(err)
- }
- demo := &odbDemo{g: g}
- //demo.testMql()
- //demo.testPrepare()
- //demo.testCql()
- demo.graph()
- //demo.classTree()
- //demo.testStreamingSearch()
- //demo.testBucket()
- //demo.testIndex()
- }
- /*
- [
- {
- "graph": {
- "nodes": [
- {
- "_icon": "linux",
- "class": "/matrix/entity/linux",
- "id": "linux:h2"
- },
- {
- "_icon": "cassandra",
- "class": "/matrix/entity/cassandra",
- "id": "cassandra:c1"
- },
- {
- "_icon": "biz",
- "class": "/matrix/entity/biz",
- "id": "biz:b1"
- },
- {
- "_icon": "linux",
- "class": "/matrix/entity/linux",
- "id": "linux:h1"
- }
- ],
- "edges": [
- {
- "class": "contain",
- "id": "biz:b1-linux:h1",
- "source": "biz:b1",
- "target": "linux:h1"
- },
- {
- "class": "contain",
- "id": "biz:b1-linux:h2",
- "source": "biz:b1",
- "target": "linux:h2"
- },
- {
- "class": "contain",
- "id": "linux:h1-cassandra:c1",
- "source": "linux:h1",
- "target": "cassandra:c1"
- }
- ],
- "paths": null,
- "pathtags": null
- }
- }
- ]
- */
|