JanusGraph

J

JanusGraph

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

Join

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....

Changing default ES index name prefix

Hi, is it possible to change the default prefix of Elasticsearch index names? Currently, when I define a mixed index, JanusGraph creates a correspoing index in ES named janusgraph_<index_name>. I would like to change the prefix for all indices to something like jgtest1_<index_name>. I tried following the documentation (https://docs.janusgraph.org/index-backend/elasticsearch/#janusgraph-indexx-and-indexxelasticsearch-options), adding this line to the JanusGraph server .properties file: index.search.elasticsearch.index-name = jgtest1 however, this does not seem to work. ...
Solution:
Your configuration is generally correct except the index-name option. You added “elasticsearch” after “search” which isn’t a valid configuration option. Instead, try to use “index.search.index-name = jgidxtest”. Hopefully it should fix the issue you are having. Let me know otherwise.

Migrating from Bigtable to Cassandra

Hello! I want to explore migrating our Janusgraph storage from Bigtable to Cassandra. One suggestion is checking Google's Dataflow export to Parquet, but I'm not sure if the underlying storage schema would be the same. I'm hoping to not resort to a GraphSON export, because we want to keep the vertex IDs, and still have some showstoppers when testing JG 1.0...

Drop the Janus Graph Schema

Hello!! Hope you are having a good day! I have corrupted the schema of my Janusgraph and now I am not able to access my graph. Is there a way to drop the schema without deleting the data....

Idempotent upsert, is that possible?

For our project, we need to be able to insert vertexes and edges at a very high pace using spark streaming. After many tests, we found an approach that seems very promising. In our context, we could have sporadic vertex collisions, so instead of checking for the existence of a vertex before inserting it, we decided to use a custom ID. As an id, we use a hash generated from the vertex property; the id somehow represents the vertex value, so if two vertexes have the same property values, they hav...

Deserializing of Vertex ID with Custom String value

Hi, I've come across an issue with deserialization from users enabling custom vertex ID values and types as documented on https://docs.janusgraph.org/advanced-topics/custom-vertex-id/. Below is a sample GraphSON serialization error highlighting the issue, where a vertex has a custom string ID value (U933779): ```java.lang.IllegalArgumentException: Invalid id - each token expected to be a number...
Solution:
Hey, turns out it was a mismatch between driver and server version due to the user being on an older version of G.V(), i need to remember to make this the first thing i check 😅

TreeStep and MultiQuery support

On JanusGraph 1.0, a traversal like g.V().has(...).out(...).has(...).out(...).has(...) nicely leverages the MultiQuery optimisation and returns results in acceptable time. However, as soon as we add a tree() step, as in g.V().has(...).out(...).has(...).out(...).has(...).tree(), all MultiQuery optimisations are disabled and the traversal time increases drastically. Based on the following code, I think this applies to all Steps with PATH requirement (e.g. PathStep, TreeStep): https://github.com/JanusGraph/janusgraph/blob/v1.0/janusgraph-core/src/main/java/org/janusgraph/graphdb/tinkerpop/optimize/JanusGraphTraversalUtil.java#L393 ...

Deleting static Vertex Labels from the database

Hello, hope you are having a good day! I have a vertexLabel in my schema which is sort of corrupted. Whenever I call isStatic on the vertexLabel, then it fails. ```...

suggest an example to write spring-boot based rest api using janusgraph

My Json Data is documents is like below, please also suggest relevant data model in JanusGraph (i.e. edge & vertex & properties of vertex choices) As shown in below jsons, Lev1 is parent of Lev2, and Lev2 is parent of Lev3 and so on...

Using custom vertex IDs for import/export

Hi All, According to some tests done long long time ago, when exporting / import data using io.graphson.read / write, would not preseve vertex IDs. Will enabling cutom vertex IDs allow us to perserve vertex IDs?...
Solution:
Prior to JanusGraph 1.0.0, it's fixed. Starting from JanusGraph 1.0.0, it's global offline