Overview
TheNMISNG::DB module provides database connectivity and operations for NMIS. It manages MongoDB connections, collections, and provides helper methods for database operations.
Version: 9.6.5
Location: lib/NMISNG/DB.pm
Database Connection
connect()
Establishes connection to MongoDB database.Configuration hash containing database credentials:
db_server: MongoDB server addressdb_name: Database namedb_username: Username for authenticationdb_password: Password for authentication
Collections
NMIS uses several MongoDB collections:| Collection | Purpose |
|---|---|
| nodes | Node configuration and properties |
| inventory | Interface and component inventory |
| events | Active and historical events |
| opstatus | Operational status cache |
| queue | Job queue for scheduled tasks |
| logs | Activity and audit logs |
Database Operations
get_db_handle()
Returns the MongoDB database handle.get_collection()
Returns a specific MongoDB collection.Collection name (e.g., ‘nodes’, ‘inventory’, ‘events’)
Index Management
ensure_indexes()
Creates or updates database indexes for optimal query performance.nodes: name (unique), cluster_id, groupinventory: node_uuid, concept, enabledevents: node_uuid, event, time, level
Database Maintenance
dbcleanup()
Removes old data based on retention policies.Age in days for data retention (default from config)
compact_database()
Compacts database files to reclaim disk space.Query Helpers
get_nodes_model()
Query nodes with filtering and pagination.get_inventory_model()
Query inventory items.get_events_model()
Query events with filtering.Connection Management
Authentication
NMIS uses SCRAM-SHA-256 authentication:Connection Pooling
MongoDB driver manages connection pooling automatically:- Default max pool size: 100
- Idle timeout: 10 minutes
- Connection timeout: 30 seconds
Error Handling
Performance Considerations
Indexes
Always query using indexed fields:nodes.nameinventory.node_uuidevents.time
Projections
Limit returned fields:Bulk Operations
Use bulk operations for multiple updates:Configuration
Database settings inConfig.nmis: