Data
Concepts
Data objects in Cavaliba are best understood with the following concepts in mind.
Schema are top-level asset families : Devices, Applications, Laptops, Projects, Customers, Books, Facilities, Cooking Receipes, Invoices, etc.
Fields describes attributes for each Schema. Fields and Schema can be modified at any time during the life of the system: add or remove fields, change constraints.
Field types can be basic : string, int, float, boolean, date, IP addresses, … or more complex structure : other objects, enumetate (static) lists, users and groups, external and computed fields, etc. Fields can be single or multi-valued. Fields can be mandatory or optional.
Instances are individual objects. Each Instance belong to one Schema, and has values for some or all fields related to their Schema.
Schemas (and their Instances) have relationships : a geographical sites is located in a region or country. A virtual machine is hosted on a physical server, etc.
YAML - Schema, Fields, Instances can be provided as regular YAML (or JSON) files. They can be uploaded to Cavaliba from UI, API or CLI command, with appropriate permissions.
Once Schema are created (or loaded from provided demo schema), Cavaliba Data Management automatically provides :
- a Responsive Web UI for humans : create, view, edit assets
- a REST API for machines: same operations, single instance/field level, or massive bulk transfer
- a CLI command to import/export in batch from/to external systems
- a relationship framework, including inheritance / propagation of fields and objects between Instances
- a Role/Permission model to handle authorization at Class/Instance/Field level
- a Data storage at scale on standard relationnal databases (PostgreSQL, MariaDB, MySQL, …) with an Entity-Attribute-Value (EAV) dynamic datamodel.
See Permissions to