Memory Workloads
This guide demonstrates operational usage of MonkDB memory objects for session/context storage patterns.
1) Create base incident table
CREATE TABLE incidents (
incident_id TEXT,
summary TEXT,
created_at TIMESTAMP
);
INSERT INTO incidents (incident_id, summary, created_at) VALUES
('inc-1', 'payment failure in eu', CURRENT_TIMESTAMP),
('inc-2', 'card auth timeout', CURRENT_TIMESTAMP);
2) Create memory object
CREATE MEMORY session_store
WITH (strict = true, entry_ttl_ms = 3600000, max_entries = 1000);
3) Inspect memory metadata
SELECT memory_name, options['strict'], options['entry_ttl_ms'], options['max_entries']
FROM memory.memories
WHERE memory_name = 'session_store';
4) Insert key-value entries
INSERT INTO memory.memory_entries (memory_name, entry_key, entry_value)
VALUES
('session_store', 'sess-42:intent', 'payment_failure'),
('session_store', 'sess-42:priority', 'urgent');
5) Read entries
SELECT memory_name, entry_key, entry_value
FROM memory.memory_entries
WHERE memory_name = 'session_store'
ORDER BY entry_key;
6) Upsert with conflict handling
INSERT INTO memory.memory_entries (memory_name, entry_key, entry_value)
VALUES ('session_store', 'sess-42:intent', 'payment_failure_v2')
ON CONFLICT (memory_name, entry_key) DO UPDATE
SET entry_value = excluded.entry_value;
7) Compact and monitor
ALTER MEMORY session_store COMPACT;
SELECT last_compacted_at IS NOT NULL,
last_compaction_pruned_entries,
total_compaction_pruned_entries
FROM memory.memories
WHERE memory_name = 'session_store';
SELECT strict, entry_ttl_ms, max_entries, active_entries, expired_entries, capacity_used_percent
FROM memory.memory_status
WHERE memory_name = 'session_store';
8) Cleanup
DROP MEMORY session_store;