Terminology and method
Arke was studied to avoid code and logic repetition. What you will find here is a standardized approach, this permits to unify logics with naming and methods.
Getting into the arke mindset you'll discover that architecture shared a common philosophy. Variable naming and conventions are the main keys. We invite you to follow the below terminology to get started with Arke development, this help you to understand how data are stored and how should be modeled.
Arke
It's a type of abstract model that can represent a person, a place or a thing. An Arke can be imagined as a json representation of a database table, the name of which will be determined by the name of the Arke itself.
Everything could be described as an Arke, as a digital twin for our purpose.
Imagine that you want to create an application to manage animals species, their characteristics to catalog them and relate them.
We can create an Arke for each entity that we want to manage: e.g. the arke dog
, the arke cat
and the arke fish
(Use as convention the singular for the identifier naming)
Every time that you'll create the primitive
arke a set of functionalities are attached:
- Database storing (persistance): a Record on database will be created to store and manage the updates of your arke
- Autogenerated APIs: with authentication system, permissions (GET/UPDATE/CREATE/DELETE), sorting, filters and more to allow the connection from other systems (our arkectl CLI, APIs client, the arke console or your frontend application).
Parameters
The parameters extends the attributes of our entity to describe it. Each arke has a list of default
assigned parameters
and a custom
list.
On default parameters we found a standard list of generic information useful to manage our arke. For example we have the id that identifies our entity, the created_at/updated_at to know when this entity it was created or updated and more.
On custom parameters we found a list of additional specific parameters that we can add on our arke to describe it. Considering the arke dog for our application, we can associate parameters name/weight/race/etc. to describe our dogs, and later collect, the dog data.
The list of parameters that composed an arke is defined as Struct
(structure)
There are different types
of parameter that you can define such String/Integer/Float/Link, we'll discover them better on
the Parameters chapter.
Units
After the definition of our arke and their parameters, we can create a unit
.
The unit is the specific instance of the arke. Always considering our arke dog
, a unit
is the
specific dog (eg. Pluto, Scooby Doo, Balto) with his data (name, weight, race) defined previously by parameters. On below
a representation of dog and race arke with their parameters and units.
Link
Links define the type of relation/connection that can exist between different Units.
Units can be linked together to create distributed structures. For our application the dog could be connected on units
of the arke race. The race represents the Parent
and the dog the Child
.
Link parameter
It exists a special parameter with type link that automatically generated a connection when is popolated.
Group
With Group you can create aggregation of arke and relative units. In our case we can create a animal
group that
groups all dogs, cats and fish. With grouping we can have autogenerated APIs for this group with sorting, filtering units
of all arke in this group.
Schema
Below you can find a complete representation that can help you to understand all low-level entities of arke framework.
Below you can find a quick recap table that will help you to understand the differences between Arke and Relational Databases.
Relational Database | Arke framework |
---|---|
Table | Arke |
Column | Parameter |
Record | Unit |
Relation | Link |
Remember that Arke is the primitive that unlock the functionalities (such CRUD APIs, struct, sorting). Each upper layer such unit, parameter, link, shared that functionalities and extend them