Hi Stephen, I also wanted to share an example of how an optimized, vendor-specific short query can be provided by overriding the default implementation:
https://github.com/JetBrains/ldbc-snb-interactive-gremlin/blob/master/ytdb/src/main/java/com/youtrackdb/ldbc/ytdb/YtdbModule.java Best regards, Andrii Lomakin On Fri, Dec 5, 2025 at 3:02 PM Andrii Lomakin <[email protected]> wrote: > Here is the default class that you can override to specify each query > separately > > https://github.com/JetBrains/ldbc-snb-interactive-gremlin/blob/master/common/src/main/java/com/youtrackdb/ldbc/common/DefaultQueryModule.java > . > > On Fri, Dec 5, 2025 at 1:58 PM Andrii Lomakin < > [email protected]> wrote: > >> Hi Stephen, >> >> Thank you for the feedback and for sharing your thoughts on idiomatic >> Gremlin. >> >> Our implementation utilizes Guice, which enables vendors to override the >> implementation of every query separately, addressing the differences in >> database-specific optimizations you mentioned. >> We are currently working on documentation that will provide more details >> about our design and the framework's capabilities. >> >> Best regards, >> Andrii Lomakin >> >> On Fri, Dec 5, 2025 at 1:45 PM Stephen Mallette <[email protected]> >> wrote: >> >>> Thanks for sharing this. TinkerPop gets a lot of requests for an >>> implementation of the snb benchmarks. There are some older repositories >>> out >>> there that used to support it, but they are no longer maintained to my >>> knowledge. it will be nice to be able to point folks to one that is >>> current >>> the next time we're asked. >>> >>> One thing I remember from the earlier implementations of this benchmark >>> for >>> TinkerPop, was that Gremlin often optimizes differently per database and >>> there are multiple ways to write a Gremlin query to get the same result. >>> One of the earlier implementations was written with a particular graph in >>> mind and therefore if run against a different graph might cut against it. >>> It's just my suggestion but I tend to think that a good/fair benchmark >>> implementation would simply maintain the Gremlin in its most idiomatic >>> form >>> (i.e. it would use the form most commonly accepted). I suppose that is >>> subjective to some degree, but as an example, a lot of folks new to >>> Gremlin >>> immediately reach for select(): >>> >>> gremlin> g.V(2).as('x','y').select('x','y').by('name').by('age') >>> ==>[x:vadas,y:27] >>> >>> which we would almost surely say was idiomatically incorrect for Gremlin. >>> We'd prefer project() for this case: >>> >>> gremlin> g.V(2).project('x','y').by('name').by('age') >>> ==>[x:vadas,y:27] >>> >>> Or, instead of: >>> >>> gremlin> g.V().where(out()) >>> ==>v[1] >>> ==>v[4] >>> ==>v[6] >>> >>> we'd prefer: >>> >>> gremlin> g.V().where(outE()) >>> ==>v[1] >>> ==>v[4] >>> ==>v[6] >>> >>> even though TinkerPop's optimizers would catch that small detail for us. >>> I >>> suppose a different approach might be to allow providers to selectively >>> override a query, if a different writing can achieve better performance >>> in >>> their case. Maybe users of the benchmark could then opt to run it with >>> the >>> idiomatic Gremlin or with the overrides to compare. I'd be curious if you >>> had any thoughts on this matter as I think it has some impact on the >>> direction of the implementation. >>> >>> On Wed, Dec 3, 2025 at 3:28 AM Andrii Lomakin via dev < >>> [email protected]> wrote: >>> >>> > The repository is available. Sorry for the confusion. >>> > >>> > On Wed, Dec 3, 2025 at 9:18 AM Andrii Lomakin < >>> > [email protected]> >>> > wrote: >>> > >>> > > I do sorry for a bit early publishing repository will be available >>> soon >>> > > >>> > > Andrii Lomakin >>> > > YouTrackDB development lead >>> > > >>> > > On Wed, 3 Dec 2025, 07:57 Andrii Lomakin, < >>> [email protected]> >>> > > wrote: >>> > > >>> > >> Good day, colleagues. >>> > >> >>> > >> Thanks to Vladislav Grinin (author of this project), I am going to >>> > >> present to you our implementation of vendor-independent LDBC SNB >>> > >> benchmarks. They use IoC based on Guice, so any vendor can utilize >>> it to >>> > >> measure the performance of their database. >>> > >> >>> > >> >>> > >> https://github.com/JetBrains/ldbc-snb-interactive-gremlin >>> > >> >>> > >> If you have any questions, feedback, or need assistance to >>> incorporate >>> > >> them, please join our Zulip chat. We will be glad to answer them >>> > >> https://youtrackdb.zulipchat.com . >>> > >> >>> > >> We look forward to seeing you there! >>> > >> >>> > >> P.S. Please refrain from creating issues or discussions on GitHub. >>> We >>> > >> will close them soon. >>> > >> >>> > >> -- >>> > >> Andrii Lomakin >>> > >> YouTrackDB development lead >>> > >> >>> > > >>> > >>> > -- >>> > Andrii Lomakin >>> > YouTrackDB development lead >>> > >>> >> >> >> -- >> Andrii Lomakin >> YouTrackDB development lead >> > > > -- > Andrii Lomakin > YouTrackDB development lead > -- Andrii Lomakin YouTrackDB development lead
