Introduction
RavenDB is a document database that combines ACID transactions with the flexibility of a schema-free data model. It includes a built-in search engine based on Lucene/Corax, automatic indexing, and multi-node clustering without requiring external tools.
What RavenDB Does
- Stores JSON documents with ACID transactions including multi-document operations
- Automatically creates indexes based on query patterns
- Provides built-in full-text search without external search engines
- Supports distributed clusters with automatic failover and conflict resolution
- Handles attachments, counters, time series, and graph queries natively
Architecture Overview
RavenDB uses a master-master replication model where every node in a cluster can accept writes. Conflicts are resolved automatically using configurable strategies or custom scripts. The storage engine (Voron) is a copy-on-write B+tree optimized for SSDs with ACID guarantees. Indexes run asynchronously on background threads using a Lucene-derived engine called Corax, keeping write latency low while maintaining query performance.
Self-Hosting & Configuration
- Deploy via Docker, DEB/RPM packages, or direct binary download for Linux, Windows, or macOS
- Access the Studio web UI at port 8080 for database management and query development
- Configure cluster topology by adding nodes through the Studio or REST API
- Set up TLS certificates for production deployments via the built-in setup wizard
- Enable external replication or ETL to sync data with other databases or services
Key Features
- ACID transactions across multiple documents and collections in a single cluster
- Auto-indexing analyzes query patterns and creates indexes without manual DDL
- Built-in Lucene/Corax search engine eliminates the need for a separate search service
- Multi-model: documents, key-value, counters, time series, attachments, and graph queries
- Studio web UI provides a visual query builder, index management, and cluster monitoring
Comparison with Similar Tools
- MongoDB — eventually consistent by default; RavenDB provides ACID multi-document transactions
- Elasticsearch — search-focused with limited transactional guarantees; RavenDB combines both
- CouchDB — HTTP-based with eventual consistency; RavenDB offers stronger consistency and auto-indexing
- FerretDB — MongoDB-compatible on PostgreSQL; RavenDB is a purpose-built engine with native search
- ArangoDB — multi-model with graph focus; RavenDB emphasizes ACID guarantees and auto-indexing
FAQ
Q: Is RavenDB open source? A: RavenDB Community Edition is open source under the AGPLv3 license. Commercial licenses are available for proprietary deployments.
Q: How does auto-indexing work? A: When a query arrives without a matching index, RavenDB creates one automatically based on the query pattern. The index builds in the background while the query returns results from a temporary scan.
Q: Does RavenDB support SQL-like queries? A: RavenDB uses RQL (Raven Query Language), a SQL-like language tailored for document queries. It supports projections, filtering, grouping, and full-text search predicates.
Q: What happens during a network partition? A: RavenDB uses a consensus protocol for cluster operations. During a partition, nodes that maintain quorum continue accepting writes; isolated nodes queue changes for reconciliation.