Skip to content

Introduction

FlintDB is an embedded JSON-native database with built-in analytics and vector search. Store JSON, query it, analyze it — all in-engine. No daemon, no schema, no ETL.

Terminal window
npm install flintdb
import { FlintDB, col, avg } from "flintdb";
const db = FlintDB.open("./data");
db.put("sensors", { device: "A", temp: 22.5, ts: "2024-09-01T00:00:00Z" });
db.put("sensors", { device: "A", temp: 23.1, ts: "2024-09-01T00:05:00Z" });
db.put("sensors", { device: "B", temp: 18.0, ts: "2024-09-01T00:00:00Z" });
const result = db
.from("sensors")
.groupBy("device")
.select({
device: col("device"),
avg_temp: avg("temp"),
})
.run();
console.log(result.rows);
// [{ device: "A", avg_temp: 22.8 }, { device: "B", avg_temp: 18.0 }]
db.close();

No await, no schema, no server — just npm install and go.

JSON-Native

Store and query JSON documents directly. No schema definitions, no migrations — your data’s shape is your schema.

Built-in Analytics

avg, stddev, EMA, percentile, Bollinger Bands, RSI, MACD — computed inside the engine. No Pandas, no ETL pipeline.

Query is Data

Queries are plain JSON objects, not SQL strings. No parser, no DSL — just objects in, results out.

Vector Search

Store embeddings alongside your documents. Cosine and L2 nearest-neighbor search built in. No separate vector DB.

FlintDB is built in Rust with:

  • redb — mmap-backed, ACID, crash-safe storage via Copy-on-Write
  • Lazy loading — collections deserialized on first access
  • Columnar cache — dense f64 arrays built lazily per field for fast analytics
  • Hash & BTree indexes — auto-maintained on mutations