Skip to main content

Limitations

DortDB is built for flexibility and small bundle size, and those choices come with real constraints. Knowing them up front avoids surprises.

Read-only​

DortDB is a read-only query framework. There are no data-definition or data-modification statements: no CREATE, INSERT, UPDATE, SET, and so on. To change data, mutate the registered sources directly from JavaScript; the next query sees the updated values.

Rule-based optimizer only​

The optimizer collects no statistics on registered sources, so cost-based optimization is not feasible. It is rule-based, and in particular it does not reorder joins: write joins in a sensible order and add indices on the attributes you filter and join on.

Single-threaded​

JavaScript is single-threaded, and Web Workers generally cannot share in-memory data without copying it. DortDB therefore runs in a single thread, and query execution is synchronous. That is also why functions and aggregates used in queries must be synchronous. Sharding sources across Workers explicitly is possible in principle, but the engine does not do it for you.

Partial language coverage​

None of the provided languages is implemented in full. Beyond the read-only restriction, some features are simply absent (SQL GROUP BY ROLLUP or window functions, for example), and some are excluded by design, notably static typing and schema validation, which conflict with the schema-free model. The per-language boundaries are documented in each language's dialect page: SQL, XQuery, Cypher. Missing functions can usually be supplied as extensions.