Gentics Mesh Domain Model
Intro
This graph gist is used to document the Gentics Mesh graph database structure. The graph contains concepts for authentication handling, versioning and user/role/group management.
Root Tree
The MeshRootImpl vertex is the root for the mesh graph data structure. Only a single MeshRootImpl exists in the whole graph. Various aggregation vertices are connected to the mesh root vertex.
Node Root
There are multiple node root vertices. One is attached to the central mesh root and each project also has its own node root vertex.
Tag Root
There are multiple tag root vertices. One central one is connected to the mesh root vertex (MeshRootImpl) and additional ones are created for each tag family.
TagFamily Root
There are multiple tag family root vertices. One central which is connected to the mesh root vertex and additional tag family root vertices are created for each project.
Tag relationships to other elements (nodes, projects)
User/Group/Role Root
Each element type (user, role, group) has its own root aggregation vertex. Users are assigned to groups and roles are assigned to groups. The additional ASSIGNED_TO_ROLE edge is a shortcut edge which improves performance.
User Node References
A user can reference a single node in order to construct the nodeReference information.
Permissions
Gentics Mesh uses a document based permission system. Permissions are created in between roles and mesh elements such as tags, projects, nodes, tag families.
Changelog Root
The changelog root aggregation vertex is used to list all applied changelog entries. Each connected change vertex contains information about executed graph changelog actions. This way the mesh installation can determine which changes have already been executed.
Node With Fields
A node can have multiple graph field containers. A graph field container represents the content of the node for a specific language, release and version. The edge HAS_FIELD_CONTAINER contains additional information in order to identify the language, release, and type of the field container. A field container can represent the latest draft version, the current published version or any older version of the graph field container.
-
HAS_FIELD_CONTAINER: edgeType, releaseUuid, languageTag
Node Fields
There are three types of field elements in mesh.
-
Basic Field Types such as:
-
StringFieldImpl
-
DateFieldImpl
-
NumberFieldImpl
-
BooleanFieldImpl
-
HtmlFieldImpl
-
These field types are mapped to properties of the field container and thus don’t require additional vertices, edges.
-
Referencing field types such as:
-
MicronodeField
-
NodeField
-
These field types create edges to the referenced element (e.g.: a NodeImpl vertex or a MicronodeImpl)
-
Complex field types such as:
-
All kind of lists
-
These field types require additional vertices which are used to store the information.
Node Versioning
The displayed node has two field container. One which is represents the latest version of the node content and one which represents the previous version. One of those field containers is connected to two field vertices. This means that the old field (DateGraphFieldListImpl) did not change in the previous revision and was thus reused. The date list field would not be reused if a modification had been detected in the fields content in between both versions.
Is this page helpful?