" Blueprints is nice, but it is not a cross-graph-database panacea."
there is much wisdom in this, that I think the graph community could use to hear from. On Tue, Jun 2, 2015 at 9:53 AM, W. Craig Trader <craig.tra...@gmail.com> wrote: > 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 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.