InteractSimple - Schema Design
InteractSimple aims to simplify interaction within enterprise by indexing all chat into a tagged, searchable chat history database. In our previous post InteractSimple – Initial Thoughts, we have put across our initial ideas while in another post SiteInteract & InteractSimple – Technical Architecture, we described the technical architecture, and in this post we will present the schema design which briefly shows what data points are being captured and how data is being organized.
As can be seen from the mindmap above, InteractSimple schema contains entity (with whom or about what the interaction is being done), session (represents the rolling window session with standard expiry of 30 min), account (represents an organization which encircles set of users, groups & rooms) and interaction (the actual interaction between people either directly, in group or room). Session represents the actual user session from any of web or mobile clients, so the fields captured are that. Fields captured for account are pretty straight forward like identification (id, vcard, auth), people (users, groups, rooms) and personalization (features, preferences, settings).
Entity and interaction sections require further expansion and explanation to see what fields are being captured and their purpose. Below mindmap provides details on entities like user, group, room while topic, place and app are left to be explored in future.
Fields captured for entities are kept minimal right now with identification (id, auth, vcard, avatar for people and url for content), properties (geoloc, privacy_list, roster, caps/capabilities for user, members for group & room), personalization (features, preferences, settings) & authorization (accounts).
Last section presents details on the fields captured for interaction either direct, group or room. As interaction is the actual message sent the fields for different types messaging is pretty similar.
The fields captured can be described as addressing (from, to, group, room), timing (timestamp), type (type of message), content (content, format, lang), entities (mentions of entities), threads (conversational threads), authorization (accounts). Accounts field captured at various places helps in defining and implementing the authorization for accessing data in any part of application. This is first cut for developing the beta version, changes are bound to happen as more functionality gets implemented and clarity comes in from feedback.