All versions of this manual
X
 

User-data store

Linkurious Enterprise uses an SQL database to store user-data. The database contains:

  • visualizations
  • users
  • groups
  • access-rights

This database doesn't store the business data stored in the graph database (except for the widget) which makes it a lightweight database that doesn't need a lot of resources.

By default, the user-data store is a SQLite file-based database. This makes Linkurious Enterprise easy to deploy.

For deployment at scale (more than a couple users), we recommend switching to one of the supported server-based databases:

To see the exact list of supported vendors and versions, please review our compatibility matrix.

Database server requirements

Typical database server requirements for a moderate usage of the system with less than 100 users are:

  • 5GB of RAM
  • 2 CPU cores
  • 3GB of database initial size (no growth foreseen)

You may need to allocate more resources in the following scenarios:

  • Intense usage of widgets
  • Number of users higher than 100
  • High number of alert models

If you need to get help from professionals, contact us and we will be happy to answer your questions.

Getting started

In order to get started with Linkurious Enterprise, there are few requirements for user-data store to function properly.

  • The database should be empty. Linkurious Enterprise will handle the creation and maintenance of the database structures.
  • For Linkurious Enterprise to perform database operations, a local SQL account with sufficient privileges must be provided to allow running any read / write / DDL query.

In order to create a new linkurious database and an associated user, refer to your team of database experts to comply with possible internal policies. Below is an example of typical queries you can use (replace SQL_USER_NAME, SQL_PASSWORD, and LKE_HOST by actual values).

On MySQL and MariaDB:

CREATE USER 'SQL_USER_NAME'@'LKE_HOST' IDENTIFIED BY 'SQL_PASSWORD';
CREATE DATABASE linkurious;
GRANT ALL PRIVILEGES ON linkurious.* TO 'SQL_USER_NAME'@'LKE_HOST';

Please note that custom sql_mode in MariaDB and MySQL is not supported. Linkurious Enterprise only supports the default value for sql_mode.

On Microsoft SQL Server:

CREATE DATABASE linkurious;
CREATE LOGIN SQL_USER_NAME WITH PASSWORD = 'SQL_PASSWORD', DEFAULT_DATABASE = linkurious;
USE linkurious;
CREATE USER SQL_USER_NAME FOR LOGIN SQL_USER_NAME;
EXEC sp_addrolemember 'db_owner', SQL_USER_NAME;

Database configuration

Linkurious Enterprise provides many options which can be used to configure user-data store connection. Below, you can find the configuration documentation and configuration examples for popular DBMS solutions.

In the Linkurious Enterprise configuration file, it is possible to configure the database connection under db key.

  • name (default: "linkurious"): Database name for Linkurious Enterprise to use.
  • username (optional): Username for the database user
  • password (optional): Password for the database user
  • transactionTimeout(optional, default:60000, only for "mssql"): The maximum time in milliseconds before a database transaction timeout
  • options: Child object that contains connection options
    • dialect (default: "sqlite"): The database dialect to be used. Supports: "sqlite", "mysql", "mariadb", "mssql"
    • host: Host address of the database
    • port: Port address of the database
    • storage (only for "sqlite"): Storage location for the database file
    • dialectOptions (optional): Child object that contains dialect specific additional options
      • ssl (optional): Child object that contains dialect specific options for ssl
      • encrypt (default: false, boolean): Whether to enable encryption (useful for cloud instances with encryption enabled by default)
      • multiSubnetFailover (default: false, boolean): Whether the driver attempts parallel connections to the failover IP addresses during a multi-subnet failover for higher availability.

Configure with SQLite

SQLite if the default user-data store of Linkurious Enterprise.

"db": {
    "name": "linkurious",
    "options": {
      "dialect": "sqlite",
      "storage": "server/database.sqlite"
    }
}

Configure with MySQL

"db": {
    "name": "linkurious",
    "username": "MYSQL_USER_NAME",
    "password": "MYSQL_PASSWORD",
    "options": {
      "dialect": "mysql",
      "host": "MYSQL_HOST",
      "port": 3306
    }
}

Configure with MySQL and enforce ssl

"db": {
    "name": "linkurious",
    "username": "MYSQL_USER_NAME",
    "password": "MYSQL_PASSWORD",
    "options": {
      "dialect": "mysql",
      "dialectOptions": {
        "ssl": {
          "require": true
        }
      }
      "host": "MYSQL_HOST",
      "port": 3306
    }
}

See advanced dialect options.

Configure with Microsoft SQL Server

"db": {
    "name": "linkurious",
    "username": "MSSQL_USER_NAME",
    "password": "MSSQL_PASSWORD",
    "options": {
      "dialect": "mssql",
      "host": "MSSQL_HOST",
      "port": 1433
    }
}

Configure with MariaDB

"db": {
    "name": "linkurious",
    "username": "MARIADB_USER_NAME",
    "password": "MARIADB_PASSWORD",
    "options": {
      "dialect": "mariadb",
      "host": "MARIADB_HOST",
      "port": 3306
    }
}