I wonder if there's a design decision documented somewhere that makes the existing graph databases like Neo4j, etc. not good enough for Youtrack's use case.
I've always been curious about graph DBs and dabbled a bit in them, but for those who have more extensive experience in them-- are they really worth it? Is it that for small scale SQL is better and graph DBs really only matter at scale, or for specific use cases with highly connected data?
Object databases routinely go away and routinely come back.
Ten years ago I worked with a database called Versant OODBMS (from Actian). I was a junior sysadmin so i was essentially administering it at a very surface level but skimming the documentation (and trying some of the samples) it was very cool that you could pick essentially any random class, implement an interface (and hence a few method) and that was it, you had a database-serializable object.
The main issue was really scaling out (as in, multiple machines) but otherwise was a really great database.
I played around with something similar before called typedb. It also does object oriented graph model which was a bit weird at first after using sql for a long time, but once it clicks there's a lot of thing that you could express surprisingly nicely
* the technical leader of the YouTrackDB project, Andrii Lomakin, was one of the main contributors to OrientDB -- see https://medium.com/@youtrackdb
* YouTrackDB is a fork of OrientDB
* this project makes heavy use of Claude Code
* YouTrackDB does not use Kotlin
* this can be used as a network service (rather than just embedded in a single runtime process like in current production YouTrack), but I've not yet got the docker images working to try.
from the blurb
YouTrackDB is a general-purpose object-oriented graph database developed by JetBrains, used internally in production. It implements the Apache TinkerPop API with Gremlin query language support and features O(1) link traversal, schema-less/mixed/full modes, and encryption at rest. The project is a fork of OrientDB, re-architected under the com.jetbrains.youtrackdb package namespace.
I hope this doesn't complicate the process of deploying YouTrack on-prem. That's the best part about YouTrack; historically, you can deploy on prem with no backing DB. From the outside perspective, it just stores everything to flat files.
18 comments
[ 887 ms ] story [ 3889 ms ] threadTen years ago I worked with a database called Versant OODBMS (from Actian). I was a junior sysadmin so i was essentially administering it at a very surface level but skimming the documentation (and trying some of the samples) it was very cool that you could pick essentially any random class, implement an interface (and hence a few method) and that was it, you had a database-serializable object.
The main issue was really scaling out (as in, multiple machines) but otherwise was a really great database.
[0]: https://github.com/falkordb/falkordb
* AFAICT, this is not (yet) in active use in production YouTrack, which is still using https://github.com/JetBrains/xodus
* the technical leader of the YouTrackDB project, Andrii Lomakin, was one of the main contributors to OrientDB -- see https://medium.com/@youtrackdb
* YouTrackDB is a fork of OrientDB
* this project makes heavy use of Claude Code
* YouTrackDB does not use Kotlin
* this can be used as a network service (rather than just embedded in a single runtime process like in current production YouTrack), but I've not yet got the docker images working to try.
from the blurb
YouTrackDB is a general-purpose object-oriented graph database developed by JetBrains, used internally in production. It implements the Apache TinkerPop API with Gremlin query language support and features O(1) link traversal, schema-less/mixed/full modes, and encryption at rest. The project is a fork of OrientDB, re-architected under the com.jetbrains.youtrackdb package namespace.