Configuration Management Guide
This guide explains how to use MatrixOne’s comprehensive configuration management system to manage connection parameters, environment variables, and connection hooks.
Overview
MatrixOne provides a flexible configuration management system that allows you to:
Set default connection parameters
Override parameters via environment variables
Configure connection hooks for automatic feature enablement
Use different configuration formats for different use cases
Debug and validate configurations
Basic Usage
Import the configuration functions:
from matrixone.config import get_connection_kwargs, print_config
Get default configuration:
# Get complete configuration
config = get_connection_kwargs()
# Print current configuration
print_config()
Environment Variables
You can override any configuration parameter using environment variables:
export MATRIXONE_HOST=localhost
export MATRIXONE_PORT=6001
export MATRIXONE_USER=admin
export MATRIXONE_PASSWORD=mypassword
export MATRIXONE_DATABASE=mydb
export MATRIXONE_ON_CONNECT=enable_all,enable_vector
Supported Environment Variables:
MATRIXONE_HOST: Database host (default: 127.0.0.1)MATRIXONE_PORT: Database port (default: 6001)MATRIXONE_USER: Database user (default: root)MATRIXONE_PASSWORD: Database password (default: 111)MATRIXONE_DATABASE: Database name (default: test)MATRIXONE_CHARSET: Character set (default: utf8mb4)MATRIXONE_CONNECT_TIMEOUT: Connection timeout in seconds (default: 30)MATRIXONE_AUTOCOMMIT: Enable autocommit (default: True)MATRIXONE_ON_CONNECT: Connection hooks (comma-separated list)
Parameter Overrides
Override specific parameters in code:
from matrixone.config import get_connection_kwargs
from matrixone.connection_hooks import ConnectionAction
# Override specific parameters
config = get_connection_kwargs(
host="production-server",
port=6002,
on_connect=[ConnectionAction.ENABLE_FULLTEXT]
)
Configuration Methods
MatrixOne provides three methods for getting configuration:
get_config() - Returns complete configuration dictionary
get_connection_params() - Returns core parameters as tuple
get_connection_kwargs() - Returns all parameters as dictionary
from matrixone.config import get_config, get_connection_params, get_connection_kwargs
# Get complete configuration
config = get_config()
# Get core parameters as tuple
host, port, user, password, database = get_connection_params()
# Get all parameters as dictionary (most commonly used)
kwargs = get_connection_kwargs()
Using with Client
Connect using configuration:
from matrixone import Client
from matrixone.config import get_connection_kwargs
# Get configuration
config = get_connection_kwargs()
# Filter to only supported parameters for Client.connect()
client = Client()
client.connect(
host=config['host'],
port=config['port'],
user=config['user'],
password=config['password'],
database=config['database'],
on_connect=config['on_connect']
)
Connection Hooks Configuration
Configure connection hooks for automatic feature enablement:
from matrixone.config import get_connection_kwargs
from matrixone.connection_hooks import ConnectionAction, create_connection_hook
# Using predefined actions
config = get_connection_kwargs(
on_connect=[ConnectionAction.ENABLE_ALL]
)
# Using string names
config = get_connection_kwargs(
on_connect=["enable_fulltext", "enable_vector"]
)
# Using custom callback
def my_callback(client):
print(f"Connected to {client._connection_params['host']}")
config = get_connection_kwargs(on_connect=my_callback)
# Using mixed actions and callbacks
config = get_connection_kwargs(
on_connect=create_connection_hook(
actions=[ConnectionAction.ENABLE_FULLTEXT],
custom_hook=my_callback
)
)
Environment Variable for Connection Hooks
Set connection hooks via environment variable:
# Enable all features
export MATRIXONE_ON_CONNECT=enable_all
# Enable specific features
export MATRIXONE_ON_CONNECT=enable_ivf,enable_hnsw,enable_fulltext
# Multiple actions
export MATRIXONE_ON_CONNECT=enable_vector,enable_fulltext
Configuration Debugging
Debug and validate configurations:
from matrixone.config import print_config
# Print current configuration
print_config()
# Print configuration with overrides
print_config(host="test-server", port=6003)
Output example:
MatrixOne Connection Configuration:
========================================
host: 127.0.0.1
port: 6001
user: root
password: ***
database: test
charset: utf8mb4
connect_timeout: 30
autocommit: True
on_connect: None
========================================
Advanced Usage
Class-based Configuration
Use the MatrixOneConfig class directly:
from matrixone.config import MatrixOneConfig
# Get configuration with environment overrides
config = MatrixOneConfig.get_config()
# Get connection parameters as tuple
host, port, user, password, database = MatrixOneConfig.get_connection_params()
# Get connection parameters as keyword arguments
kwargs = MatrixOneConfig.get_connection_kwargs()
# Print current configuration
MatrixOneConfig.print_config()
Configuration Precedence
Configuration parameters are applied in the following order:
Default configuration
Environment variable overrides
Direct parameter overrides
Later values override earlier ones.
Best Practices
Use Environment Variables for Deployment Set environment variables in your deployment environment rather than hardcoding values.
Use get_connection_kwargs() for Most Cases This method provides the most comprehensive configuration.
Filter Parameters for Client.connect() Only pass supported parameters to avoid errors.
Use Connection Hooks for Feature Enablement Configure connection hooks to automatically enable features like vector operations and fulltext search.
Debug with print_config() Use print_config() to verify your configuration before connecting.
Example Applications
Production Setup
from matrixone import Client
from matrixone.config import get_connection_kwargs
# Production configuration via environment variables
config = get_connection_kwargs()
# Filter to supported parameters
client = Client()
client.connect(
host=config['host'],
port=config['port'],
user=config['user'],
password=config['password'],
database=config['database'],
on_connect=config['on_connect']
)
Development Setup
from matrixone import Client
from matrixone.config import get_connection_kwargs
from matrixone.connection_hooks import ConnectionAction
# Development configuration with overrides
config = get_connection_kwargs(
host="localhost",
database="dev_db",
on_connect=[ConnectionAction.ENABLE_ALL]
)
client = Client()
client.connect(
host=config['host'],
port=config['port'],
user=config['user'],
password=config['password'],
database=config['database'],
on_connect=config['on_connect']
)
Testing Setup
from matrixone import Client
from matrixone.config import get_connection_kwargs
# Test configuration
config = get_connection_kwargs(
database="test_db",
on_connect=None # No hooks for testing
)
client = Client()
client.connect(
host=config['host'],
port=config['port'],
user=config['user'],
password=config['password'],
database=config['database']
)
API Reference
MatrixOne Configuration Management
This module provides comprehensive configuration management for MatrixOne connections, allowing users to override default connection parameters via environment variables, configuration files, or direct parameter overrides.
Features:
Default connection parameters with sensible defaults
Environment variable overrides for all connection parameters
Support for connection hooks via on_connect parameter
Multiple configuration retrieval methods (tuple, dict, kwargs)
Configuration debugging and validation
Usage Examples:
from matrixone.config import get_connection_kwargs, print_config
from matrixone.connection_hooks import ConnectionAction
from matrixone import Client
# Basic Configuration
config = get_connection_kwargs()
print_config()
# Parameter Overrides
config = get_connection_kwargs(
host="production-server",
port=6002,
on_connect=[ConnectionAction.ENABLE_FULLTEXT]
)
# Using with Client
client = Client()
client.connect(**config)
Environment Variables:
MATRIXONE_HOST: Database host (default: 127.0.0.1)
MATRIXONE_PORT: Database port (default: 6001)
MATRIXONE_USER: Database user (default: root)
MATRIXONE_PASSWORD: Database password (default: 111)
MATRIXONE_DATABASE: Database name (default: test)
MATRIXONE_CHARSET: Character set (default: utf8mb4)
MATRIXONE_CONNECT_TIMEOUT: Connection timeout in seconds (default: 30)
MATRIXONE_AUTOCOMMIT: Enable autocommit (default: True)
MATRIXONE_ON_CONNECT: Connection hooks (comma-separated list)
Connection Hooks:
The on_connect parameter supports:
Predefined actions: enable_all, enable_ivf, enable_hnsw, enable_fulltext, enable_vector
Custom callback functions
Mixed actions and callbacks
Example on_connect values: “enable_all”, “enable_ivf,enable_hnsw”, or custom function
- class matrixone.config.MatrixOneConfig[source]
Bases:
objectMatrixOne connection configuration manager.
This class provides centralized configuration management for MatrixOne connections, supporting environment variable overrides, parameter validation, and multiple output formats for different use cases.
Attributes:
DEFAULT_CONFIG (Dict[str, Any]): Default connection parameters ENV_MAPPING (Dict[str, str]): Mapping of parameters to environment variables
Example:
# Get configuration with environment overrides config = MatrixOneConfig.get_config() # Get connection parameters as tuple host, port, user, password, database = MatrixOneConfig.get_connection_params() # Get connection parameters as keyword arguments kwargs = MatrixOneConfig.get_connection_kwargs() # Print current configuration MatrixOneConfig.print_config()
- DEFAULT_CONFIG = {'autocommit': True, 'charset': 'utf8mb4', 'connect_timeout': 30, 'database': 'test', 'host': '127.0.0.1', 'on_connect': None, 'password': '111', 'port': 6001, 'user': 'root'}
- ENV_MAPPING = {'autocommit': 'MATRIXONE_AUTOCOMMIT', 'charset': 'MATRIXONE_CHARSET', 'connect_timeout': 'MATRIXONE_CONNECT_TIMEOUT', 'database': 'MATRIXONE_DATABASE', 'host': 'MATRIXONE_HOST', 'on_connect': 'MATRIXONE_ON_CONNECT', 'password': 'MATRIXONE_PASSWORD', 'port': 'MATRIXONE_PORT', 'user': 'MATRIXONE_USER'}
- classmethod get_config(**overrides) Dict[str, Any][source]
Get connection configuration with environment variable overrides.
This method retrieves the complete configuration dictionary, applying environment variable overrides and direct parameter overrides in order: 1. Default configuration 2. Environment variable overrides 3. Direct parameter overrides
Args:
**overrides: Additional parameter overrides. These take precedence over environment variables and defaults.
Returns:
Dict[str, Any]: Complete configuration dictionary containing: - host (str): Database host - port (int): Database port - user (str): Database user - password (str): Database password - database (str): Database name - charset (str): Character set - connect_timeout (int): Connection timeout in seconds - autocommit (bool): Enable autocommit - on_connect (Any): Connection hooks configuration
Example:
# Get default configuration config = MatrixOneConfig.get_config() # Override specific parameters config = MatrixOneConfig.get_config( host="production-server", port=6002, on_connect=[ConnectionAction.ENABLE_ALL] )
- classmethod get_connection_params(**overrides) tuple[source]
Get connection parameters as tuple for easy unpacking.
This method returns the core connection parameters as a tuple, which is useful for direct unpacking into function calls.
Args:
**overrides: Additional parameter overrides
Returns:
Tuple[str, int, str, str, str]: Tuple containing (host, port, user, password, database)
Example:
# Unpack parameters directly host, port, user, password, database = MatrixOneConfig.get_connection_params() # Use with legacy connection methods connection = create_connection(*MatrixOneConfig.get_connection_params())
- classmethod get_connection_kwargs(**overrides) Dict[str, Any][source]
Get connection parameters as keyword arguments.
This method returns all connection parameters as a dictionary, including extended parameters like charset, timeout, and connection hooks. This is the most comprehensive configuration method.
Args:
**overrides: Additional parameter overrides
Returns:
Dict[str, Any]: Complete connection parameters dictionary
Example:
from matrixone import Client from matrixone.connection_hooks import ConnectionAction # Get complete configuration and use directly with Client constructor client = Client(**MatrixOneConfig.get_connection_kwargs( on_connect=[ConnectionAction.ENABLE_ALL] )) # Or use with connect method config = MatrixOneConfig.get_connection_kwargs() client = Client() client.connect( host=config['host'], port=config['port'], user=config['user'], password=config['password'], database=config['database'], charset=config['charset'], on_connect=config['on_connect'] )
- classmethod print_config(**overrides)[source]
Print current configuration for debugging and validation.
This method displays the current configuration in a formatted way, showing all parameters with their current values. Sensitive information like passwords are masked for security.
Args:
**overrides: Additional parameter overrides to apply before printing
Example:
# Print default configuration MatrixOneConfig.print_config() # Print configuration with overrides MatrixOneConfig.print_config(host="production-server", port=6002)
Note: Prints formatted configuration to stdout.
- matrixone.config.get_config(**overrides) Dict[str, Any][source]
Get MatrixOne connection configuration.
Convenience function for MatrixOneConfig.get_config().
Args:
**overrides: Additional parameter overrides
Returns:
Dict[str, Any]: Complete configuration dictionary
Example:
from matrixone.config import get_config config = get_config(host="production-server")
- matrixone.config.get_connection_params(**overrides) tuple[source]
Get MatrixOne connection parameters as tuple.
Convenience function for MatrixOneConfig.get_connection_params().
Args:
**overrides: Additional parameter overrides
Returns:
Tuple[str, int, str, str, str]: Connection parameters tuple
Example:
from matrixone.config import get_connection_params host, port, user, password, database = get_connection_params()
- matrixone.config.get_connection_kwargs(**overrides) Dict[str, Any][source]
Get MatrixOne connection parameters as keyword arguments.
Convenience function for MatrixOneConfig.get_connection_kwargs(). This is the most commonly used function for getting complete configuration.
Args:
**overrides: Additional parameter overrides
Returns:
Dict[str, Any]: Complete connection parameters dictionary
Example:
from matrixone.config import get_connection_kwargs from matrixone.connection_hooks import ConnectionAction config = get_connection_kwargs(on_connect=[ConnectionAction.ENABLE_ALL])
- matrixone.config.get_client_kwargs(**overrides) Dict[str, Any][source]
Get connection parameters suitable for Client constructor.
This method returns connection parameters that can be directly passed to the Client() constructor, excluding parameters that are only used by the connect() method.
Args:
**overrides: Additional parameter overrides
Returns:
Dict[str, Any]: Client constructor parameters dictionary
Example:
from matrixone import Client from matrixone.config import get_client_kwargs # Create client with all configuration in one line client = Client(**get_client_kwargs()) # Or with overrides client = Client(**get_client_kwargs(host="production-server"))
- matrixone.config.print_config(**overrides)[source]
Print current MatrixOne configuration.
Convenience function for MatrixOneConfig.print_config().
Args:
**overrides: Additional parameter overrides to apply before printing
Example:
from matrixone.config import print_config print_config() # Print current configuration