I have looked at this one more time and my understanding is the following (am I right that DBStore is only for application-related data?):
Generally speaking, we need to have a data structure representing the whole application metadata (including registered events): either a separate class with getters/setters or a dictionary value like it happens now (btw, than all the possible key values should be present as string constants and documented) and we just need to return this structure by application id. 
After that the client will get all the necessary info from it. 

Frankly I'd prefer having a dedicated class as base::DictionaryValue seems to be quite heavy and a bit difficult to use, but so far we can live with DictionaryValue as it's already there. 
Further, we need a corresponding setter method "set Info by app id" and removal method "remove by app id"
That is it for DBStore interface (observers off course are also needed)! 
So, we have already this interface present in DBStore (well I have some issues about it but those are beyond your patch scope), so your task seems to be just to add events info to the cache and add a new key value constant .