Skip to content

Latest commit

 

History

History
69 lines (48 loc) · 26.2 KB

storage_compatibility_matrix.md

File metadata and controls

69 lines (48 loc) · 26.2 KB

Storage Compatibility Matrix

Aries-Framework-Go (this repo) and Aries-Framework-Go-Ext have a number of storage providers that implement the Aries storage interfaces.

This document lists the storage provider implementations we have and what functionality is currently implemented/supported.

The functions defined in the interfaces can be categorized as either "core" or "extended" functionality.

✓ = Implemented

X = Not implemented (but could be)

Unsupported = Not implemented (and not currently supported by the underlying database/technology/spec)

Core Functionality

These are the functions that the Aries agent currently uses. For a storage provider implementation to work in an Aries agent, it needs to support all the functions below.

MongoDB CouchDB EDV MySQL IndexedDB LevelDB In-Memory PostgreSQL
Provider - OpenStore
Provider - SetStoreConfig ✓* ✓** ✓*** ✓****
Provider - Close
Store - Put ✓** ✓*** ✓****
Store - Get
Store - Query Using 1 Tag ✓** ✓*** X*****
Store - Delete
Store - Close
Iterator - Next
Iterator - Key
Iterator - Value
Iterator - Close

* This method is more or less a no-op since EDV doesn't need this. Store config is just stored in-memory for now - see here for more info. Since the Aries agent doesn't currently use GetStoreConfig, this isn't an issue for Aries usages.

** Current tagging/querying mechanism is unoptimized and not recommended for production use as-is. See here for more info.

*** Current tagging/querying mechanism is unoptimized and not recommended for production use as-is. See here for more info.

**** There are some limitations with the current implementation of these methods. See here for more info.

***** Tag name only queries have been implemented, but not tag name + value queries. Both types of queries are used by an Aries agent. See here for more info.

Extended Functionality

The Aries agent does not currently make use of these functions, but they may be useful in building your own application.

MongoDB CouchDB EDV MySQL IndexedDB LevelDB In-Memory PostgreSQL
Provider - GetStoreConfig ✓* ✓** ✓*** ✓*** X
Provider - GetOpenStores X X X
Store - GetTags X
Store - GetBulk X X ✓**** X
Store - Query Using Range Operators (<,<=,>,=>) X Unsupported X X X X X
Store - Query Using Multiple Tags X X X X X X X
Store - Query Using Custom Pagination Unsupported X X X X X
Store - Query Using Custom Sorting Unsupported X X X X X
Store - Batch ✓**** X
Store - Flush
Iterator - Tags X
Iterator - TotalItems X

* Only returns store config if it's still in memory. Can't be used to report whether the underlying database exists.

** Doesn't currently check the underlying data for existence (looks at in-memory stores instead). See here for more info.

*** Doesn't currently check the underlying data for existence (looks at in-memory stores instead). See here for more info.

**** Unoptimized implementation. See here for more info.