Hi,

Do you want to use gremlin to query an existing graphy mongo db?

If so that will probably be a difficult task as TinkerPop assumes the
underlying graph is modeled according to the property graph model.

If not then its not that difficult. First you'll have to work out how
you are going to model the property graph model in MongoDb (This at
least for me is the fun part). Once that is done TinkerPop allows the
rest to fall into place.

The difficulty after that is to optimize gremlin queries.
eg.
g.V(vertex1).out().out()

If the first out() returns 1 000 000 vertices then the second out() will
result in 1 000 000 calls to mongodb. MongoDb is fast but a million
separate individual calls kills any applications performance. So you
have to optimize traversing edges to execute on the db itself as oppose
to doing it from the application (i.e. your TinkerPop mongo java
implementation). I have not recently googled this but I understand
(hope) that mongo will be implementing edges/links/joins natively.

Either way the primary challenge is to optimize the two "out().out()"
calls to be only one call to the db.

As an aside, TinkerPop has no support at the moment to query a JSON
property. In fact TinkerPop has no notion of type so it does not even
know nor care that a particular property's type is JSON.
Recent versions of Postgresql support JSON natively and Sqlg supports
storing JSON blobs. However at present it is unqueryable from Sqlg
(gremlin). Postgresql has sophisticated JSON query abilities that I
intend to make available via custom TinkerPop predicates. TinkerPop uses
the notion of Predicates to select data. It is fairly easy to extend
TinkerPop to expose custom db features. I imagine that doing something
similar will make a MongoDb implementation able to use gremlin to query
arbitrary JSON documents. My understanding of the joy of mongo is that
there is no need to transform data from one representation to another to
yet another. JSON from browser to something(Node) to db and all is
simple. So I imagine that using MongoDb as a graph db should do its best
not to obfuscate this benefit.

Cheers
Pieter


On 08/04/2016 18:04, Fred Eisele wrote:
> We have a graph-centric project which uses MongoDB as its backing store.
> We would like to use the TinkerPop3 API to provide access to our graph.
>
> Q1: Is there any plan to provide a TinkerPop3 wrapper for MongoDB?
>
> Q2: Would recommended path be to update
> https://github.com/datablend/blueprints-mongodb-graph ?
>
> Q3: What is the best TinkerPop3 reference for constructing a TinkerPop3
> wrapper around a graph-system?
>
> Thanks
> Fred
>

Reply via email to