Skip to content

DTDE Wiki

Welcome to the Distributed Temporal Data Engine (DTDE) Wiki! This section contains detailed API reference documentation, architecture guides, and comprehensive class documentation.

πŸ“– Documentation Index

Core Documentation

Document Description
Architecture System design, components, and data flow
API Reference Complete API documentation
Configuration All configuration options explained
Classes Reference Detailed class and interface documentation
Troubleshooting Common issues, FAQ, and solutions

Package Overview

Dtde.EntityFramework

The main package providing EF Core integration:

dotnet add package Dtde.EntityFramework

Key Namespaces: - Dtde.EntityFramework - Core DbContext and extensions - Dtde.EntityFramework.Configuration - Options and builders - Dtde.EntityFramework.Query - Query execution - Dtde.EntityFramework.Update - Write operations

Dtde.Core

Core domain model and utilities:

Key Namespaces: - Dtde.Core.Metadata - Shard and entity metadata - Dtde.Core.Sharding - Sharding strategies - Dtde.Core.Temporal - Temporal context

Dtde.Abstractions

Interfaces and contracts:

Key Namespaces: - Dtde.Abstractions.Metadata - Metadata interfaces - Dtde.Abstractions.Temporal - Temporal interfaces


Architecture Overview

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     Application Code                        β”‚
β”‚         Standard EF Core LINQ Queries                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β”‚
                              β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Dtde.EntityFramework                       β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚ DtdeDbContextβ”‚  β”‚ Query Engine β”‚  β”‚  Update Engine    β”‚   β”‚
β”‚  β”‚             β”‚  β”‚ (Sharded)   β”‚  β”‚  (Write Router)   β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β”‚
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β–Ό                               β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Table Sharding        β”‚     β”‚   Database Sharding     β”‚
β”‚   (Same Database)       β”‚     β”‚   (Multiple Databases)  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”β”Œβ”€β”€β”€β”€β”€β”β”Œβ”€β”€β”€β”€β”€β” β”‚     β”‚  β”Œβ”€β”€β”€β”€β”€β”β”Œβ”€β”€β”€β”€β”€β”β”Œβ”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚Tbl_1β”‚β”‚Tbl_2β”‚β”‚Tbl_3β”‚ β”‚     β”‚  β”‚DB_1 β”‚β”‚DB_2 β”‚β”‚DB_3 β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”˜β””β”€β”€β”€β”€β”€β”˜β””β”€β”€β”€β”€β”€β”˜ β”‚     β”‚  β””β”€β”€β”€β”€β”€β”˜β””β”€β”€β”€β”€β”€β”˜β””β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Concepts

1. Transparent Sharding

DTDE intercepts EF Core queries and transparently routes them to multiple shards:

// You write standard EF Core:
var customers = await db.Customers.Where(c => c.Region == "EU").ToListAsync();

// DTDE handles:
// - Shard resolution
// - Parallel execution
// - Result merging

2. Property-Agnostic Design

No hardcoded property names. Configure any property for sharding or temporal:

// Any property can be a shard key
entity.ShardBy(c => c.Region);
entity.ShardBy(o => o.Year);
entity.ShardBy(p => p.Category);

// Any DateTime properties for temporal
entity.HasTemporalValidity(c => c.EffectiveDate, c => c.ExpirationDate);
entity.HasTemporalValidity(p => p.StartDate, p => p.EndDate);

3. Optional Temporal Versioning

Temporal is opt-in. Entities can use: - Sharding only (default) - Temporal only - Both together - Neither (standard EF Core)


Version History

Version Date Notes
1.0.0 - Initial release

Contributing

See the development plan for technical details and contribution guidelines.


← Back to Documentation | Architecture β†’