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.
MVCC
Controle de concurrence multi-version avec arbres de revisions.
- + Ecritures sans conflit
- + Historique des revisions
- + Fusion style CRDT
Requetes Declaratives
Requetes basees sur les chemins avec indexation automatique.
- + Indexation auto des chemins
- + Pas d'index manuels
- + Support federation
Replication P2P
Sync pair-a-pair avec politiques de replication.
- + Chain, Group, Fanout
- + Replication filtree
- + Ecritures synchrones
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
# 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.
# 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"])