0

Kindly tell a simple solution that takes less time as I have millions of nodes:

  for(int i=1100000; i<=1200000;i++){
        GraphStatement q1 = new SimpleGraphStatement("g.addV(label, 'Asset','name','Asset"+i+"','type','"+1+"').as('a')").setGraphName("lookingglass");

    System.out.println("Added node----"+i);
    }

 for(int i=1100000;i<=1200000;i++){
        //int j=i+1;
    Vertex v1 = dseSession.executeGraph("g.V().has('name','Org"+1000+"')").one().asVertex();
    Vertex v2 = dseSession.executeGraph("g.V().has('name','Asset"+i+"')").one().asVertex();

    SimpleGraphStatement s = new SimpleGraphStatement(
            "def v1 = g.V(id1).next()\n" +
                    "def v2 = g.V(id2).next()\n" +
                    "v1.addEdge('HAS', v2)")
            .set("id1", v1)
            .set("id2", v2);

    dseSession.executeGraph(s);
    System.out.println("Added Edge "+i);
    }
    System.out.println("Done");

As I am doing a whole graph search this is taking a longer time. Can we have a simple single query that could add a vartex and add an edge from that to existing vertex involving less latency?

Note I have tried with the following approach also but the following approach is depricated it seems and thus gives error(Vertex does not support user supplied identifiers:

 g.addV().property(id, "A").as("a").
      addV().property(id, "B").property("value", 100).as("b").
      addV().property(id, "C").property("value", 200).as("c").
      addV().property(id, "D").property("value", 500).as("d").
      addV().property(id, "E").property("value", 1000).as("e").
      addV().property(id, "Z").property("value", 900).as("z").
      addE("link").from("a").to("b").property("weight", 80).
      addE("link").from("a").to("c").property("weight", 20).
      addE("link").from("b").to("d").property("weight", 50).
      addE("link").from("b").to("e").property("weight", 40).
      addE("link").from("z").to("d").property("weight", 10).iterate()
Erick Ramirez
  • 13,964
  • 1
  • 18
  • 23
Varun Tahin
  • 299
  • 1
  • 2
  • 15

2 Answers2

5

The method you specified as "deprecated" does work. DSE Graph, and most graph datbases, do not let you assign identifiers that way. Note that if you simply change the use of id to "myid" then that Gremlin syntax is acceptable:

gremlin>  g.addV().property("myid", "A").as("a").
......1>    addV().property("myid", "B").property("value", 100).as("b").
......2>    addV().property("myid", "C").property("value", 200).as("c").
......3>    addV().property("myid", "D").property("value", 500).as("d").
......4>    addV().property("myid", "E").property("value", 1000).as("e").
......5>    addV().property("myid", "Z").property("value", 900).as("z").
......6>    addE("link").from("a").to("b").property("weight", 80).
......7>    addE("link").from("a").to("c").property("weight", 20).
......8>    addE("link").from("b").to("d").property("weight", 50).
......9>    addE("link").from("b").to("e").property("weight", 40).
.....10>    addE("link").from("z").to("d").property("weight", 10).iterate()
gremlin> g.V()
==>v[{~label=vertex, community_id=1368843392, member_id=512}]
==>v[{~label=vertex, community_id=1368843392, member_id=513}]
==>v[{~label=vertex, community_id=1368843392, member_id=514}]
==>v[{~label=vertex, community_id=1368843392, member_id=515}]
==>v[{~label=vertex, community_id=1368843392, member_id=516}]
==>v[{~label=vertex, community_id=1368843392, member_id=517}]
stephen mallette
  • 45,298
  • 5
  • 67
  • 135
0

you can simply use executeGraphAsync method that will speed up your insertion as it is Asynchronous in nature.

Please have a look at : -

https://docs.datastax.com/en/developer/java-driver-dse/1.1/manual/graph/

Piyush_Rana
  • 305
  • 3
  • 15