It is possible to think of an application that will make use of 2 different categories of
data stores: 1) Common 2) Private.
The "Common Data Store" will contain data that are likely to be used by all the users within their Private Storage Area.
The application would need to be capable of establishing a validated connection to a data store common to all the users of the system (GAE/GWT system).
The common data store would be a storage area accessible by any registered and validated user. These validated users could be the only users with the proper credentials to add entities (public entities) that would be only READ (never WRITTEN) by users accepted as Private Users, related to a Private Data Store, with "private data", visible only by those enrolled in such data stores.
The Common Data Store would contain stuff like:
- Entities
- Legal
- Fiscal Data (IRS, VAT number, etc.)
- Sector
- Natural
- Fiscal Data
- Professional Data
- Postal Addresses
- Relationships to Entities
- Home
- Office
- Warehouse
- Vacation
- Factory
- Store
- Email Addresses
- Products and Services
- Products
- Materials
- Services
- Other Stuff
The Private Data Store would contain stuff like:
- Accounting
- Invoicing
- Inventory
- Puchasing
The connection between the Common and the Private data containers would include short versions of the full data in the common container, with KEYS pointing at the Common Data Storage System that would have embedded in themselves the sort of retrieval that they would require.
I have completed and in working condition a design of this sort using FirebirdSQL and C++ Builder Windows applications. This has been out there in use by a few companies since year 2000. The central hypothesis has turned to be true: all common databases tend to contain replications of data already existing in the others. Why to allow such redundancy? Actually, the owner of the data should be responsible for letting their data visible by those who need it.
However, with the potential of the GAE/GWT development environment and run time powerful equipment, I suppose it is time to work on something of this sort.
The concept is impossible if the situation in the following statement prevails:
"An app can only access entities that it created itself. An app can't access data that belongs to other apps."
As it is right now, the schema of Common plus Private data stores IS impossible.