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.
