Skip to content
This repository has been archived by the owner on Dec 12, 2022. It is now read-only.

Storage Modules

Derk Norton edited this page Aug 22, 2021 · 5 revisions

Repository Storage Architecture

The following diagram shows the architecture of the repository storage framework.

Architecture

Each storage module implements the Repository API. They differ in what additional functionality they provide and whether or not they delegate the actual storage to another storage module. The areas of focus for the storage models include:

  • Local Filesystem Based Storage
  • Memory Based Cached Storage
  • AWS S3 Bucket Based Storage
  • Validated Document Based Storage
  • Remote Document Repository Service Based Storage

Local Storage

The local storage module uses the local filesystem as its document repository. This storage module is not considered secure and is generally only used for testing purposes.

Cached Storage

The cached storage module maintains a memory based cache in front of another storage module. Only named citations and signed contracts are cached since they are immutable. If a citation or document is not in the memory cache, the backend storage module is called to retrieve it and the result is cached. When the cache is full, the oldest entry in the cache is deleted before another entry is added.

S3 Storage

The S3 storage module uses the Amazon Web Services (AWS) Simple Storage Service (S3) as its storage mechanism. Named citations, documents and messages are stored in their own S3 buckets that enforce the access controls required by each type of document.

Validated Storage

The validated storage module checks to make sure all notarized documents are valid before forwarding on requests to the backend storage mechanism. When documents are retrieved, they are validated using the cited public certificate before being returned to the client. When documents are being stored, they are validated using the cited public certicate before being stored in the backend storage module.

Remote Storage

The remote storage module delegates the document repository capabilities to a remote document repository service that exposes an HTTPS web service interface.