Object/Relational Persistence Issues
The Goal:
Be able to program a system with multiple related objects purely from
an object oriented perspective, yet have these objects magically
persisted (and un-persisted).
Object Oriented Purity Issues:
General:
- Update When (Fine/Course Grained)
- Transactions (Begin, Commit, Rollback, and of what)
- Multi-Threading and Locking, Optimistic or Pessimistic (and when initiated)
Object References:
- Owned vs regular/simple (deleting?)
- Hard vs Soft (deferred instantiation)
- Collections (Views and Updates)
- Un-Persisting Initial Object Graph Reference(s)
- Persisted Object (Un-Persisting) Instantiation Process
- Reconstitution of Non-Persisted (singleton?) Referenced Objects
Scalability:
- Memory Usage - Complete Object Graph (DB) in Memory at Once
- Select/View Process - Query Language or Walk the Complete Object Graph
- (lite vs full views and/or partial vs full result sets)
Conclusion:
Object Oriented Purity with Persistence of a Large Scale Object Graph is NOT a Reasonable Goal.
Fall-Back Goals:
- If we can not achieve object oriented purity, can we at least achieve no vendor lock in?
- Can we achieve no vendor lock in & retain the simple Unit Testing of simple objects?
Possible Directions:
- Open Source (no vendor lock in)
- Change Perspective, instead of OO think TO (Table Oriented)
This LiteSoft page (as power point 97 presentation) sponsored by Smith's Net Services.