@dortdb/core
v2.1.1
Published
`@dortdb/core` is the language-neutral engine of [DortDB](https://github.com/filipjezek/dortdb), a modular framework for querying JavaScript data that already sits in your application's memory.
Readme
@dortdb/core
@dortdb/core is the language-neutral engine of
DortDB, a modular framework for querying
JavaScript data that already sits in your application's memory.
The core package registers sources, builds plans, optimizes them, executes them, and defines every extension point. It ships no query language, so pair it with one or more language packages:
@dortdb/lang-sql: SQL over arrays of objects@dortdb/lang-cypher: Cypher over property graphs@dortdb/lang-xquery: XQuery over XML, DOM, and other tree-shaped data
Installation
npm install @dortdb/core @dortdb/lang-sqlEvery language package declares @dortdb/core as a peer dependency, so all of
them share a single core instance.
Usage
import { DortDB } from '@dortdb/core';
import { defaultRules } from '@dortdb/core/optimizer';
import { SQL } from '@dortdb/lang-sql';
const db = new DortDB({
mainLang: SQL(),
optimizer: { rules: defaultRules },
});
const users = [
{ name: 'Alice', age: 30 },
{ name: 'Bob', age: 25 },
{ name: 'Charlie', age: 35 },
];
// registerSource only binds the array to a name. It copies nothing.
db.registerSource(['users'], users);
const result = db.query(`
SELECT name, age
FROM users
WHERE age > 30
`);
// result.schema -> ['name', 'age']
// result.data -> [{ name: 'Charlie', age: 35 }]What the package contains
- The
DortDBclass.queryruns a query end to end.parse,buildPlan, andexecutePlansplit the same work into steps, so you can stream results or inspect and rewrite the plan. - A rule-based
optimizer
and
defaultRules, a pre-ordered rule set. - Index abstractions such as
MapIndexand hash joins, for faster lookups and joins. - Extension points for languages, functions, aggregates, operators, castables, data adapters, index types, and optimizer rules.
The core and each language ship as separate packages, so a browser bundle holds only the languages and extensions you import.
Documentation
The full documentation lives at filipjezek.github.io/dortdb. It covers the architecture, the unified algebra that every language compiles to, and the extension model. The generated API reference has the exact type signatures.
The live demo builds queries in the browser and shows the plan for each one.
