rxdb README

The project's README from github.com/pubkey/rxdb. As one markdown file: README.md.

JavaScript Database

A fast, local-first, reactive Database for JavaScript Applications


       

     


  What is RxDB?

RxDB (short for Reactive Database) is a local-first, NoSQL-database for JavaScript Applications. Reactive means that you can not only query the current state, but subscribe to all state changes like the result of a query or even a single field of a document. This is great for UI-based realtime applications in a way that makes it easy to develop and also has great performance benefits.

Use the quickstart, read the documentation or explore the example projects.

RxDB on Youtube

  Used by many

RxDB is a proven technology used by thousands of developers worldwide. With its flexibility, RxDB is used in a diverse range of apps and services.


(add yours)

  Multiplayer realtime applications

realtime.gif

  Replicate with your existing infrastructure

RxDB provides an easy to implement, battle-tested Sync Engine for realtime replication with your existing infrastructure.
You do not have to use a specific cloud or backend database. The protocol works by implementing three simple HTTP endpoints. There are also production-ready plugins to easily replicate with GraphQL, CouchDB, Websocket, WebRTC (P2P), Supabase, Firestore, NATS or Google Drive.

  Flexible storage layer

RxDB is based on a storage interface that enables you to swap out the underlying storage engine. This increases code reuse because the same database code can be used in different JavaScript environments by just switching out the storage settings.

You can use RxDB on top of LocalStorage, IndexedDB, OPFS, LokiJS, Dexie.js, in-memory, SQLite, in a WebWorker thread and even on top of FoundationDB and DenoKV.

No matter what kind of runtime you have, as long as it runs JavaScript, it can run RxDB:

Browsers Node.js React Native Capacitor NativeScript Flutter or as an Electron Database

All the features that you need

Since its beginning in 2018, RxDB has gained a huge set of features and plugins which makes it a flexible full solution regardless of which type of application you are building. Every feature that you need now or might need in the future is already there.

Logging
Attachments
ORM
Conflict Handling
Middleware
Signals
TanStack DB
State
Backup
Replication
Server
Storages
Local Documents
Schema Validation
Compression
Migration
Encryption
CRDT
Population

  Quick start

Install

npm install rxdb rxjs --save

Store data

import {
    createRxDatabase
} from 'rxdb/plugins/core';

/**
 * For browsers, we use the localstorage based storage.
 * In other JavaScript runtimes, we can use different storages:
 * @link https://rxdb.info/rx-storage.html
 */
import {
    getRxStorageLocalstorage
} from 'rxdb/plugins/storage-localstorage';

// create a database
const db = await createRxDatabase({
    name: 'heroesdb', // the name of the database
    storage: getRxStorageLocalstorage()
});

// add collections with a schema
await db.addCollections({
  heroes: {
    schema: {
      version: 0,
      primaryKey: 'name',
      type: 'object',
      properties: {
        name: {
          type: 'string',
          maxLength: 100
        },
        healthpoints: {
          type: 'number'
        }
      },
      required: ['name', 'healthpoints']
    }
  }
});

// insert a document
await db.heroes.insert({
  name: 'Bob',
  healthpoints: 100
});

Query data once

const aliveHeroes = await db.heroes.find({
  selector: {
    healthpoints: {
      $gt: 0
    }
  }
}).exec(); // the exec() returns the result once

Observe a Query

await db.heroes.find({
  selector: {
    healthpoints: {
      $gt: 0
    }
  }
})
.$ // the $ returns an observable that emits each time the result set of the query changes
.subscribe(aliveHeroes => console.dir(aliveHeroes));

  Get started

Get started now by reading the docs or exploring the example-projects.

  Support and Contribute

More content

Angular Database, Frontend Database, localStorage, React Database, Browser Database, React Native Database, PWA Database, In-memory NoSQL database, JSON database, Angular IndexedDB, React IndexedDB, Optimistic UI, local database, React Native Encryption, Vue Database, jQuery Database, Vue IndexedDB, Firestore Alternative, Firebase Realtime Database Alternative, Ionic Storage, Electron SQLite, TanStack DB Offline, DDIL Database


View llms.txt

rxdb (pubkey/rxdb)

Searching Database…

23.4K ·GitHub
Что это такое?Локально-ориентированная реактивная база данных для JavaScript-приложений: она работает внутри вашего приложения, интерфейс может подписываться на результаты запросов и даже на отдельные поля документа, а также синхронизируется (реплицируется) с вашим существующим бэкендом — без привязки к конкретному поставщику.
Это сервер базы данных, который нужно разворачивать, или библиотека, встраиваемая в приложение?Это библиотека: RxDB встраивается в ваше JavaScript-приложение и работает везде, где работает JavaScript — в браузерах, Node.js, Flutter и не только. Отдельный процесс базы данных обслуживать не нужно.
Как добавить её в проект и начать пользоваться?Установите пакет через npm, затем следуйте quickstart: создайте коллекции, сохраняйте документы, выполняйте разовые запросы или подпишитесь на запрос. Остальное описано в документации и примерах проектов.
Нужно ли переносить бэкенд в определённое облако, чтобы работала синхронизация?Нет — для репликации достаточно трёх простых HTTP-эндпоинтов, которые вы реализуете сами, а для существующих стеков вроде CouchDB, GraphQL, Firebase и Postgres есть готовые плагины промышленного качества. Конкретное облако не требуется.
Всё бесплатно или есть платные части?Ядро открыто под лицензией Apache-2.0, но часть функциональности поставляется в виде премиум-плагинов, которые нужно покупать отдельно.
Она проверена в бою или всё ещё экспериментальная?Проверена в бою: разработка началась ещё в 2018 году, и RxDB используют тысячи разработчиков по всему миру в самых разных приложениях и сервисах, а приложения с многопользовательским режимом в реальном времени выделены как показательный сценарий.
Что происходит с моим приложением, когда устройство теряет сеть?Оно продолжает работать — в этом и есть локально-ориентированная модель: чтение и запись сразу попадают в базу на устройстве, а изменения реплицируются с вашим бэкендом, как только связь восстановится.
Что «реактивная» означает на практике?На запросы и даже на отдельные поля документа можно подписываться: интерфейс автоматически получает обновления при каждом изменении данных, что, по словам RxDB, упрощает создание интерфейсов реального времени и делает их быстрее.
С какими фреймворками и окружениями она интегрируется?Со всем, где работает JavaScript: браузеры, Node.js, Flutter, Electron и PWA, на мобильных устройствах — через React Native; в README отдельно упомянуты сценарии с Angular, React, Vue, Ionic и jQuery.
Почему выбрать её, а не Firebase или Firestore?В README RxDB позиционируется как альтернатива Firestore и Firebase Realtime Database, которая хранит данные локально и реплицируется с вашей существующей инфраструктурой, так что вы не привязаны к конкретному облаку или поставщику.
Creator
pubkey
Size
640.2 MB
Stars
23.4K
Age
9y
Commits · 90 Days