|
1 | | -# Idea |
| 1 | +# LinkedQL <br>— A Modern Take on SQL and SQL Databases |
| 2 | + |
| 3 | +Try an advanced form of SQL right on your database. 🛸 |
2 | 4 |
|
3 | 5 | ## What is LinkedQL |
4 | 6 |
|
5 | | -LinkedQL is a database client that solves the modern database capability problem in a single interface. |
6 | | -Same familiar API as a classic client (`client.query()`), but **advanced SQL over your database** — bringing relational queries, live queries, a schema versioning system, offline capabilities and more. |
| 7 | +LinkedQL is both: |
| 8 | + |
| 9 | ++ a query client — `client.query()` |
| 10 | ++ and, more broadly, an idea — **SQL reimagined for modern apps**. |
| 11 | + |
| 12 | +The broader idea captures the **intent** behind each tool in the compensatory layers built around SQL — query builders, ORMs, schema mappers, GraphQL servers, and other application-level boilerplates — and enables these natively within the language. |
7 | 13 |
|
8 | | -LinkedQL is more **a modern take on SQL and SQL databases** than just a client. |
| 14 | +This brings us to SQL that finally internalizes the external capabilities built around it — **an upgrade**. |
9 | 15 |
|
10 | | -Need the full power of SQL locally? LinkedQL bundles an **embeddable, in-memory database** — codenamed **FlashQL**. |
11 | | -Use it as a lighter replacement for SQLite or PGLite, with all of LinkedQL’s power built in. |
| 16 | +Think of LinkedQL as **SQL, upgraded** — for modern applications. |
12 | 17 |
|
13 | 18 | ## Why LinkedQL |
14 | 19 |
|
15 | | -SQL and SQL databases have a **capability problem.** |
16 | | -Modern applications built around them have to wade through layers of **external tooling** as a consequence.<br> |
17 | | -(For example, need relational queries and realtime data? → typical setup: ORM + GraphQL servers.) |
| 20 | +“Modern” SQL shouldn’t require an entire scaffolding layer to fit within modern applications. |
| 21 | + |
| 22 | +Ideally, there should be a declarative way to express relationships in SQL rather than through an external ORM; a syntax for JSON composition instead of an imperative set of JSON functions; first-class support for application-land fundamentals like reactivity over external subscription servers; native handling of meta-concerns like schema versioning over manual migration tooling. |
| 23 | + |
| 24 | +The goal with LinkedQL is to bring these capabilities to the database itself and retire the historic compensation layer around SQL. |
| 25 | + |
| 26 | +## Capabilities |
| 27 | + |
| 28 | +| Capability | Description | |
| 29 | +| :---------------------------- | :----------------------------------------------------------------------------------------------------------------------------- | |
| 30 | +| 🔗 **DeepRef Operators** | Traverse relationships using simple path notation (`~>` / `<~`). Insert or update nested structures using same notation. | |
| 31 | +| ⚡ **Live Queries** | Turn on reactivity over any SQL query with `{ live: true }`. No extra infrastructure required. | |
| 32 | +| 🧩 **JSON Literals** | Bring JSON-like clearity to your queries with LinkedQL's first-class support for JSON notation. | |
| 33 | +| 🪄 **Upserts** | Do upserts with a literal UPSERT statement. | |
| 34 | +| 🧠 **Schema Versioning** | (Coming soon) Get automatic schema versioning on your database: automatic snapshots and historical introspection. | |
| 35 | +| 💾 **Edge & Offline Runtime** | (FlashQL) Run or embed SQL locally — in browsers, workers, or edge devices — for local-first and offline-first applications. | |
| 36 | +| 🌐 **Federation & Sync** | (Alpha) Unify remote databases, REST endpoints, and local stores into a single relational graph with seamless synchronization. | |
| 37 | + |
| 38 | +## Features |
| 39 | + |
| 40 | +| Feature | Description | |
| 41 | +| :---------------------------------------- | :------------------------------------------------------------------------------------------------------ | |
| 42 | +| 💻 **Classic `client.query()` Interface** | Same classic client interface; advanced capabalities for modern applications. | |
| 43 | +| 🔗 **Multi-Dialect Support** | A universal parser that understands PostgreSQL, MySQL, MariaDB, and FlashQL — one client, many dialects. | |
| 44 | +| 💡 **Lightweight Footprint** | A full reactive data layer in one compact library — under 80 KiB (min/zip). | |
| 45 | +| 🎯 **Automatic Schema Inference** | No upfront schema work. LinkedQL auto-discovers your schema and stays schema-driven across complex tasks. | |
| 46 | +| 🪄 **Diff-Based Migrations** | (Coming soon) Evolve schemas declaratively through change detection instead of hand-written migration scripts. | |
| 47 | + |
| 48 | +## Next Steps |
18 | 49 |
|
19 | | -Rather than extend that layer with yet another prosthetic arm for a missing limb in SQL, **LinkedQL extends SQL itself** to close the gaps at their level — **syntax gaps at the language layer**, **runtime problems at the runtime layer.** |
| 50 | +Choose where to start: |
20 | 51 |
|
21 | | -All of that comes built-in with the classic client API — giving your database an **automatic upgrade** in both **language** and **runtime capabilities**. |
| 52 | +| Path | Focus | |
| 53 | +|:--|:--| |
| 54 | +| [Getting Started](./) | Get started with LinkedQL in under three minutes. No database required | |
| 55 | +| [Explore Capabilities](./capabilities) | Jump to the Capabilities section. | |
| 56 | +| [Meet FlashQL](./flashql) | Meet FlashQL — LinkedQL's embeddable SQL engine. | |
| 57 | +| [Engineering Deep Dive](../engineering/realtime-engine) | Dig into LinkedQL's engineering in the engineering section. | |
0 commit comments