Currently Graph contains following components.
Graph has storage and each storage have followings.
- SerDe: serialize and deserialize IndexEdge/SnapshotEdge/Vertex into bytes.
- MutationBuilder: convert IndexEdge/SnapshotEdge into RPC which is dependent on storage backend.
- QueryBuilder: issue RPC for fetch on storage backend
With these components, storage know how to actually store/fetch IndexEdge/SnapshotEdge/Vertex to, from storage backend.
In my opinion, storage layer is unnecessary since all graph instance does is delegating into storage. I am suggesting to remove storage layer and use different Graph class for different storage backend.
So for example, change AsynchbaseStorage into AsynchbaseGraph.
I want to discuss how our Graph Client should be on this issue and change it according to discussion.