Date   

Re: professional support for JanusGraph

Lynn Bender <ly...@...>
 

On Fri, Jun 23, 2017 at 8:30 AM, Peter Musial <pmmu...@...> wrote:
Hi All,

Are there companies that provide professional support for production deployments?

Regards,

Peter

--
You received this message because you are subscribed to the Google Groups "JanusGraph users list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to janusgraph-users+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


professional support for JanusGraph

Peter Musial <pmmu...@...>
 

Hi All,

Are there companies that provide professional support for production deployments?

Regards,

Peter


Re: Cassandra/HBase storage backend issues

Robert Dale <rob...@...>
 

Jason, thanks for that! I learned something new.  And for those using the latest 0.2-SNAPSHOT, here's the solr 6.6 guide - https://lucene.apache.org/solr/guide/6_6/near-real-time-searching.html#near-real-time-searching

Robert Dale

On Fri, Jun 23, 2017 at 1:45 AM, Jason Plurad <plu...@...> wrote:
Hi Mike,

One thing you should watch out for is making sure that your transaction handling is clean. Check out the TinkerPop docs on Graph Transactions, especially the 3rd paragraph. It helps to do a graph.tx().rollback() before running your queries, and then making sure you commit or rollback when you're done in a try/finally block.

Do those traversal use a mixed index? Keep in mind that there is a refresh interval in ES (Solr has something similar), so if you're querying immediately after inserting the data, changes might not be visible yet.

-- Jason

On Monday, June 19, 2017 at 11:09:33 AM UTC-4, HadoopMarc wrote:
Hi Mike,

Seeing no expert answers uptil now, I can only provide a general reply. I see the following lines of thinking in explaining your situation:
  • HBase fails in providing row based consistency: extremely unlikely given the many applications that rely on this
  • JanusGraph fails in providing consistency between instances (e.g. using out of date caches). Do you use multiple JanusGraph instances? Or multiple threads that access the same JanusGraph instance?
  • Your application fails in handling exceptions in the right way (e.g. ignoring them)
  • Your application has logic faults: not so likely because you have been debugging for some while.
If you want to proceed on this, could you provide the code you use on github? So, others can confirm the behavior and/or inspect configs. Ideally, you would provide your code in the form of a:
 https://github.com/JanusGraph/janusgraph/blob/236dd930a7af35061e393ea8bb1ee6eb65f924b2/janusgraph-hbase-parent/janusgraph-hbase-core/src/test/java/org/janusgraph/graphdb/hbase/HBasePartitionGraphTest.java

Other ideas still welcome!

Marc

Op zondag 18 juni 2017 08:38:02 UTC+2 schreef mi...@...:
Hi! I'm running into an issue and wondering if anyone has tips. I'm using HBase (also tried this with cassandra with the same issue) and running into an issue where preprocessing our data yields inconsistent results. We run through a query and for each vertex with a given property, we run a traversal on it and calculate properties or insert edges that weren't inserted on upload to boost performance of our eventual traversal.

Our tests run perfectly with a tinkergraph, but when using HBase or Cassandra backend, sometimes the tests fail, sometimes the calculated properties are completely wrong, and sometimes edges aren't created when needed. A preprocess task may depend on the output of a previous preprocess task that may have taken place seconds earlier. I think this is caused by eventual consistency breaking the traversal, but I'm not sure how to get 100% accuracy (where the current preprocess task can be 100% confident it gets the correct value from a previous preprocessing task). 

I create a transaction for each preprocessing operation, then commit it once successful, but this doesn't seem to fix the issues. Any ideas?

Thanks,
Mike

--
You received this message because you are subscribed to the Google Groups "JanusGraph users list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to janusgraph-users+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: How can i keep the vertex which i want to add is unique?

huu...@...
 

Thank you Jason,  and  we have many of duplicated vertex,  How can I do  with janusgraph more effectively?  We query a vertex and judge the existence then  decide  what  next to do, that's very low effective especially when we need to import amount of vertex and edge.

在 2017年6月23日星期五 UTC+8上午11:47:34,Jason Plurad写道:

Check out the documentation for creating a unique composite index.

Here's an example Gremlin Console session which creates a unique composite index on name. When you attempt to set a non-unique name, it will throw a SchemaViolationException.

gremlin> graph = JanusGraphFactory.open('inmemory')
==>standardjanusgraph[inmemory:[127.0.0.1]]
gremlin
> mgmt = graph.openManagement()
==>org.janusgraph.graphdb.database.management.ManagementSystem@2eadc9f6
gremlin
> name = mgmt.makePropertyKey('name').dataType(String.class).cardinality(Cardinality.SINGLE).make()
==>name
gremlin
> nameIndex = mgmt.buildIndex('nameIndex', Vertex.class).addKey(name).unique().buildCompositeIndex()
==>nameIndex
gremlin
> mgmt.commit()
==>null
gremlin
> graph.addVertex('name', 'huupon')
==>v[4184]
gremlin
> graph.addVertex('name', 'huupon')
Adding this property for key [name] and value [huupon] violates a uniqueness constraint [nameIndex]


-- Jason

On Wednesday, June 21, 2017 at 4:34:22 AM UTC-4, huupon wrote:
Hi, all:

       How can i keep the vertex which i want to add is unique?  get and add?  whether have any other methods to add unique vertex ?


Re: Cassandra/HBase storage backend issues

Jason Plurad <plu...@...>
 

Hi Mike,

One thing you should watch out for is making sure that your transaction handling is clean. Check out the TinkerPop docs on Graph Transactions, especially the 3rd paragraph. It helps to do a graph.tx().rollback() before running your queries, and then making sure you commit or rollback when you're done in a try/finally block.

Do those traversal use a mixed index? Keep in mind that there is a refresh interval in ES (Solr has something similar), so if you're querying immediately after inserting the data, changes might not be visible yet.

-- Jason


On Monday, June 19, 2017 at 11:09:33 AM UTC-4, HadoopMarc wrote:
Hi Mike,

Seeing no expert answers uptil now, I can only provide a general reply. I see the following lines of thinking in explaining your situation:
  • HBase fails in providing row based consistency: extremely unlikely given the many applications that rely on this
  • JanusGraph fails in providing consistency between instances (e.g. using out of date caches). Do you use multiple JanusGraph instances? Or multiple threads that access the same JanusGraph instance?
  • Your application fails in handling exceptions in the right way (e.g. ignoring them)
  • Your application has logic faults: not so likely because you have been debugging for some while.
If you want to proceed on this, could you provide the code you use on github? So, others can confirm the behavior and/or inspect configs. Ideally, you would provide your code in the form of a:
 https://github.com/JanusGraph/janusgraph/blob/236dd930a7af35061e393ea8bb1ee6eb65f924b2/janusgraph-hbase-parent/janusgraph-hbase-core/src/test/java/org/janusgraph/graphdb/hbase/HBasePartitionGraphTest.java

Other ideas still welcome!

Marc

Op zondag 18 juni 2017 08:38:02 UTC+2 schreef mi...@...:
Hi! I'm running into an issue and wondering if anyone has tips. I'm using HBase (also tried this with cassandra with the same issue) and running into an issue where preprocessing our data yields inconsistent results. We run through a query and for each vertex with a given property, we run a traversal on it and calculate properties or insert edges that weren't inserted on upload to boost performance of our eventual traversal.

Our tests run perfectly with a tinkergraph, but when using HBase or Cassandra backend, sometimes the tests fail, sometimes the calculated properties are completely wrong, and sometimes edges aren't created when needed. A preprocess task may depend on the output of a previous preprocess task that may have taken place seconds earlier. I think this is caused by eventual consistency breaking the traversal, but I'm not sure how to get 100% accuracy (where the current preprocess task can be 100% confident it gets the correct value from a previous preprocessing task). 

I create a transaction for each preprocessing operation, then commit it once successful, but this doesn't seem to fix the issues. Any ideas?

Thanks,
Mike


Re: Streaming graph data

Jason Plurad <plu...@...>
 

The Gephi integration with TinkerPop was done as a Gremlin Console plugin, so it's not cleanly separated out for use from a standalone Java program. Ultimately, it looks like it only uses a couple files, so maybe it wouldn't be too hard to do.

* GephiRemoteAcceptor.groovy
* GephiTraversalVisualizationStrategy.groovy


-- Jason


On Friday, June 16, 2017 at 10:36:19 AM UTC-4, JZ wrote:
Hello,

Does anyone know if there is a way to stream a graph to a viewer such as Gephi from Janus Java client.  When using the gremlin console you can use the  tinkerpop.gephi plugin and redirect a graph Gephi.  Is there a way to do that from a Java  that has created a graph?  I did not find any mention of this in the documentation. 

Thanks

JGZ


Re: MixedIndex naming convention

Jason Plurad <plu...@...>
 

I think all of the answers are already in the docs (see the Note box in the ES Configuration Overview and Index Creation Options). If there are specific ways you think the docs could be improved, it would be good if you opened up an issue and even better if you submitted a pull request.

In your graph configuration, you actually define the indexes and the shards. You can define more than one index by using a different name for [X]. If you don't set the number of shards, it will default to 5 as dictated by Elasticsearch. For example:

# creating an index named "search". your graph mgmt code would use buildMixedIndex("search")
index
.search.backend=elasticsearch
index
.search.hostname=127.0.0.1
index.search.elasticsearch.client-only=true
# default index name is janusgraph if not explicitly configured. this is how ES refers to it.

# default number of shards is 5

# creating an index named "ravi". your graph mgmt code would use buildMixedIndex("ravi")
index
.ravi.backend=elasticsearch
index
.ravi.hostname=127.0.0.1
index.ravi.elasticsearch.client-only=true
# it's a good idea to set the index-name to the same name

index
.ravi.index-name=ravi
# overriding the default number of shards
index.ravi.elasticsearch.create.ext.index.number_of_shards=8

After you initialize your graph, you can verify that 2 indexes are created in ES, with different # shards in this example:

$ curl http://127.0.0.1:9200/_cat/indices?v
health status index      pri rep docs
.count docs.deleted store.size pri.store.size
yellow open   janusgraph  
5   1          0            0       345b           345b
yellow open   ravi        
8   1          0            0       920b           920b


-- Jason


On Tuesday, June 20, 2017 at 8:31:56 AM UTC-4, Ravikumar Govindarajan wrote:
I saw in many places of documentation/tutorials, that the mixed indexes have this

mgmt.buildIndex("vertices", Vertex.class).addKey(key).buildMixedIndex(INDEX_NAME); // With INDEX_NAME ='search', mostly


Will this create one index in ElasticSearch/SOLR for one property or all properties are clubbed under a single index? 


Also does JanusGraph partition these text based indexes, in case they get too large?


--

Ravi




Re: When janusgraph can support ES 5.x in the future?

Jason Plurad <plu...@...>
 

The next release will have support for ES 5.x. The code is already integrated on the master branch.

-- Jason


On Tuesday, June 20, 2017 at 11:18:47 PM UTC-4, huupon wrote:
Hi, all 

        We want to use janusgraph in our production, but we use hbase 1.2.x and ES 5.3.0 in our system, so I want to know when janusgraph can support ES 5.x in the future ,next version  0.2.0 ?


Re: How can i keep the vertex which i want to add is unique?

Jason Plurad <plu...@...>
 

Check out the documentation for creating a unique composite index.

Here's an example Gremlin Console session which creates a unique composite index on name. When you attempt to set a non-unique name, it will throw a SchemaViolationException.

gremlin> graph = JanusGraphFactory.open('inmemory')
==>standardjanusgraph[inmemory:[127.0.0.1]]
gremlin
> mgmt = graph.openManagement()
==>org.janusgraph.graphdb.database.management.ManagementSystem@2eadc9f6
gremlin
> name = mgmt.makePropertyKey('name').dataType(String.class).cardinality(Cardinality.SINGLE).make()
==>name
gremlin
> nameIndex = mgmt.buildIndex('nameIndex', Vertex.class).addKey(name).unique().buildCompositeIndex()
==>nameIndex
gremlin
> mgmt.commit()
==>null
gremlin
> graph.addVertex('name', 'huupon')
==>v[4184]
gremlin
> graph.addVertex('name', 'huupon')
Adding this property for key [name] and value [huupon] violates a uniqueness constraint [nameIndex]


-- Jason


On Wednesday, June 21, 2017 at 4:34:22 AM UTC-4, huupon wrote:
Hi, all:

       How can i keep the vertex which i want to add is unique?  get and add?  whether have any other methods to add unique vertex ?


Re: Disabling Indexing Backend

Jason Plurad <plu...@...>
 

Hi Chris,

You likely initialized the default graph previously (Cassandra keyspace named "janusgraph"), and it was initialized with C* + ES.

Set a configuration property for storage.cassandra.keyspace using a non-default keyspace name, otherwise your graph configuration above would connect to the existing default graph.

-- Jason


On Wednesday, June 21, 2017 at 5:26:28 PM UTC-4, Chris Ruppelt wrote:
When initializing the JanusGraph, is there a way to disable indexing backend? The below code always assumes using elasticsearch.

       Configuration c = new BaseConfiguration();

        

        c.setProperty("gremlin.graph", "org.janusgraph.core.JanusGraphFactory");

        c.setProperty("storage.backend", "cassandrathrift");


        Graph graph = GraphFactory.open(c);


Thanks
Chris R


Re: how to load a CSV file into janusgraph

HadoopMarc <m.c.d...@...>
 

Hi Elizabeth,

OK, another resource I dug up by searching for CSV on the gremlin user list:

http://www.datastax.com/dev/blog/powers-of-ten-part-i

Translation to JanusGraph should be straightforward.

HTH,   Marc

Op woensdag 21 juni 2017 11:15:51 UTC+2 schreef Elizabeth:

Hi Marc,

Thanks so much for your information, however, I was wondering is there any complete code example about how to use 
"bulk-loading" in Janusgraph without Hadoop?


Thanks again!
Elis

On Thursday, June 15, 2017 at 9:59:10 PM UTC+8, HadoopMarc wrote:
Hi Elizabeth,

For JanusGraph you should also take into account the TinkerPop documentation. A relevant pointer for you is:
https://groups.google.com/forum/#!searchin/gremlin-users/csv%7Csort:relevance/gremlin-users/AetuGcLiBxo/KW966WAyAQAJ

Cheers,    Marc

Op woensdag 14 juni 2017 18:44:16 UTC+2 schreef Elizabeth:
Hi all,

I am new to Janusgraph, I have dived into docs of Janusgraph for almost two weeks, nothing found.
I could only gather the scatted information and most of the time it will prompt some errors.
Could anyone supply a complete example of bulk loading or loading a CSV file into Janusgraph, please?
Any little help is appreated!

Best regards,

Elis.


Re: creating a vertex with a LIST property in a single gremlin statement

Robert Dale <rob...@...>
 

It is supported syntax. It's part of the TinkerPop API.  0.1.0 and 0.1.1 both have the same version of TinkerPop Gremlin.  


Robert Dale

On Tue, Jun 20, 2017 at 2:21 PM, Peter Musial <pmmu...@...> wrote:
Hi All,

(first entry, so please be patient)

Following is more of a gremlin question.  I have a JG schema with a property called status, cardinality list.

status = mgmt.makePropertyKey('status').dataType(String.class).cardinality(Cardinality.LIST).make();

In documentation it has been suggested to do this:

myVertex = graph.addVertex(label,'myVertex')
myVertex.property('status', 'HI')
myVertex.property('status', 'BYE')

which of course it works as advertised.  However, I found that the following shorthand will also work in JanusGraph 0.1.1 (but not in 0.1.0)

graph.addVertex(label,'myVertex', 'status', 'HI', 'status', 'BYE')

Can someone help explain if this is a supported syntax, or simply some syntactic sugar.  Also, I cannot find any documentation on the key differences between JanusGraph 0.1.0 and 0.1.1 with respect to gremlin.

$ echo $CASSANDRA_HOME
/path/janusgraph/apache-cassandra-2.1.17
$ which janusgraph.sh
/path/janusgraph/janusgraph-0.1.1-hadoop2/bin/janusgraph.sh
$ which gremlin.sh
/path/janusgraph/janusgraph-0.1.1-hadoop2/bin/gremlin.sh

Thank you,

Peter

--
You received this message because you are subscribed to the Google Groups "JanusGraph users list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to janusgraph-users+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: Janus Graph Vertex Property limits only 20 Characters of String as Value

Robert Dale <rob...@...>
 


On Thu, Jun 22, 2017 at 7:44 AM, <vennil...@...> wrote:
System.out.println("Value for NAME Property:"+remitterV.property("NAME"));


You're seeing the toString() of VertexProperty which truncates.  Try remitterV.property("NAME").value()

Robert Dale


Janus Graph Vertex Property limits only 20 Characters of String as Value

vennil...@...
 

Hi All,

Im creating a graph using JanusGraph.Creating a Vertex and added a property to it.I have assigned value to the property.The value is having more than 20 characters. After the graph commit, when I query the particular property of the graph, Im getting only first 20 characters.

 

Kindly help me on How to store more than 20 characters as a value to the property.

 

PFB the example for the above scenario

 

//Creating Graph      

 

public JanusGraph graph = JanusGraphFactory.open("janusGraphBatch.properties");

JanusGraphManagement manageSystem = graph.openManagement();

 

//Adding Vertex

Vertex remitterV= graph.addVertex();

 

//Adding value(more than 20 characters) to the Property "NAME"

remitterV
.property("NAME", "abcdefghijklmnopqrstuvwxyz");

 

manageSystem
.commit();

 

//Querying property "NAME"

 
System.out.println("Value for NAME Property:"+remitterV.property("NAME"));

 

 

Result:

Value for NAME Property:abcdefghijklmnopqrst


 


Re: Sample project on Janus Graph

Yashpal Singh <yadhuva...@...>
 

Thanks a lot, Misha.

On Wed, Jun 21, 2017 at 12:36 AM, Misha Brukman <mbru...@...> wrote:
Hi Yashpal,

Here's some sample code in Java: https://github.com/pluradj/janusgraph-java-example

Misha

On Mon, Jun 19, 2017 at 6:26 AM, Yashpal Singh <yadhuva...@...> wrote:
Hi All,

I am new to graph DB, So if will be really helpfull, If we have some sample projects available on the git.

--
You received this message because you are subscribed to the Google Groups "JanusGraph users list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to janusgraph-users+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.




--
Cheers

YASHPAL SINGH

Ph. No. +91-9704811794


Disabling Indexing Backend

Chris Ruppelt <chris....@...>
 

When initializing the JanusGraph, is there a way to disable indexing backend? The below code always assumes using elasticsearch.

       Configuration c = new BaseConfiguration();

        

        c.setProperty("gremlin.graph", "org.janusgraph.core.JanusGraphFactory");

        c.setProperty("storage.backend", "cassandrathrift");


        Graph graph = GraphFactory.open(c);


Thanks
Chris R


Re: Janus Graph as replace for NOSQL database in Web Applications for non-bulk randomly generated data

Jane <shabs...@...>
 

So by separating the data into two different databases, traversals on vertex properties would not be possible without external look ups. 

Would there be any specific optimizations that I could possibly do since I would like to also be able to use OLAP part of Janus. 


On Tuesday, June 20, 2017 at 3:29:16 PM UTC-4, Robert Dale wrote:
You could keep your schema-less data in your existing NoSQL db and then add a graph database for storing relations.

Or try a multi-model graph database. There are several listed here http://tinkerpop.apache.org/#graph-systems

There's no one right way to do it.

Robert Dale

On Tue, Jun 20, 2017 at 2:32 PM, Jane <sh...@...> wrote:
Can I/Has anyone use Janus Graph as a replacement for NOSQL databases in web applications? I'm talking about high throughput on both reads and writes (non-bulk, randomly generated by user traffic). A lot of examples that are getting tossed around here are just a bunch of people exporting their data from somewhere else and bulk importing it into Janus Graph for analysis. 

It seems that a blocking issue for me with Janus Graph is that for it to remotely even perform decently it requires an index and schema to be pre-generated for the data set. With my use case it is simply not possible to determine everything that a user might want to possibly upload to the database and hence why we use a NOSQL database. However, the data is also highly relational and would benefit from being stored in a graph database. 

Has anyone gotten over this hurdle or have any advice? 

--
You received this message because you are subscribed to the Google Groups "JanusGraph users list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to janusgraph-use...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: how to load a CSV file into janusgraph

Elizabeth <hlf...@...>
 

Hi Marc,

Thanks so much for your information, however, I was wondering is there any complete code example about how to use 
"bulk-loading" in Janusgraph without Hadoop?


Thanks again!
Elis

On Thursday, June 15, 2017 at 9:59:10 PM UTC+8, HadoopMarc wrote:
Hi Elizabeth,

For JanusGraph you should also take into account the TinkerPop documentation. A relevant pointer for you is:
https://groups.google.com/forum/#!searchin/gremlin-users/csv%7Csort:relevance/gremlin-users/AetuGcLiBxo/KW966WAyAQAJ

Cheers,    Marc

Op woensdag 14 juni 2017 18:44:16 UTC+2 schreef Elizabeth:
Hi all,

I am new to Janusgraph, I have dived into docs of Janusgraph for almost two weeks, nothing found.
I could only gather the scatted information and most of the time it will prompt some errors.
Could anyone supply a complete example of bulk loading or loading a CSV file into Janusgraph, please?
Any little help is appreated!

Best regards,

Elis.


How can i keep the vertex which i want to add is unique?

huu...@...
 

Hi, all:

       How can i keep the vertex which i want to add is unique?  get and add?  whether have any other methods to add unique vertex ?


When janusgraph can support ES 5.x in the future?

huu...@...
 

Hi, all 

        We want to use janusgraph in our production, but we use hbase 1.2.x and ES 5.3.0 in our system, so I want to know when janusgraph can support ES 5.x in the future ,next version  0.2.0 ?