Programming project

From cosmopool meta
Jump to navigation Jump to search


Architecture / Specification

Overview

File:Architecture2.png

Essentially we have a 3-tier architecture:

  1. A storage backend consisting of one database (beginning with the single database backend project), or a network of of appropriately synchronized distributed database nodes (later).
  2. Server nodes access the data on storage nodes through a fixed interface (server-storage interface). We envisage having both one server node and one storage node on the same machine, since this might be necessary for performance reasons.
  3. Clients access the server nodes through a fixed interface (client-server interface). A client may consist of a webserver being accessed by a webbrowser, or a commandline client, or other clients. (The webserver may also allow for providing public resources, such as html tables to be included into websites.)
  4. Users can choose their preferred interface.

data storage

How are data stored?


object logics

The (web)server retrieves data via the server-storage interface from the storage and provides an interface (client-server interface) for clients, which request or send data.

The tasks of the server include:

  • communication with clients via client-server interface
  • access verification (identification, authentication, access rights)
  • k-object editing and input validation
  • group logics, spatial and temporal logics
  • k-class hierarchy logics
  • topic hierarchy logics
  • communication with storage layer via server-storage interface
  • data retrieval with 'intelligent' caching (e.g. of query results)
  • handling of storage data change events for data in use by a client
  • inter-server trust network
  • user messaging and other communication functions
  • object clipboard functions
  • user preferences management

client access

For now we envisage two clients:

  • a minimalist command line client with text console
  • a full featured AJAX webapplication client with graphical interface having these featues
    • search and edit k-classes, k-instances and k-relations
    • user customizable
    • 3 different complexity levels (simple, medium, advanced)
    • virtual connection through periodic polling

Other clients (in particular for mobile devices) are possible later.