blob: 61fba878640769ffc00019068d22add15224cb14 (
plain) (
tree)
|
|
#pragma once
#include "Api.h"
namespace nt
{
/**
* @class CursorManager
* @brief Orchestrates data pagination from storage backends to the query executor.
*
* The Cursor Manager implements the glue between the 'registry' objects
* and the Volcano-style iterator model. It translates high-level plan
* requests into low-level backend operations (LMDB, etcd, etc.).
*
* DUTIES:
* 1. Snapshot Anchoring & Pins:
* We need to bind the retrieval to a multigroup snapshot, the object
* for it should hold the reference for the tree that holds all the relations and tuples.
*
* 2. State Maintenance:
* Tracks the current position (Iterators/Offsets) within a relation
* to support sequential Next() calls from the algebra engine.
*
* 3. Prefetching & Buffering:
* Abstracts the 'paging' logic of the backend. For remote backends
* like etcd, it manages local buffers to hide latency from the executor.
* Think of a driver for an operating system.
*
* 4. Boundary Enforcement:
* Ensures scans do not cross commit boundaries or logical branch
* definitions unless explicitly requested by the plan.
*/
class NT_API CursorManager
{
};
}
|