Databases

Overview

io.Manager supports connecting to MongoDB, PostgreSQL and Microsoft SQL Server databases.

The minimum required versions of the supported databases are as follows:

  • Any supported version of MongoDB - (6, 7, 8);
  • Any supported version of PostgreSQL - (13, 14, 15, 16, 17);
  • Any supported version of Microsoft SQL Server - (2016 SP3, 2017, 2019, 2022);

ℹ️ For complete examples of connecting io.Manager to the supported databases, see the io.Manager Examples repository on GitHub.

Database Size Management

io.Manager has a built in data purging (cleanup) functionality to help keep the database size proportional to the number of users and features used.

By default, the data purging operation is performed at server startup and at 24-hour intervals after that. To prevent unnecessary database operations, the periodic cleanup is synchronized between multiple server nodes connected to the same database.

Purging is supported for the following pieces of data:

  • Inactive sessions and machine information
  • Commands and command results
  • Feedback reports
  • Crash reports
  • Audit logs

Data purging is enabled by default and can be configured via the configuration object for initializing the io.Manager Server, or via environment variables, depending on your deployment approach.

Environment Variables

To configure the data purging process, register the following environment variables with the proper values:

Environment Variable Description
API_PURGE_AT_STARTUP_ENABLED If true (default), the data purging operation will be performed on startup of the io.Manager Server.
API_PURGE_AUDIT_LOGS_AFTER_DAYS Number of days after which an audit log becomes eligible for purging. Set to -1 to disable purging of audit logs. Defaults to 90.
API_PURGE_COMMANDS_AFTER_DAYS Number of days after which an executed command and the respective command result become eligible for purging. Set to -1 to disable purging of commands and command results. Defaults to 90. Available since io.Manager Server 2.0.0.
API_PURGE_CRASH_REPORTS_AFTER_DAYS Number of days after which a crash report becomes eligible for purging. Set to -1 to disable purging of crash reports. Defaults to 90.
API_PURGE_ENABLED If true (default), will enable data purging.
API_PURGE_FEEDBACK_REPORTS_AFTER_DAYS Number of days after which a feedback report becomes eligible for purging. Set to -1 to disable purging of feedback reports. Defaults to 90.
API_PURGE_INACTIVE_SESSIONS_AFTER_DAYS Number of days of inactivity after which a session becomes eligible for purging. All machine entries that aren't referenced by any sessions will also be purged. Set to -1 to disable purging of sessions and machine information. Defaults to 90.
API_PURGE_SCHEDULED_TASK_INTERVAL Interval in milliseconds at which to run the periodic data purging operation. Defaults to 86400000 (1 day). Available since io.Manager Server 2.0.0.

The following example demonstrates how to disable purging on startup of the io.Manager Server and how to configure the purging intervals for some of the supported data entities:

# Disabling purging on startup of the io.Manager Server.
API_PURGE_AT_STARTUP_ENABLED=false

# Configuring the inactivity period for sessions
# after which a session becomes eligible for purging.
API_PURGE_INACTIVE_SESSIONS_AFTER_DAYS=60

# Disabling purging for feedback reports.
API_PURGE_FEEDBACK_REPORTS_AFTER_DAYS=-1

Configuration Object

To configure the data purging operation, use the purge top-level key of the optional Config object for initializing the io.Manager Server.

The following example demonstrates how to disable purging on startup of the io.Manager Server and how to configure the purging intervals for some of the supported data entities:

import { start } from "@interopio/manager";

const config = {
    // Purging configuration.
    purge: {
        // Disabling purging on startup of the io.Manager Server.
        purgeAtStartupEnabled: false,
        // Configuring the inactivity period for sessions
        // after which a session becomes eligible for purging.
        purgeInactiveSessionsAfterDays: 60,
        // Disabling purging for feedback reports.
        purgeFeedbackReportsAfterDays: -1
    }
};

const server = await start(config);

The purge object has the following properties:

Property Type Description
enabled boolean If true (default), will enable data purging.
purgeAtStartupEnabled boolean If true (default), the data purging operation will be performed on startup of the io.Manager Server.
purgeAuditLogsAfterDays number Number of days after which an audit log becomes eligible for purging. Set to -1 to disable purging of audit logs. Defaults to 90.
purgeCommandsAfterDays number Number of days after which an executed command and the respective command result become eligible for purging. Set to -1 to disable purging of commands and command results. Defaults to 90. Available since io.Manager Server 2.0.0.
purgeCrashesAfterDays number Number of days after which a crash report becomes eligible for purging. Set to -1 to disable purging of crash reports. Defaults to 90.
purgeFeedbackReportsAfterDays number Number of days after which a feedback report becomes eligible for purging. Set to -1 to disable purging of feedback reports. Defaults to 90.
purgeInactiveSessionsAfterDays number Number of days of inactivity after which a session becomes eligible for purging. All machine entries that aren't referenced by any sessions will also be purged. Set to -1 to disable purging of sessions and machine information. Defaults to 90.
scheduledTaskInterval number Interval in milliseconds at which to run the periodic data purging operation. Defaults to 86400000 (1 day). Available since io.Manager Server 2.0.0.