This is achieved by creating a custom Entity Controller class, extending either the
DrupalDefaultEntityController or creating a
Then create a field storage engine, using the Field Storage API and attach the correct fields where required.
I used the MongoDB
mongodb_field_storage module for reference.
This all works as expected, and I do not use the Drupal database to store any Entity Metadata or field data. Only the
field_config table is used.
The only hiccup I have is that the Drupal 7 'Per Field' storage engine actually needs to be defined in the variable table setting the
field_storage_default to your custom storage engine. I have yet to find a way to hook into this on a per field basis without patching core. See here for more details.