Representation of rich information structures and InfoGrid's Graph Database model
Information comes in many different shapes and forms.
Much "enterprise information" is held on server computers in relational databases, with their strict limits on the type of data they can store, but their flexibility in providing ad-hoc queries on the data they store.
Much "knowledge worker information" sits in files on PCs, or departmental document servers, in a myriad of special-purpose file formats that are largely unusable/unused by anything other than the application that created them.
"Social information" as well as rich media tends to be managed on public websites, often with staggering scale. Increasingly more of that information is managed using big hash tables like Google's BigTable and other !NoSQL technologies. Much is now becoming accessible through public APIs (e.g. via Atom/RSS).
When designing InfoGrid, we were looking for a unifying paradigm for information representation that could:
- Support as broad a set of information types as we could accomplish;
- Connect different information from different sources as the time of having all relevant information in the same system ended some time ago;
- Provide a uniform and small API to all of those that supports real-time events;
- Be usable as a foundation for many different types of applications;
- Not force one type of information organization (as hierarchical schemes like hierarchical databases and XML do)
- Be schema-driven, expressing the semantics of the application domain (we call schemas Models in InfoGrid)
Consequently, we decided to in favor of modeling information as a semantic network, using fine-grained objects that are instances of a conceptual-level semantic model. This kind of model is now commonly called an object graph model. When persisting such information, InfoGrid is thus a GraphDatabase.