DTDE - Distributed Temporal Data Engine¶
-
Get Started in 5 Minutes
Install DTDE and run your first sharded query in under 5 minutes.
-
Complete Guide
Learn all the concepts and features with step-by-step tutorials.
-
API Reference
Comprehensive documentation of all classes, methods, and configuration options.
-
Open Source
MIT licensed. Contribute on GitHub and help make DTDE better.
What is DTDE?¶
DTDE is a NuGet package that provides transparent horizontal sharding and optional temporal versioning for Entity Framework Core.
// Write standard EF Core LINQ - DTDE handles distribution transparently
var customers = await db.Customers
.Where(c => c.Region == "EU")
.ToListAsync();
// Query data at a specific point in time
var historicalOrders = await db.ValidAt<Order>(new DateTime(2024, 1, 15))
.Where(o => o.Status == "Completed")
.ToListAsync();
Key Features¶
| Feature | Description |
|---|---|
| Transparent Sharding | Distribute data across tables or databases invisibly |
| Temporal Versioning | Track entity history with point-in-time queries |
| Cross-Shard Transactions | ACID transactions across multiple database shards |
| Property Agnostic | Use ANY property names for sharding and temporal boundaries |
| EF Core Native | Works with standard LINQ - no special query syntax |
| Fully Tested | 400+ unit and integration tests |
Installation¶
Quick Example¶
public class AppDbContext : DtdeDbContext
{
public DbSet<Order> Orders => Set<Order>();
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
options
.UseSqlServer(connectionString)
.UseDtde(dtde => dtde
.ConfigureEntity<Order>(e => e
.HasTemporalValidity("ValidFrom", "ValidTo"))
.AddShard(s => s
.WithId("2024")
.WithDateRange(new DateTime(2024, 1, 1), new DateTime(2024, 12, 31))
.WithConnectionString(conn2024)));
}
}
Community¶
License¶
DTDE is released under the MIT License.