Barrel Docs

Base de donnees documentaire embarquable avec MVCC, requetes declaratives, abonnements temps reel et replication pair-a-pair. Construite en Erlang.

Capacites Principales

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

CORE

MVCC

Controle de concurrence multi-version avec arbres de revisions.

  • + Ecritures sans conflit
  • + Historique des revisions
  • + Fusion style CRDT
REQUETE

Requetes Declaratives

Requetes basees sur les chemins avec indexation automatique.

  • + Indexation auto des chemins
  • + Pas d'index manuels
  • + Support federation
SYNC

Replication P2P

Sync pair-a-pair avec politiques de replication.

  • + Chain, Group, Fanout
  • + Replication filtree
  • + Ecritures synchrones
TEMPS REEL

Abonnements

Notifications temps reel via patterns style MQTT.

  • + Patterns de chemins
  • + Abonnements requetes
  • + Streaming SSE

Requetes Federees

Requetez plusieurs bases et fusionnez les resultats

Stockage par Niveaux

Niveaux chaud/tiede/froid avec migration TTL automatique

Pieces Jointes

Stockez des donnees binaires avec les documents

Ordonnancement HLC

Horloges Logiques Hybrides pour coordination distribuee

Metriques Prometheus

Metriques integrees pour monitoring et alertes

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

Performance

<1ms

Latence lecture (p99)

50K/sec

Debit d'ecriture

100K QPS

Debit de lecture

Benchmark sur noeud unique, documents 1Ko

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

Cache par Niveaux

Niveaux chaud/tiede/froid avec migration automatique

Distribution d'Evenements

Patterns fan-out pour architectures event streaming

Demarrage Rapide

cURL
# Lancer avec Docker
docker run -p 8080:8080 barrel-platform/barrel-docdb

# Creer une base de donnees
curl -X POST http://localhost:8080/db/mydb

# Inserer un document
curl -X PUT http://localhost:8080/db/mydb/doc1 \
  -H "Content-Type: application/json" \
  -d '{"type": "user", "name": "Alice"}'

# Recuperer un document
curl http://localhost:8080/db/mydb/doc1

# Requeter des documents (indexation automatique des chemins)
curl -X POST http://localhost:8080/db/mydb/_find \
  -H "Content-Type: application/json" \
  -d '{"where": [{"path": ["type"], "value": "user"}]}'

# S'abonner aux changements (flux SSE)
curl http://localhost:8080/db/mydb/_changes/stream

Quand l'Utiliser

Utilisez Barrel Docs quand :

  • + Besoin de versionnement de documents
  • + Offline-first/sync requis
  • + Sync multi-appareils necessaire
  • + Embarque dans app Erlang/Elixir

Considerez des alternatives quand :

  • + Un simple key-value suffit
  • + Besoin de requetes SQL/relationnelles
  • + Traversee de graphes requise
  • + Pas besoin de versionnement

Integration avec Barrel Vector

Barrel Docs se combine naturellement avec Barrel Vector pour stocker le contenu des documents avec leurs embeddings.

Python
# Stocker un document dans docdb
doc = docdb.put("documents", {
    "_id": "doc1",
    "title": "Bases du Machine Learning",
    "content": "...",
    "source": "ml-book.pdf"
})

# Stocker l'embedding dans vectordb
embedding = get_embedding(doc["content"])
vectordb.insert("documents", [{
    "id": "doc1",
    "values": embedding,
    "metadata": {"docdb_id": "doc1"}
}])

# Rechercher des vecteurs, recuperer les documents complets
results = vectordb.search("documents", query_embedding, top_k=5)
for r in results:
    full_doc = docdb.get("documents", r["metadata"]["docdb_id"])