What would be the correct way to design a DAO which implementation is first going to be targeting a MS SQL database with a STAR model, but yet, business requirements specify the application must be flexible enough that it would be able to be migrated to a NoSQL database in the future if required. Which type of NoSQL, no idea...
My confusion is that i cannot seem to figure out how could I build independent DAOs for the STAR Dimensions and Facts tables which could then be swapped for a completely different model that might not even be table oriented (riak/mongo/whatever).
Should I create DAOs which rather than abstracting the table, it abstracts the CRUD operations - for example create
IDaoInsert which can then be implemented as
MongoInsertDaoImpl, each with a completely different model logic etc.
Should I just create the typical DAO design whose interface would be something like
IDaoCustomerDimension, and the implementation
Hibernate/Etc are out of the scope of this question for the time being.