Skip to content

DTDE - Distributed Temporal Data Engine

  • Get Started in 5 Minutes


    Install DTDE and run your first sharded query in under 5 minutes.

    Quickstart

  • Complete Guide


    Learn all the concepts and features with step-by-step tutorials.

    Getting Started

  • API Reference


    Comprehensive documentation of all classes, methods, and configuration options.

    API Docs

  • Open Source


    MIT licensed. Contribute on GitHub and help make DTDE better.

    GitHub


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

Install-Package Dtde.EntityFramework
dotnet add package Dtde.EntityFramework
<PackageReference Include="Dtde.EntityFramework" Version="1.0.0" />

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.