The Adapter Interface has two sets of methods, depending if you are persisting events, projections, or both. Not every database is suitable for storing both. DynamoDB, for example, is very well suited for storing events, but lacks the search capabilities which are useful when storing projections. ElasticSearch, on the other hand, is great for storing, and searching, arbitrary JSON objects (projections) but is not very well suited for a stack of events.