Skip to main content

Organizing and sharing data

This page focuses on practical patterns for organizing and sharing data. For the underlying mechanics of ownership, access grants and groups, see the access model reference page.

Organizing your data is important because:

  • Organized data can be easily accessed, searched and used.
  • Access management and sharing in general is simpler when data is organized.
  • Performance can drop when a few nodes are collected to too many other nodes / have too many relations. Usually only a problem for 10.000+ relations, also called super nodes.
    • Super nodes can appear for time based data as well. E.g. if you create and store a “report” every 5 minutes under the same parent node, then you will have more than 8.000 elements after just a month. In order to reduce this load on the parent node, you can use time based sub-groupings:
Bad
Good

General tips

  • Group elements together by using parent nodes - a single node which “owns” all related elements.
  • Use nested groups.
  • Do not be afraid to change groupings, hierarchies etc. - Ember Nexus uses a graph database internally, so these operations are generally not expensive.

Tips for multi-user installations

  • Do not grant individual users access to specific elements, groups or similar. Instead, create a Group, add the user to the group, and grant the group access to the element.
Bad
Good

Sharing and transferring ownership

To share an element with someone else, grant their user (or, following the tip above, a group they belong to) one of the HAS_X_ACCESS relations, or OWNS for full access - see access model for the full set of operations and how conditional access (per type, per parent, per creator) works.

To hand ownership of an element over to someone else entirely, rather than just sharing it, see transfer of ownership - it also covers what to watch out for so you don’t lock yourself out mid-transfer.