Dear like-minded colleagues,

Sorry for the stream of ideas, but I wanted to share my thoughts on API
dual support.

I believe the dual support of two API types—structured and process—is
counterproductive because it prevents the creation of truly
platform-independent distributions.
When an application development team begins to rely on the structured API,
they become limited to a minimal number of vendors who support embedded
deployments.

Furthermore, I agree with Stephen Mallette that it is more straightforward
and more idiomatic for a provider to implement a few basic steps that
operate on database records than to implement the more demanding interface
of a Graph instance.

In practice, this suggests the following changes:

1. Remove the Graph interface as a public API.
2. Make the Element, Vertex, and Edge concepts read-only.
3. Add steps to control transactions uniformly at the GraphTraversal level
to unify management.

Regarding transaction management, the current implementation appears to be
an ununified side feature, especially considering the disparate lifecycles
between embedded and remote deployments. Introducing steps that control the
transaction lifecycle would resolve this issue.

What do you think about these points?
We will consider implementing those items on our side in the short term.

Best regards,
Andrii Lomakin
YouTrackDB development lead.

Reply via email to