Getting Started
Vulcan is split into a few components:
- The conflict-free database (CR-SQLite)
- Platform SDKs
- Networking
- Live query engine
If an SDK already exists for your platform, visiting those docs would be the quickest way to get started. Otherwise, you'll want to start with the conflict-free database.
Conflict-free Database (CR-SQLite)
CR-SQLite
is a SQLite extension that allows sqlite databases to be merged together. This extension can be used independently of all other Vulcan components and loaded into existing SQLite deployments.
Platform SDKs
cr-sqlite
can run anywhere and provide you with a database that supports merging over a SQL API. Specific platform & language SDKs also exist to provide higher level APIs.
- Get started with JavaScript
- For all other languages, you can use
cr-sqlite
directly. See ./cr-sqlite/installation- In time we'll add more SDKs for more platforms. Swift and Android being the next two.
Networking
You can bring whatever transport you like so long as you follow a few conventions. To create a more complete experience, Vulcan also provides a default networking layer.
Live Query Engine
To enable applications at scale and extremely time-sensitive interactions, we're building a smart live query (reactive query) engine. This is currently a work in progress, based around the ideas of segment & interval trees (opens in a new tab) and differential dataflow (opens in a new tab).
The reactive queries available in the React integration are not yet based on this engine. They take a simpler approach of re-running queries when the tables those queries use are updated. We've seen this simple approach work for resolving ~100 concurrent queries in a single frame in the browser but we'd like to do better.
The live query engine will also enable scaling on the server and support multi-tenant use cases.