Row Based vs Column Based Drivers

Some data sources have the option of performing either row based or column based lookups.

Row Based Drivers

A row-based driver is designed for the situation where all of your information is stored in a single table, and one column contains an identifier for that information. Each row will have a minimum of….

Column NamePurpose
Lookup ColumnThe name of this measurement channel
ValueThe value of that measurement
Timestamp (optional)The date and time of the measurement

So for example, in the following example…

TimestampNameValue
12:42Temperature 125.4
12.42Temperature 213.2
12.33Temperature 124.4

In this case, the lookup value you assign to each data-binding in ARDI will be the value contained in that 'lookup' column.

The lookup is 'Name'. So points in ARDI would simply be connected to 'Temperature 1' and 'Temperature 2'.

Column-Based Drivers

In column-based drivers, the data source has several columns per row, and the lookup from ARDI is actually the column name.

They usually have a minimum of….

Column NamePurpose
TimestampThe date and time of the measurement
Value AThe value of channel A
Value BThe value of channel B
Value CThe value of channel C
TimestampTMP1TMP2
12:4225.413.2
12.3324.411.5

In this case, the ARDI lookup is the name of the channel. IE. “TMP1” or “TMP2”.

Keyed Column-Based Drivers

Some select drivers (for instance, our Oracle driver) can support a key on a column-based driver. In fact, they may even support multiple keys.

These work like a hybrid between the two - they are given two lookup values for each data-binding - the lookup and the column.

As an example, take the following…

TimestampVEHICLEENGINETMPOILTMP
12:42125.413.2
12:42225.413.2
12.33124.411.5
12:33225.413.2

In this case, the lookup for engine temperature on vehicle 1 would be….

Lookup1
ColumnENGINETMP

History lookups on these drivers can be quite expensive

Multi-Keyed Column-Based Drivers

These are the same as keyed column based drivers, but with the addition of multiple keys.

As an example, take the following…

TimestampVEHICLEOWNERENGINETMPOILTMP
12:421125.413.2
12:422125.413.2
12.331124.411.5
12:332225.413.2

In this case, the lookup for engine temperature on vehicle 2 with owner 1 would be…

Lookup2,1
ColumnENGINETMP

This would fetch the second record as the active, live data.

History lookups on these drivers can be extremely expensive