Initial support for pluggable storage backends
These changes add support for pluggable storage backends. Previously, the storage layer only supported a single, built-in, in-memory storage backend. Users integrating with OPA would write a shim layer that pushed data into this backend so that the policy engine could evaluate over it. This approach is not sufficient when the dataset is too large to replicate or the process of replication would introduce race conditions into systems integrated with OPA. With these changes, users can implement their own storage backends for OPA. The storage backends are "mounted" into the root document at a particular location. References to data under this location are then served by the user's storage backend. This allows the storage backend to fetch data from the source of truth thereby avoiding race conditions (when that is important). These changes introduce new interfaces in the storage layer: - Transaction interface - Store interface (i.e., the pluggable backend) - Storage object, represents the policy engine's storage layer - Trigger interface
T
Torin Sandall committed
9ad2f63212f69209a516ef5149221c96b14c16ee
Parent: 6b6d46c