Une couche de Barrel

Barrel Docs

La couche documentaire. MVCC a vecteurs de version, requetes BQL, pieces jointes, un flux de changements et replication. Utilisez-la au sein du Barrel complet, ou de maniere autonome comme bibliotheque embarquable.

Capacites Principales

Tout ce dont vous avez besoin pour le stockage de documents, les requetes et la synchronisation distribuee.

CORE

MVCC

Concurrence multi-version avec des vecteurs de version HLC.

  • + Causal, sans coordinateur
  • + Historique conserve
  • + Conflits conserves, avec un hook de fusion
REQUETE

Requetes BQL

Un dialecte PartiQL avec indexation automatique des chemins.

  • + Indexation auto des chemins
  • + Pas d'index manuels
  • + Abonnements en direct
SYNC

Replication

Sync multi-master avec politiques de replication.

  • + Chain, Group, Fanout
  • + Replication filtree
  • + Ponctuelle ou continue
TEMPS REEL

Abonnements

Notifications temps reel via patterns style MQTT.

  • + Patterns de chemins
  • + Abonnements requetes
  • + Flux de changements

Timeline

Branches, restauration a un instant precis, et fusion des branches

TTL et retention

Expirez les documents et limitez l'historique conserve

Pieces Jointes

Blobs adresses par contenu, streames et repliques

Ordonnancement HLC

Horloges Logiques Hybrides pour coordination distribuee

Provenance et audit

Chaque ecriture enregistre l'acteur, la session et la source

Embarquable

Utilisez comme bibliotheque dans les apps Erlang/Elixir

Politiques de Replication

Chain

A → B → C

Replication sequentielle avec ecritures synchrones

Group

A ↔ B ↔ C

Multi-master avec resolution de conflits

Fanout

A → B, C, D

Distribution d'evenements vers plusieurs cibles

Cas d'Usage

Edge Computing

Deployez des noeuds qui synchronisent vers le cloud quand connectes

Multi-Region

Repliquez les donnees entre regions avec resolution de conflits

Applications offline-first

Ecritures locales qui convergent au retour en ligne

Distribution d'Evenements

Patterns fan-out pour architectures event streaming

Demarrage Rapide

%% Start the application
application:ensure_all_started(barrel_docdb).

%% Create a database
{ok, _} = barrel_docdb:create_db(<<"mydb">>).

%% Put a document
{ok, #{<<"id">> := Id}} = barrel_docdb:put_doc(<<"mydb">>, #{
    <<"type">> => <<"user">>, <<"name">> => <<"Alice">>
}).

%% Query with BQL
{ok, Rows, _} = barrel_docdb:query(<<"mydb">>,
    <<"SELECT * FROM db WHERE type = 'user'">>).

%% Subscribe to changes (MQTT-style patterns)
{ok, _Ref} = barrel_docdb:subscribe(<<"mydb">>, <<"type/user/#">>).
# barrel_docdb est embarque uniquement. Lancez barrel_server pour une surface HTTP.
$ curl -X PUT localhost:8080/db/mydb
{"ok":true,"db":"mydb"}

$ curl -X PUT localhost:8080/db/mydb/doc/alice \
    -H 'content-type: application/json' -d '{"type":"user","name":"Alice"}'
{"id":"alice","ok":true,"rev":"0000019f46b4c08900000000@8c0010c983917d4b"}

# BQL via HTTP.
$ curl -X POST localhost:8080/db/mydb/query \
    -H 'content-type: application/json' \
    -d '{"query":"SELECT * FROM db WHERE type = '"'"'user'"'"'"}'

# Le flux de changements, en JSON ou en Server-Sent Events.
$ curl localhost:8080/db/mydb/changes
$ curl -H 'accept: text/event-stream' localhost:8080/db/mydb/changes

Pour une surface REST/JSON ou MCP, executez barrel_server sur la meme base de donnees.

Quand l'Utiliser

Utilisez Barrel Docs quand :

  • + Besoin de versionnement et d'historique des documents
  • + Offline-first ou sync requis
  • + Sync multi-appareils ou multi-region necessaire
  • + Embarque dans app Erlang/Elixir

Considerez des alternatives quand :

  • + Un simple key-value suffit
  • + Besoin de SQL relationnel complet
  • + Traversee de graphes comme charge principale
  • + Vous avez aussi besoin de vecteurs (utilisez alors le Barrel complet)

Un enregistrement avec vecteurs

Dans le Barrel complet, un document et son embedding partagent un seul id, il n'y a donc pas de code d'integration entre un stockage documentaire et un index vectoriel separe. Stockez du texte, obtenez la recherche.

Decouvrir Barrel →