20251114
Conclusion
DataView is now conceptualized as a thin, ephemeral, developer-facing object, similar to .NET’s SqlCommand:
Holds a query definition and the results of that query as a lightweight, row-major cache.
Can be registered with DataLens for orchestration in the future, allowing automatic query refresh and batched update commits once double-buffering is implemented.
Registered DataViews will support optional priority for deterministic batching; currently, operations are handled manually or via callbacks.
Non-registered DataViews or manual Query/Update/Commit operations are handled via a locking/buffering model once the orchestration layer is implemented.
DataLens currently provides serialize/deserialize functionality for DataStores, ensuring schema-aware memory representation and type-safe conversion.
Phase 1 work so far has confirmed that:
Column names can be used to reconcile schema changes automatically (columns added/removed or with changed types).
Type conversions between old and new column types can be applied safely during
ConvertToSchema.DataLens can deliver row-major, engine-facing views on top of column-major, cache-aware DataStore layouts.
Detailed Notes and Thought Process
1. DataView Purpose
Acts as a transactional, developer-facing cache.
Contains the results of queries and staged updates (future implementation).
Provides optional orchestration through registration with DataLens (future work).
Does not own memory; underlying buffers and operations are managed by DataLens/DataStore.
2. Registered vs Non-Registered Views (Planned)
Registered DataViews: will eventually support automatic refresh/commit each tick with optional priority.
Non-registered / manual DataViews: operations can be executed on demand; currently the system only provides low-level DataLens hooks.
3. Query and Update Model (Planned)
Queries: will return row-major results from DataStores.
Updates: will be staged through DataView and applied via DataLens.
Commit: will support batching updates per-store or globally once orchestration is implemented.
4. Transactional and Cache Behavior (Planned)
Updates will be staged until commit.
Queries will operate on cached results.
DataLens will ensure thread safety and determinism during execution.
5. Callback Mechanism
All DataView operations will expose callbacks for completion once orchestration is implemented.
6. Schema and Type Conversion
ConvertToSchemareconciles DataStore dumps to match the in-memory schema, handling:Column addition/removal.
Data type changes with conversion.
Default values for new columns.
This allows developers to modify schema without breaking DataLens/DataView operations.
7. Analogy (Planned)
Registered DataViews: auto-refreshing, transactional
SqlCommandwith optional prioritization.Non-registered DataViews: manual
SqlCommandexecuted on demand, subject to DataLens scheduling.
Implemented So Far
DataLensserialize/deserialize for DataStores.Schema-aware
ConvertToSchemainDataStore, automatically reconciling columns and types.Stubbed DataView object supporting basic query/update/commit interface (no orchestration yet).
Verified row-major DataView access over column-major DataStore layout with minimal overhead.
Next Steps
Implement double-buffered read/write support in DataLens for registered DataViews.
Define full C++ and C# APIs for DataView (registration, query, update, commit, callbacks).
Implement priority and tick frequency metadata for orchestrated DataViews.
Build sample tests for row-major queries and updates against column-major DataStore to validate performance and thread safety.
Last updated