Basic concepts and terminology

Here we clarify our use of some terms which we use often.


A Connection is an object which contains:

-Complete information to connect to a given DBMS,
-Information about user preferences on the SQL created to work against the DBMS.

Once created, a connection is stored in a file and can be used anytime later. It makes connecting to a DBMS fast and reliable.

Data Source

The above term is sometimes used by other programs to denote a DBMS. However, within DataTime the term "Data Source" is used with a different and precise meaning.

A Data Source is an object which stores information needed to obtain a bag of records. Once created, the Data Source is stored in a file containing the following information:

- A Connection (as explained above)
- Information on how to extract some data from a DBMS (extraction rules). This include SQL and possibly source code for on-fly record transformation.
- Design information, to be able to open and re-design at any time the Data Source.

A Data Source can be parametric, so that the user can supply parameters which change the subset of records which will be extracted.
The file can be reopened and changed at will anytime. Note that a Data Source represents a bag of records, but it never contains the actual records. It only contains all the possible information to get and possibly transform them.


A report is a "container" document which will hold several types of objects, such as ReportGrids, Charts, Gauges, TextBoxes, etc. The most complex objects are the ReportGrids. Each ReportGrid is a representation of a Data Source made according to aggregation rules and layout specifications provided by the user, through the report designer. Each ReportGrid is fed up by a Data Source.

To "regenerate" a ReportGrid means: 1. connecting to the DBMS specified in the Data Source, 2. running the "extraction rules" (query, sql script, etc) provided by the user, 3. Applying possible programmatic on-fly transformations, 4. aggregating the data according to the dimensions and measures specified by the user, 5. to display the result according to the user layout. The report regeneration can be scheduled.

"Linked" Chart

Linked Chart (or linked "Multichart") is a chart which is "linked" to a ReportGrid, in the sense that, when the ReportGrid is regenerated, the chart is also automatically updated. We call our chart also "Multichart" because it stores information about a number of different charts. The user can switch anytime from a type to another and, for each chart type, all the information is being maintained.


A Gauge is a chart type which can contain multiple meter scale. Each scale can be linked to a cell of a ReportGrid and the scale indicator is automatically updated when the cell value change. A single Gauge can also be connected to several ReportGrids, because the connection is actually between scale and cell and it is irrelevant where the cell is. If due to drill/roll up a cell disappears, the scale or the gauge itself can be programmed to disappear. It is also called "Multigauge", for the same reason as the multichart.

Load Task

This is an "integration task". You have several Data Sources which can point to different DBMSes. A load task is formed by:

- A Target Connection (pointing to the DBMS where you wish to move the data),
- A set of Data Sources (data extracted from multiple DBMSs and "joined" into a table on the Target DBMS),
- Design Information to be able to re-design at any time the integration rules.

The Load Task can be "designed" pretty much like a Data Source. The difference is that, while in the Data Source the objects which are joined are local object of a DBMS, in the load task  the objects used in the designer are remote Data Sources (each one possibly pointing to a different DBMS). The load task will take care of uploading the necessary data to the target DBMS, mapping appropriately the field data type (possibly with your manual intervention), and making a join to create the target table. This kind of task is schedulable and, once tested, can run in unattended mode..

This might be useful, for instance, to create a "cube" used for reporting. Infact, you can create a Data Source pointing to the new cube and work on preaggregated data, for quicker responses.

This way, you can enjoy the power DataTime engine, which is essentially based on a ROLAP concept, on a hierarchical preaggregated Olap cube, thus enjoying high speed performances.