Hi All,
I was away for some time and back to work only now. I divided the interface to four parts
1. Data Access (works on a Read Only Mode RAF)
2. Data Modifier (works on a Write Mode RAF)
3. Lock Engine (Uses one instance of Data Access)
4. Query Engine. (Uses another instance of Data Access)
And Put a fifth component to avoid circular locks and deadlocks and to recover from them.
5. Transaction Engine ( coordinates with Lock Engine)
Basic Data Access had a data type support and each data type had supported operations on them.
QueyEngine worked on a Composite
Pattern which could execute queries based on data type and operation.
Data Modifier was synchronized for Create, delete and update.
I designed my DataAccess as a Connection Oriented component and said a single instance of dataAccess means it is been used by a single client. Provided an unique id for each instance.
All the calls inside the Data Access, started a transaction and at the end committed it. Data Access was created using a Factory which builds the Data instance using the Functional Singleton controllers.
Well, to complete all of the above project took me 4 months to complete, and total file size was 700 KB.
I am very sure we don,t need all of the above. But I was happy when I could still extend Database with new columns and even UI needed no change for such extensions. Just for a pleasure.