I wrote a prototype acs-object-management package that includes a fair number of enhancements to the kernel object model. Much of this is moving functionality from the content repository's create_type and related functions into acs-kernel's base object functionality, while of course maintaining the CR's API unchanged.
Changes include:
1. enhancing the abstract datatype model to include information on the underlying db datatype, specifying checking expressions (i.e. the infamous oracle check on char column for 't'/'f'), etc.
2. enhancing acs_object create_type and create_attribute functions to allow for the creation of the underlying database table and columns automatically, using abstract datatypes.
3. create standard views for new types, similar to what's done now for CR types (but named differently, to avoid clashing with CR views, which are based on a join of an item type and revision type). Backwards compatibility is maintained, of course.
A few more details.
In all cases, backward compatibility has been maintained as this is, of course, crucial. The changes have been used in a couple of projects already, and seem to work well.
This has been implemented in PG. Moving it into acs-kernel (currently, the upgrade to the kernel datamodel happens in the acs-object-management package itself) will require implementing the same changes in oracle, which I will do.