memory
Memory Fabric
IOA Core's memory fabric provides enterprise-grade data persistence with multi-tier storage, encryption, and automated lifecycle management.
Architecture
The memory fabric implements a 4D tiering strategy:
Hot Storage (Immediate Access)
- Purpose: Active conversations and real-time data
- Backend: Redis/in-memory
- TTL: Configurable (default: 1 hour)
- Encryption: AES-GCM at rest
Warm Storage (Recent History)
- Purpose: Recent sessions and analytics
- Backend: SQLite/PostgreSQL
- Retention: 30 days
- Compression: LZ4
Cold Storage (Archive)
- Purpose: Historical data and compliance records
- Backend: S3-compatible object storage
- Retention: 7 years (configurable)
- Encryption: AES-256 with key rotation
Deep Archive (Regulatory)
- Purpose: Immutable regulatory records
- Backend: Glacier/Deep Archive
- Retention: Indefinite
- Immutability: Cryptographic guarantees
Quick Start
Basic Usage
from ioa_core.memory import MemoryFabric
# Initialize
memory = MemoryFabric()
# Store data
await memory.store(
key="conversation_123",
data={
"messages": [
{"role": "user", "content": "Hello"},
{"role": "assistant", "content": "Hi there!"}
],
"metadata": {
"model": "gpt-4",
"timestamp": "2025-01-28T10:00:00Z",
"user_id": "user_456"
}
},
tier="hot",
tags=["conversation", "active"]
)
# Retrieve data
data = await memory.retrieve("conversation_123")
# Search by tags
results = await memory.search(tags=["conversation"])
Advanced Configuration
from ioa_core.memory import MemoryFabric, MemoryConfig
config = MemoryConfig(
backends={
"hot": {
"type": "redis",
"host": "localhost",
"port": 6379,
"password": "your-password"
},
"warm": {
"type": "postgresql",
"connection_string": "postgresql://user:pass@localhost/ioa"
},
"cold": {
"type": "s3",
"bucket": "ioa-archive",
"region": "us-east-1"
}
},
encryption={
"algorithm": "AES-GCM",
"key_rotation_days": 90
},
lifecycle={
"hot_to_warm_hours": 24,
"warm_to_cold_days": 30,
"cold_to_archive_years": 7
}
)
memory = MemoryFabric(config)
Storage Backends
SQLite (Default)
Perfect for development and small deployments.
backend_config = {
"type": "sqlite",
"path": "./data/ioa_memory.db",
"max_connections": 10
}
PostgreSQL
Enterprise-grade relational storage.
backend_config = {
"type": "postgresql",
"host": "localhost",
"port": 5432,
"database": "ioa_memory",
"user": "ioa_user",
"password": "secure_password",
"ssl": True
}
S3-Compatible
Scalable object storage for archives.
backend_config = {
"type": "s3",
"endpoint": "https://s3.amazonaws.com",
"bucket": "ioa-memory-archive",
"region": "us-east-1",
"access_key": "your-key",
"secret_key": "your-secret"
}
Redis
High-performance caching layer.
backend_config = {
"type": "redis",
"host": "localhost",
"port": 6379,
"password": "your-password",
"db": 0,
"cluster": False
}
Encryption & Security
At-Rest Encryption
All data is encrypted using AES-GCM with:
- Unique encryption keys per data item
- Key derivation from master key
- HMAC for integrity verification
Key Management
- Master Key: Derived from environment variable or HSM
- Data Keys: Generated per item, encrypted with master key
- Rotation: Automatic key rotation every 90 days
- Backup: Encrypted key backups with recovery procedures
Access Control
# Role-based access control
await memory.grant_access(
resource="conversation_123",
user_id="analyst_789",
permissions=["read", "search"]
)
# Audit all access
access_log = await memory.get_access_log("conversation_123")
Lifecycle Management
Automatic Migration
Data automatically moves between tiers based on:
- Age: Time since last access
- Size: Data volume thresholds
- Priority: Business-critical vs. archival data
Custom Policies
# Define custom lifecycle rules
policies = {
"compliance_data": {
"retention_years": 7,
"immutable": True,
"tier_progression": ["hot", "warm", "cold", "archive"]
},
"user_sessions": {
"ttl_hours": 24,
"tier_progression": ["hot", "warm"]
}
}
await memory.set_lifecycle_policies(policies)
Monitoring & Observability
Metrics
# Get storage metrics
metrics = await memory.get_metrics()
print(f"Hot storage: {metrics.hot_usage_gb} GB")
print(f"Warm storage: {metrics.warm_usage_gb} GB")
print(f"Cold storage: {metrics.cold_usage_gb} GB")
print(f"Total operations: {metrics.total_operations}")
Health Checks
# Check backend health
health = await memory.health_check()
for backend, status in health.backends.items():
print(f"{backend}: {status.state}")
if status.error:
print(f" Error: {status.error}")
Performance Monitoring
- Query latency tracking
- Storage utilization alerts
- Encryption/decryption performance
- Migration success rates
Migration & Backup
Data Migration
# Migrate data between backends
await memory.migrate_data(
source_tier="warm",
target_tier="cold",
filter_criteria={"older_than_days": 30}
)
Backup & Recovery
# Create backup
backup_id = await memory.create_backup(
tiers=["hot", "warm"],
destination="s3://backups/ioa-memory"
)
# Restore from backup
await memory.restore_backup(backup_id)
Best Practices
Performance Optimization
- Use appropriate tiers for access patterns
- Implement proper indexing for search operations
- Configure connection pooling for database backends
- Monitor and adjust TTL settings based on usage
Security
- Use strong master encryption keys
- Enable key rotation policies
- Implement proper access controls
- Regularly audit access logs
Cost Management
- Configure appropriate retention policies
- Use compression for archival data
- Monitor storage utilization
- Implement data lifecycle automation
Compliance
- Enable audit logging for all operations
- Implement data classification policies
- Configure immutable storage for compliance data
- Regular compliance audits and reporting