JanusGraph

J

JanusGraph

JanusGraph - Distributed, open source, massively scalable graph database.

Join

Issues faced for consistent indexing (both Composite & Mixed) [ElasticSearch]

--> Schema was provisioned, and then, all the schema was verified and the management objects closed. [All the indexes were in enabled state, both mixed and composite] --> [Issue:1] Index wasn't created in ElasticSearch, giving a 404, when a vertex totals direct Index Query is performed --> As a work around. for initial data 1000 Documents of sample data was ingested, and as we expected, the indexes were not present --> data was re-indexed. Indexes were created in ElasticSearch, and some composite indexes needed re-Indexing as well. After reindexing, the performance was as expected...
Solution:
@Boxuan Li , while i was using multi-tenacy, there were more configs to be given to the elastic search as well, for the graphName. Marking this as resolved. The index was being created with janusgraph_IndexName, where as it was supposed to be created in tenant_IndexName, It was a misconfiguration, that wasn't carefully considered. ...

Custom ID best practice

Hey I'm looking into using custom ID for my DB vertices & came across this: https://github.com/JanusGraph/janusgraph/issues/1221#issuecomment-938060054 Where there is a mention of potentially moving to use UUID internally. Can I ask what's the overall consensus/traction on this? And does this mean it's preferable for new graphs to use custom id with UUID now? Thank you....

Indexing

Is it possible to have both a composite and mixed index for a vertex property. If so, is it ever desirable?
Solution:
Depending on your operator, the good index should be called. with equality (like in your exemple) yes the composite index should be called. In another traversal, if you go on a text operator, the mixed index will be called. It’s also depends on the type of index you specified for your property in your mixed index.

I need to perform upgrade my janusgraph to new version

Current Version Janus 0.6.3/Cassandra 4.0.5Migrate to Version Janus 1.0.0/Cassandra 4.0.6 how I can perform miggration...

script in empty-sample.groovy is called twice

I have JanusGraph running as it's own process and remote to it from Gremlin. Since i'm learning, i create an in-memory graph in empty-sample.goovy when i start JanusGraph g = graph.traversal() rV = g.addV('r').property('name', 'r-name').next()...

JG 0.6 vs JG 1.0 different behaviour for same Gremlin query

Hi All, I have noticed some difference between JG 0.6 and JG 1.0. I have a person node created as follows: g.addV('person').property('firstName', 'John').property('lastName', 'Doe')...
Solution:
I did some more digging. It seems that this is not related to JanusGraph but to TinkerPop. Once I used Gremlin Console 3.5.5 and loaded "Modern" graph, executing "g.V().project('name', 'age').by('name').by('age')" returns: ==>[name:marko,age:29] ==>[name:vadas,age:27]...

ServerGremlinExecutor.<init> - Could not invoke constructor on class org.janusgraph.graphdb.manageme

Hi, I am still learning to use JanusGraph. I was working on doing bulk ingestion of data into JanusGraph and I am struggling with overcoming this error which involves using ConfiguredGraphFactory for dynamic graph creation.
I configured 3 nodes to be the CassandraDB backend cluster, which are all up and running. Here's the complete janusgraph-cql-configuration.properties file:...

many graphs

I'm a little confused about accessing graphs. I have ideas for two unrelated graphs. For now, in my gremlin server yaml i have four graphs (while i'm learning) graphs: { graph: conf/janusgraph-inmemory.properties, ConfigurationManagementGraph: conf/janusgraph-cql-configurationgraph.properties,...
Solution:
You then also don't need JanusGraphFactory.open() any more since JanusGraph Server already opened the graph instances for you. By using the JanusGraphFactory directly in Gremlin Console you basically circumvent this whole functionality from JanusGraph Server and instead access the JanusGraph API directly to load the graphs yourselves. This means that it doesn't know about your Gremlin Server YAML which also explains why you cannot use graph names defined in that YAML...

Indexing on vertex label

Hi, I was under the assumption that vertex label are indexed by default. But this doesn't seems to be the case. I also can't to find a way to index label from consulting the documentation. Is this not possible? And if so what is the reason for this? Thank you....

Add a collection of values in an edge property

Hi, I tried to find out some Gremlin example but nothing. Is it possible add, in a single edge property a collection (like a list) of values? For instance:
g.addE('link').from('x').to('y').property('p', [1, 2, 4]).next() ...

Custom Vertex IDs and Serialized Graph

Just wondering if anyone has tried to use custom vertex ids and restore a serialized graph? g.io("/tmp/foo.kryo").write().iterate() Then doing the converse with a read() but then it errors with must provide vertex id....

Concurrent updates during a REINDEX

👋🏻 Hello. I was reading JanusGraph documentation on reindexing (https://docs.janusgraph.org/schema/index-management/index-reindexing/) which says
JanusGraph can begin writing incremental index updates right after an index is defined. However, before the index is complete and usable, JanusGraph must also take a one-time read pass over all existing graph elements associated with the newly indexed schema type(s). Once this reindexing job has completed, the index is fully populated and ready to be used. The index must then be enabled to be used during query processing.
which made me wonder how JanusGraph handles incremental updates happening concurrently to a REINDEX. For instance, if we consider a slow reindexing process (e.g. done through the ManagementSystem interface) that can take several hours, how are concurrent additions/updates/deletions of vertices/edges/properties handled?...

Is Java 17 support on the roadmap?

Hi JanusGraph team, thanks for your hard work. Are there any plans to support Java 17 in the near future?
Solution:
Hi! We use JanusGraph in production with Java 17. However, JanusGraph didn’t migrate some tests libraries to support proper testing against Java 17 runtime. There are plans to fix that but there is no ETA for that. See: https://github.com/JanusGraph/janusgraph/pull/3937 See: https://github.com/JanusGraph/janusgraph/pull/4040 Previously we agreed to drop support for Java 8 and then add support for Java 17 because supporting proper testing for both versions are more challenging. However, janusgraph-driver will still support Java 8 if you depend on it. ...

Do Custom Vertex IDs Guarantee Single Instance of That Vertex?

Previously I was using a composite index with a unique constraint with locking to try to enforce uniqueness for new vertices, but switching to using that property as a custom vertex ID has a noticeable performance boost. Just wondering if we're still guaranteed vertex uniqueness that locking previously would (try to) enforce? I figured it does, assuming that custom vertex id is what's getting serialized to the backend. If so I'm guessing there literally wouldn't be a place for a doppelgänger to exist, but figured I'd ask since it wasn't explicitly stated in the docs after switching to custom vertex ids....
Solution:
Just wondering if we're still guaranteed vertex uniqueness that locking previously would (try to) enforce?
Yes. And the reason is exactly what you suggested: the vertex id is what gets serialized to the backend. Good suggestion that we should have included it in the doc. Would you mind creating an issue or PR for that?...

secure connection - TLS

I could not find any topic about TLS encryption and how Janus does it in the docs. Does Janus support TLS encryption?...

Best configuration for a single server

Server Spec: 256 vCPU (Threads) / 4 TB memory RAID5: 35TB XFS Filesystem Current have a single server I'd like to test with in a semi-production state. I realize it's not HA but it has plenty of horsepower for a decently size dataset. Having never installed JanusGraph, nor ScyllaDB, I'm not sure how much memory to assign to each service. I imagine the underlying DB will consume the most amount of resources. Please correct me if I'm wrong. ...

Elasticsearch mixed index performance

Hi All, we use JanusGraph 1.0 with Cassandra storage backend and 3 node cluster Elasticsearch index backend. We try to ingest 100.000 nodes. Our nodes are very simple for benchmarking purpose: all are person nodes with id, first name and last name properties. 'id' has a composite index, first name and last name are supposed to have mixed index. At this point we don't ingest any edges. Ingestion time of 100.000 nodes without any mixed index (only composite index for 'id') took for us 2 minutes. While ingesting the same data with mixed index on first name and last name took 50 minutes which is significantly slower. I am wondering if we misconfigured something or using mixed index is expected to slow down ingestion so drastically?...

Support to query vertex with custom id in Gremlin.Net SDK

@Florian Hockmann I am exploring usage of custom vertex id in our graph, when I play around with C# SDK v3.7.1 to query a vertex which has custom identifier and property added to the vertex, I get an exception:
No serializer found for type 'janusgraph.RelationIdentifier'.
Stacktrace attached.
No serializer found for type 'janusgraph.RelationIdentifier'.
Stacktrace attached.
...
Solution:
They are included in the NuGet package JanusGraph.Net, but you still have to use them in your code. Did you create the client as shown in the README? https://github.com/JanusGraph/janusgraph-dotnet/?tab=readme-ov-file#usage Since you're using GraphBinary, you should create the client like this: ...

Vertex ID collisions

Hello! I'm following up on my questions from https://discord.com/channels/981533699378135051/1198566881360093274/1198566881360093274 and https://discord.com/channels/981533699378135051/1188579609667711047 We want to migrate our existing JanusGraph from Bigtable to Cassandra. One of the hypothesis was to try and leverage JG 1.0 custom vertex IDs, to import a GraphSON file while keeping the original IDs....