Smart-Caches
A Smart-Cache is used to store data in CORE. In event-driven architecture terms, it is a “materialized view” of data that is mastered on an event log. The event log may be transactional in nature - a sequence of updates and deletes - so Smart-Caches projectors need to be able to process CRUD operations. As well as the event-driven features, the other thing that makes Smart-Cache different to a regular database is that they store the security labels alongside the data. These labels are then used (along with the users attributes) to make redaction decisions when the data is accessed - either through an API or a query endpoint. Smart-Caches communicate with the ACCESS component to ascertain whether a user can have access to particular lables. They may also keep a short-lived cache of permissible user/label combinations locally to improve performance.
CORE implements a CQRS approach to updates. Rather than individual Smart-Caches accepting updates from the users, all their updates come from the event log. Any application / user produced updates must therefore be applied through the CQRS endpoint.