• Skip to main content
  • Skip to header right navigation
  • Skip to site footer
CDP Studio logo

CDP Studio

The no-code and full-code software development tool for distributed control systems and HMI

  • Doc
  • Why CDP
    • Software developers
    • Automation engineers
    • Managers
  • Products
    • Automation Designer
    • HMI Designer
    • CDP Linux
  • Services
  • Use cases
  • Pricing
  • Try CDP

CDP Studio Documentation

  • Framework - Data Logging
  • Choosing a Datastore
  • 5.1.0

LogServer CDPCompactDatastore

Choosing a Datastore

Introduction

Datastore is the backend used by CDP Logger, usually some database. The default is CDPCompactDatastore. Currently, the following datastores are provided:

  • CDPCompactDatastore
  • TimescaleDB
  • InfluxDB
  • CSVDatastore

Note: Only one row should be added under CDP Logger Datastore table in Configure mode. Otherwise, the first one is used, others are ignored.

Comparison

AspectCDPCompactDatastoreTimescaleDBInfluxDBCSVDatastore
DescriptionDefault back-end for CDP Logger. Stores data into a local file using a custom format that provides high performance while minimizing disk usage.Time-series database built on PostgreSQL by TigerData. Supports standard SQL and the PostgreSQL ecosystem.Open source time series database. It is designed to handle high write and query loads. Depending on the version, it provides different query languages like InfluxQL, Flux and FlightSQL.Writes logged data into a local CSV (comma-separated values) file.
ConfigurationVery little configuration is needed and all of it can be done through CDP Studio.Requires setting up a PostgreSQL server with the TimescaleDB extension enabled. Database and schema creation, retention policies, and continuous aggregates can be set up through CDP Studio, but roles and permissions are configured through PostgreSQL/TimescaleDB tools.Requires setting up a remote InfluxDB server. Authentication, retention policies, continuous queries aggregating data, etc. must be configured separately through InfluxDB server interface.Very little configuration.
Reading data, including:
  • CDP Logger's Stale Data Detection feature
  • EventLogReader
  • ValueLogReader
Yes, full support.Yes, but it is recommended to limit the time range of queries because all queries work on full-resolution data in the current implementation. Use third-party tools to work with aggregated data.No, reading data support is not implemented. Use third-party tools to read the CSV file.
Integration with CDP Studio Analyze mode and Database Graph WidgetData format is optimized for plotting large amounts of data while keeping peak values visible.Basic integration for plotting data, performance may suffer when the database gets large. For huge data sets, it is recommended to set up continuous queries aggregating data and plot data using third-party tools (like Grafana).Plotting through CDP Studio is not supported. It is recommended to use third-party tools.
When to use
  • High-performance local logging without the complexity of setting up an external server (remote access to data is still possible through CDP Logger's built-in server or the dedicated LogServer component, see Viewing Data).
  • Data is mostly viewed through CDP Studio Analyze mode or Database Graph Widget.
  • Desire to use a SQL database with strong tooling and the PostgreSQL ecosystem.
  • Complex queries using standard SQL that can easily combine time-series data with relational data.
  • Compressed storage of time-series data and support for continuous aggregates.
  • Good integration with third-party tools.
  • Desire to publish logged data to cloud.
  • Simple queries of time-series data using InfluxQL, Flux or FlightSQL, depending on the InfluxDB version.
  • Complex retention policies and data aggregation.
  • Good integration with third-party tools.
CSV format is supported by many tools (including Microsoft Excel). This makes it easy to analyze the log with third-party tools.

Custom Datastore

Custom datastores can be implemented to CDPLogger.

  1. Create a library project.
  2. In Code mode, right click on your project and select Add Library.... In the wizard select CDP Library and add cdplogger as a dependency.
  3. In Code mode, right click on your project and select Add New.... In the wizard choose CDP Node Model and add it to your library.
  4. Make the added node inherit the abstract class CDPLogger::Datastore from <CDPLogger/Datastore.h>.
  5. In Configure mode, set the BaseModel property of your node to "CDPLogger.Datastore".
  6. Finally, list your node in [LibraryName]Builder.cpp by editing the CreateNewCDPNode method.
    CDP::StudioAPI::CDPNode *LibraryNameBuilder::CreateNewCDPNode(const std::string &type)
    {
        if (type == "LibraryName.MyDatastore")
            return new MyDatastore();
        return CDPBuilder::CreateNewCDPNode(type);
    }
  7. Build the library and test your datastore by adding it into a CDP Logger.

LogServer CDPCompactDatastore

The content of this document is confidential information not to be published without the consent of CDP Technologies AS.

CDP Technologies AS, www.cdpstudio.com

Get started with CDP Studio today

Let us help you take your great ideas and turn them into the products your customer will love.

Try CDP Studio for free
Why CDP Studio?

CDP Technologies AS
Hundsværgata 8,
P.O. Box 144
6001 Ålesund, Norway

Tel: +47 990 80 900
E-mail: info@cdptech.com

Company

About CDP

Contact us

Services

Partners

Blog

Developers

Get started

User manuals

Support

Document download

Release notes

My account

Follow CDP

  • LinkedIn
  • YouTube
  • GitHub

© Copyright 2026 CDP Technologies. Privacy and cookie policy.

Return to top