Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Hist orian Storage Locations (Reference) define the repositories where the FrameworX Historian module archives time-series data from historian tags and tables. 

Storage Locations provide:

  • Database connections for time-series data
  • External historian integration
  • Custom storage via script classes
  • Store and Forward buffering
  • Multi-database support

Each Storage Location serves as a destination for historian tables, enabling flexible data archiving strategies.

In this page:

Table of Contents
maxLevel2
minLevel2
indent10px
excludeSteps
stylenone

Overview

Storage Locations are designated databases that store historical data from Tags on their HistorianTables.

Each Storage Location is a repository for time-series data, enabling long-term trending and analysis.

When defining which Tags will store time-series data, those Historian Tags are grouped into Historian Tables, and each Historian Table is located in a Historian Archive Location defined in this interface. 

By Default, the system has an SQL database defined for Storage Location, Historian Tools and Script Classes that can be added to the solution, as alternate, or concurrent, storage locations. 

On this page:

Understanding Storage Locations

The Storage Location defines where Tag data will be archived establishing a clear linkage between tags and the storage infrastructure. When configuring the Storage Location, you can use:

  • SQL databases

  • Script Classes

  • Connections with Third-Party Historians, Like Canary and others. 

When you set the Storage Location, you specify the storage system for Tag data.

By default, the platform uses an SQLite database. You can change the default database or add additional databases if you need to use different ones.

Configuring the Default SQL Database

You have several options to choose from when defining the default database. If you would like to change the default database to be something other then the initial SQLite built-in database, follow the steps below:

  1. Access Historian / Storage Locations.

  2. Click on the Image Removed to open the Dialog.

  3. Define the default database configuration, defining Provider, Database, and Server IP.

  4. Test the database connection. Provide the necessary authentication information and click Test.

  5. Click OK to update the default database.

Available Databases

The following table provides a list of accepted providers and databases for configuring the default options.


Storage Types

SQL Databases (Default)

Built-in database support with TagHistorian object:

  • SQLite (default, embedded)
  • SQL Server
  • PostgreSQL
  • Oracle
  • MySQL
  • MS Access
  • Firebird

Tag Providers

External historian systems:

  • CanaryLabs - Industrial historian with compression
  • InfluxDB - Time-series database
  • GE Proficy - Enterprise historian

Script Classes

Custom storage implementations:

  • User-defined archiving logic
  • Custom data transformations
  • Third-party integrations
  • Cloud storage adapters

Default SQL Database Configuration

Modifying Default Database

  1. Navigate to Historian → Storage Locations
  2. Click Settings icon ??
  3. Configure:
    • Provider: Database type
    • Database: Specific database
    • Server IP: Connection endpoint
  4. Test connection with credentials
  5. Click OK

Supported Providers and Databases

ProviderSupported

Provider

Databases
SQLiteSQLite
OdbcFirebird
, MSAccess2003

MSExcel2003

MySql

, MSExcel2003, MySQL, ODBC_DSN
, ODBC_FileDsn
, Oracle
, SQLServer
, SQLServer_WA
OleDbCSVFile

MSAccess2003

MSAccess2007

MSExcel2003

MSExcel2007

Oracle

SQLServer

, MSAccess2003/2007, MSExcel2003/2007, Oracle, SQLServer, SQLServer_WA
OracleClientOracle
SqlClientSQLServer
, SQLServer_WA
PostgreSQLPostgreSQL
Add a new

Adding Storage

Location

Locations

Configuration Steps

  1. Go to Historian → Storage Locations
  2. Click Plus icon ?
  3. Configure properties (see table below)
  4. Click OK

Storage Location Properties

PropertyDescriptionRequired
NameUnique identifierYes
DescriptionDocumentation textNo
StoreAndForwardLocal buffering on connection failureNo
Storage SystemTag Provider or Script ClassYes
ObjectSelected provider/class instanceYes
ProtocolCommunication protocol (Tag Provider only)Conditional
Station EditorConnection string configurationConditional

Store and Forward

Operation

When enabled, provides data integrity during connection failures:

  1. Connection Lost - Data buffered locally
  2. Local Storage - SQLite database cache
  3. Reconnection - Automatic retry
  4. Data Transfer - Batch synchronization
  5. Cleanup - Buffer cleared after success

Configuration

StoreAndForward: True
Buffer Location: Local SQLite
Retry Interval: 5 seconds
Batch Size: 250 rows

Best Practices

  • Always enable for critical data
  • Monitor buffer growth
  • Plan disk space for buffering
  • Test failover scenarios

Tag Provider Configuration

CanaryLabs

Industrial historian with high compression:

Protocol: CanaryLabs
Connection: Server=hostname;Port=12345
Features: Compression, Aggregation, Web API

InfluxDB

Open-source time-series database:

Protocol: InfluxDB
Connection: http://server:8086;Database=mydb
Features: High throughput, SQL-like queries

GE Proficy

Enterprise historian platform:

Protocol: GEProficy
Connection: Server=hostname;Username=user
Features: Enterprise integration, Analytics

Script Class Storage

Implementation Requirements

Script class must implement:

csharp

public class CustomStorage
{
    public void StoreData(string table, DateTime timestamp, 
                         Dictionary<string, object> values)
    {
        // Custom storage logic
    }
    
    public DataTable RetrieveData(string table, 
                                  DateTime start, DateTime end)
    {
        // Custom retrieval logic
    }
}

Use Cases

  • Cloud storage (AWS, Azure)
  • Custom file formats
  • NoSQL databases
  • Message queues
  • Data transformation

Connection Strings

SQL Server

Server=hostname\instance;Database=HistorianDB;
User Id=sa;Password=pwd;

PostgreSQL

Host=localhost;Database=historian;
Username=user;Password=pass;Port=5432;

Oracle

Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)
(HOST=server)(PORT=1521))(CONNECT_DATA=
(SERVICE_NAME=orcl)));User Id=hr;Password=pwd;

MySQL

Server=localhost;Database=historian;
Uid=root;Pwd=password;Port=3306;

Performance Considerations

Database Selection

DatabaseBest ForLimitations
SQLiteSmall systems10GB limit, single writer
SQL ServerEnterpriseLicense cost
PostgreSQLOpen sourceComplex setup
InfluxDBTime-seriesSpecialized queries
CanaryLabsCompressionProprietary

Optimization Tips

  1. Partition large databases - By time or tag groups
  2. Index appropriately - Timestamp always indexed
  3. Regular maintenance - Archive old data
  4. Monitor performance - Query execution times
  5. Size buffers correctly - Store and Forward capacity

Multiple Storage Locations

Concurrent Storage

Configure multiple locations for:

  • Redundancy
  • Performance distribution
  • Specialized storage
  • Migration scenarios

Assignment Strategy

High-frequency data → Local SQLite
Production records → SQL Server
Compliance data → CanaryLabs
Temporary data → InfluxDB

Troubleshooting

Connection failures:

  • Verify connection string
  • Check network connectivity
  • Confirm credentials
  • Test firewall rules

Store and Forward issues:

  • Check disk space
  • Monitor buffer database
  • Verify retry logic
  • Review error logs

Performance problems:

  • Analyze query patterns
  • Check index usage
  • Review table sizes
  • Monitor network latency

Data not storing:

  • Confirm table assignment
  • Check storage location status
  • Verify permissions
  • Review trigger configuration

Best Practices

  •  Test connections - Before production deployment
  •  Enable Store and Forward - For critical data
  •  Document configuration - Connection strings and settings
  •  Plan capacity - Size databases appropriately
  •  Monitor health - Track connection status
  •  Backup regularly - Especially configuration
  •  Use appropriate storage - Match technology to requirements
  •  Secure connections - Encrypt sensitive data



In this section...

Page Tree
root@parent
spaces93DRAF

Solutions can store data using an external Historian package, or support SQL and multiple Historians concurrently, according to your requirements.

Follow the steps below to add and configure new storage locations.

  1. Access Historian / Storage Locations.

  2. Click on the Image Removed.

  3. On the dialog, configure the new database. You find the description of each option available in the next section of this documentation page.

  4. Click Ok.

Storage Location Properties

The table below describes the configuration options available when adding a new Storage Location.

Property

Description

Name

A unique name to identify the new Storage Location.

Description

Optional description to provide more context or information.

StoreAndForward

If you check this option, the platform will store data locally in case of connection failure with the external database. The data is transferred when the connection is established.

Storage System

Types available to configure the Storage Location. Currently, two options are available:

Tag Provider: Enables you to use external solutions to archive Tag data.

Script Class: For this option, you need to create a script class or point to existing classes to define how the data will be handled and stored. For help creating classes, see the Scripts (Tasks and Classes) documentation.

Object

The tag provider or script class to use as a storage location. You may also create a new tag provider or script class from this option.

Protocol (Only available if using Tag Provider)

Defines the protocol used by the External Tag Provider. Currently, you can use the following options:

Station Editor (Only available if using Tag Provider)

Configure the connection string to the selected provider and run a test to ensure the setup is correct. Visit the links above to find out how to configure each tag provider's connection string.

In this section:

Page Tree
rootV10:@parent
spacesV10