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)
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.
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.