This page describes the architecture of MyTARDIS.
MyTARDIS is built on the Django web framework, which itself is built on Python, thus MyTARDIS follows the architectural model of Django.
The diagram below shows the major components of a typical MyTARDIS installation.
MyTARDIS follows the standard Django architecture, as shown below [JCDA]:
The major functional modules in MyTARDIS are:
Information on the individual modules is available from the Module Index.
[JCDA] | Thanks to Jeff Croft for the diagram. |
At the component / module level, performance and Scalability within MyTARDIS is achieved by:
The datafileparameter table is expected to be the single largest table by an order of magnitude, in the hundreds of millions of records (at the Australian Synchrotron).
For Postgres, this will probably be addressed by table partioning. In this case using a date field to partition is often recommended. Dates may be introduced as part of the support for anotations, raw data, versioned data and derived data.
An introduction to how Tardis models Experiments, Datasets and Datafiles is provided in the Overview.
Django provides an Object-Relational-Model that maps Django Models to the underlying relational database. The models as defined in Django are:
An additional model diagram including the base Django models is also available: MyTARDIS & Django Models.
The underlying SQL schema generated by Django is not normally referenced directly as it is managed through Django’s ORM, however a version of the schema is available: MyTARDIS & Django SQL.
Access to data catalogued by MyTARDIS may be either public, i.e. anonymous access allowed, or private, requiring authentication. The Authentication Framework is documented in auth – Auth Framework.
MyTARDIS includes an extensible authorisation engine, documented in auth – Auth Framework.
The Django framework provides security against:
Unless the application has a very rich business model (which MyTARDIS does not), a Class diagram doesn’t convey much information in Django applications (it ends up being a flat list of classes). To understand the context in which the MyTARDIS classes are created, please refer to the Django documentation, http://docs.djangoproject.com/ on the responsibilities of models, views, managers and templates.