Features

A purpose-built HTAP engine from storage to wire protocol.

SoA

Columnar storage engine

DoDB stores data in Structure-of-Arrays (SoA) format — each column is a contiguous, 64-byte aligned array in memory. This layout enables maximum SIMD throughput because sequential column values are adjacent in cache lines.

Memory is managed through mmap with arena allocation. No malloc, no garbage collection, no fragmentation. Column arrays grow by doubling and are always aligned for AVX-512 compatibility.

VARCHAR handling

32-byte inline cells: 22 bytes inline + overflow heap for longer strings. Short strings never chase a pointer.

Null bitmaps

Packed bit arrays for nullable columns. SIMD-friendly null checking with bitwise operations.

Type system

13 types: INT8/16/32/64, UINT8/16/32/64, FLOAT32/64, BOOL, VARCHAR, TIMESTAMP.

AVX

SIMD query kernels

Every performance-critical operation is hand-written in assembly with explicit SIMD intrinsics. No compiler auto-vectorization — every instruction is deliberate.

AVX2 NEON

Predicate filters

Type-specific comparison with bitmask generation. Process 8-32 values per instruction depending on type width.

AVX2 NEON

Aggregations

SUM, COUNT, MIN, MAX with horizontal reduction. 7B+ rows/sec on INT32 aggregates.

AVX2 NEON

Hash computation

Vectorized hashing for GROUP BY and JOIN operations using SIMD multiply-and-shift.

AVX2 NEON

Gather operations

Selective column reads using index arrays. Avoids materializing filtered result sets.

AVX2

String comparison

SIMD-accelerated VARCHAR filtering with inline/overflow-aware comparison paths.

O(1)

COUNT(*)

Stored row count. No scan required. 37,000x faster than PostgreSQL.

SQL

SQL engine

Complete SQL implementation with recursive descent parser and vectorized batch executor, written entirely in x86-64 and AArch64 assembly.

Supported statements

SELECTINSERTUPDATEDELETECREATE TABLEDROP TABLEBEGINCOMMITROLLBACK

Query features

WHEREAND / ORJOINGROUP BYORDER BYLIMITOFFSETAS aliasesAggregatesSubqueries
Type Size Range
INT8 1 byte -128 to 127
INT16 2 bytes -32,768 to 32,767
INT32 4 bytes -2B to 2B
INT64 8 bytes Full 64-bit signed
UINT8 1 byte 0 to 255
UINT16 2 bytes 0 to 65,535
UINT32 4 bytes 0 to 4B
UINT64 8 bytes Full 64-bit unsigned
FLOAT32 4 bytes IEEE 754 single
FLOAT64 8 bytes IEEE 754 double
BOOL 1 byte true / false
VARCHAR 32 bytes 22 inline + overflow
TIMESTAMP 8 bytes Unix epoch microseconds
TX

ACID transactions

Atomicity

Transactions are all-or-nothing. Partial writes are rolled back on abort or crash.

Consistency

Schema constraints enforced at write time. Type-checked column operations.

Isolation

MVCC snapshot isolation. Readers never block writers. Consistent point-in-time reads.

Durability

Write-ahead log with fsync. Crash recovery via WAL replay on startup.

WS

Real-time subscriptions

Subscribe to any SQL query over WebSocket. Get the initial result set immediately, then receive incremental deltas as the underlying data changes.

Query subscriptions

Subscribe to arbitrary SELECT queries. Filter, join, and aggregate — all reactive.

Delta streaming

Only changed rows are sent. Inserts and deletes relative to the previous result set.

Binary protocol

Compact binary wire format for low-overhead updates. JSON text protocol also supported.

API

REST API

Full CRUD plus raw SQL execution. JWT and API key authentication. Powered by Rust with axum and tokio.

Method Endpoint Description
GET /tables/:name List all rows
GET /tables/:name/:id Get row by ID
POST /tables/:name Insert row
PUT /tables/:name/:id Update row
DELETE /tables/:name/:id Delete row
POST /sql Execute raw SQL
POST /reducer/:name Call reducer

Architecture

Client Layer    CLI  |  REST API  |  WebSocket  |  Web Admin
                         |            |              |
Server Layer    Rust (axum + tokio + JWT auth + subscriptions)
                         |
Engine Layer    FASM x86-64 / AArch64 Core
                 |-- SoA Storage (mmap, 64-byte aligned)
                 |-- SIMD Kernels (AVX2 / NEON)
                 |-- SQL Engine (tokenizer, parser, executor)
                 |-- MVCC + WAL (snapshot isolation, durability)

Platform        Linux x86-64 (Docker) | macOS AArch64 (native)