Nick ... (1) I don't work for OrientDB, (2) I am not familiar with the Tinkerpop APIs outside of OrientDB.
OrientGraph.getVertices() returns an iterator, not a pipe. Gremlin adds a DSL method *_()* that will turn an iterator into a pipeline, from which you can do the normal Gremlin queries. AFAIK, the OrientDB Java/Groovy/Gremlin APIs require you to explicitly select an index to use. The SQL queries can either explicitly specify an index (SELECT * from INDEX:...) or they may take advantage of an existing, properly specified, index, maybe. This is an area where OrientDB still needs a lot of work, IMO. Or at least a lot more documentation. FWIW, I've been working with databases all my career, and I've never moved from one database to a different but comparable database without having to make changes to *some* aspect of my application. Blueprints is nice, but it is not a cross-graph-database panacea. - Craig - On Tue, Jun 2, 2015 at 12:35 PM, Nick DeYoung <deyoung.n...@gmail.com> wrote: > Craig, > > I have tried that, it takes 11 ms. but that is not a Pipe - > (g.getVertices()) > > our code base is leveraging another TinkerPop enabled graph databse and > are researching the idea of switching it out. > > my research is trying to figure out how does orient perform on the generic > Tinkerpop API. > I want to do things like > g.V().has("someProperty","someValue").outE("someLabel")....somemoreStepsInMyPipe.. > and know that that is going to hit indexes. > > Does it ? > > this is a simple test of the different ways I am accessing the graph and > their timing on 300,000 vertices (not connected at the momen) > > time("orient graph api 'orient specific'") { > val v = g.getVertices("V.testProperty", > "cbc6b219-9df3-44c5-90b2-ab7a6bd9bf7e") > > } 11 ms > > time("tinkerpop pipeline 'generic'") { > val v = new GremlinPipeline(g, true).V("testProperty", > "cbc6b219-9df3-44c5-90b2-ab7a6bd9bf7e").next() > > } 21 seconds > > time ("another blueprints? " ) { > val v = g.query().has("testProperty", > "cbc6b219-9df3-44c5-90b2-ab7a6bd9bf7e").vertices() > > } 19 seconds > > time("sql count all 'orient specific'") { > val v:OResultSet[ODocument] = g.getRawGraph.query( > new OSQLSynchQuery[ODocument]("select * from > INDEX:V.testProperty where key = 'cbc6b219-9df3-44c5-90b2-ab7a6bd9bf7e'") > ) 1 ms > > > } > > // throws an error in distrubuted mode > // time ("gremlin command 'generic' ") { > // val r = g.getRawGraph.command(new > OCommandGremlin("g.V().has('testProperty')")).execute() > // } > > > If I understand Orient's documentation right, I am going to have to either > change our pipes (traversals in tinkerpop) into SQL+ queries in order to > leverage the claims of orient's speed. > > If i'm wrong in this, let me know > > > > > On Mon, Jun 1, 2015 at 11:33 PM, W. Craig Trader <craig.tra...@gmail.com> > wrote: > >> Nick ... >> >> Much like you told the SQL engine to use an index (select * from >> INDEX:V.testProperty ...), you need to explicitly use indexes from the >> graph API, as follows: >> >> *Java:* >> >> OrientVertex result = g.getVertices( "V.testProperty", " >> cbc6b219-9df3-44c5-90b2-ab7a6bd9bf7e" ).iterator().next(); >> >> >> *Gremlin:* >> GremlinPipeline p = g.getVertices( "V.testProperty", " >> cbc6b219-9df3-44c5-90b2-ab7a6bd9bf7e" )._() >> >> >> I think you'll find that using indexes with the Java API is even faster >> than the SQL query API. >> - Craig - >> >> >> On Mon, Jun 1, 2015 at 5:33 PM, Nick DeYoung <deyoung.n...@gmail.com> >> wrote: >> >>> I have an orient db 2.0.10 community server up and running >>> I have created a simple test where I have placed 300,000 vertices in an >>> orient database each with a property "testProperty" with a value - >>> UUID.randomUUID().toString >>> I have created an index on the property >>> >>> graph.createKeyIndex("testProperty", classOf[Vertex]) // this is >>> scala :) >>> >>> In a test I create an OrientGraph connected via remote: >>> 127.0.0.1:2424/test-database >>> >>> and do >>> >>> g.query().has("testProperty", "cbc6b219-9df3-44c5-90b2-ab7a6bd9bf7e") >>> >>> This takes 20 seconds to return the vertex with that UUID. >>> >>> In another test I do >>> >>> g.getRawGraph.query(new OSQLSynchQuery[ODocument]("select * from >>> INDEX:V.testProperty where key = 'cbc6b219-9df3-44c5-90b2-ab7a6bd9bf7e'")) >>> >>> which takes 1 millisecond to return the vertex. >>> >>> Is the java graph query api really this slow or am I doing something >>> wrong? >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> -- >>> >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "OrientDB" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to orient-database+unsubscr...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- >> >> --- >> You received this message because you are subscribed to a topic in the >> Google Groups "OrientDB" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/orient-database/Ff5Fbxi6p20/unsubscribe >> . >> To unsubscribe from this group and all its topics, send an email to >> orient-database+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > // ndy > > -- > > --- > You received this message because you are subscribed to the Google Groups > "OrientDB" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to orient-database+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- --- You received this message because you are subscribed to the Google Groups "OrientDB" group. To unsubscribe from this group and stop receiving emails from it, send an email to orient-database+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.