# rethinkdb/rethinkdb

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/rethinkdb-rethinkdb).**

26,993 stars · 1,851 forks · C++ · other

## Links

- GitHub: https://github.com/rethinkdb/rethinkdb
- Homepage: https://rethinkdb.com
- awesome-repositories: https://awesome-repositories.com/repository/rethinkdb-rethinkdb.md

## Description

RethinkDB is a distributed, document-oriented database designed to store and manage JSON-formatted data across scalable clusters. It utilizes a custom log-structured storage engine with B-Tree indexing to ensure high-performance disk I/O and data persistence. The system maintains high availability through automatic sharding and replication, employing a primary-replica voting consensus mechanism to handle node failures and ensure consistent cluster operations.

A defining characteristic of the platform is its reactive changefeed engine, which allows applications to subscribe to live data updates. Instead of polling for changes, developers can maintain persistent cursors on tables to stream document modifications in real-time. This is complemented by a fluent, functional query language that translates native code constructs into optimized, parallelized execution plans. By embedding these queries directly into application code, the system provides a type-safe interface that helps prevent injection vulnerabilities while enabling complex data manipulation and aggregation.

The platform provides a comprehensive suite of administrative tools for managing production environments, including granular user permissions, TLS network encryption, and visual cluster monitoring. It supports advanced data modeling through document embedding and cross-table linking, as well as specialized geospatial processing for proximity-based queries. The system is designed for integration with modern web frameworks and message brokers, facilitating real-time synchronization with external services and search engines.

RethinkDB is configured via key-value files and command-line interfaces, with support for containerized deployment and automated infrastructure orchestration.

## Tags

### Data & Databases

- [Document Databases](https://awesome-repositories.com/f/data-databases/document-databases.md) — A scalable, JSON-oriented data store that distributes data across multiple nodes using automatic sharding and replication for high availability.
- [Change Data Capture](https://awesome-repositories.com/f/data-databases/change-data-capture.md) — "Maintains persistent cursors on tables to push real-time document modifications to subscribers as a continuous stream of change events." ([source](https://rethinkdb.com/docs/changefeeds/javascript/))
- [Query Builders](https://awesome-repositories.com/f/data-databases/query-builders.md) — "Translates native code constructs into optimized server-side operations to prevent injection attacks and enable type-safe database interactions."
- [Real-time Data Subscriptions](https://awesome-repositories.com/f/data-databases/real-time-data-subscriptions.md) — RethinkDB subscribes to real-time data updates by pushing changes from the database directly to the application whenever specific documents or query results are modified. ([source](https://docs.rethinkdb.com/))
- [Change Data Capture Systems](https://awesome-repositories.com/f/data-databases/change-data-capture-systems.md) — A reactive data layer that streams live updates to applications as documents are inserted, modified, or deleted in the database.
- [Database Sharding](https://awesome-repositories.com/f/data-databases/database-sharding.md) — RethinkDB partitions data across a cluster using a range-based sharding algorithm that automatically distributes documents based on their primary key values to ensure balanced storage. ([source](https://rethinkdb.com/docs/architecture))
- [Object-Document Mappers](https://awesome-repositories.com/f/data-databases/object-document-mappers.md) — RethinkDB defines data models with type annotations, secondary indexes, and associations while applying custom validations to ensure data integrity before saving documents. ([source](https://rethinkdb.com/docs/rails))
- [Query Optimization Engines](https://awesome-repositories.com/f/data-databases/query-optimization-engines.md) — RethinkDB executes queries on the server with automatic parallelization across CPU cores and cluster nodes, while using lazy evaluation to minimize resource consumption. ([source](https://rethinkdb.com/docs/introduction-to-reql/))
- [Storage Engines](https://awesome-repositories.com/f/data-databases/storage-engines.md) — RethinkDB stores data on disk using a custom log-structured storage engine with B-Tree organization, supporting concurrent garbage compaction, SSD optimizations, and multiversion concurrency control. ([source](https://rethinkdb.com/docs/architecture))
- [Atomic Transaction Models](https://awesome-repositories.com/f/data-databases/atomic-transaction-models.md) — RethinkDB performs atomic document updates and replacements to ensure linearizability for individual operations, while noting that multi-key operations do not guarantee atomicity. ([source](https://rethinkdb.com/docs/consistency/))
- [Consensus Protocols](https://awesome-repositories.com/f/data-databases/consensus-protocols.md) — "Ensures high availability by electing primary replicas through a voting mechanism that maintains cluster operations when individual nodes fail."
- [Data Filtering Engines](https://awesome-repositories.com/f/data-databases/data-filtering-engines.md) — RethinkDB filters query results using multiple fields, nested fields, array contents, regex patterns, or range matching to retrieve specific subsets of data. ([source](https://rethinkdb.com/docs/cookbook/javascript/))
- [Data Sharding](https://awesome-repositories.com/f/data-databases/data-sharding.md) — RethinkDB partitions data across cluster nodes by distributing document ranges based on primary keys to ensure balanced storage and parallelized query execution.
- [Database Adapters](https://awesome-repositories.com/f/data-databases/database-adapters.md) — Provides adapters and integration layers to connect application logic with persistent database storage systems. ([source](https://rethinkdb.com/docs/frameworks-and-libraries/))
- [Database Configuration Tools](https://awesome-repositories.com/f/data-databases/database-configuration-tools.md) — Provides a structured mechanism for defining server identity, network interfaces, and security credentials through configuration files. ([source](https://rethinkdb.com/docs/config-file/))
- [Document Manipulation Utilities](https://awesome-repositories.com/f/data-databases/document-manipulation-utilities.md) — RethinkDB modifies document content by adding, overwriting, or removing fields, and performs atomic updates or conditional replacements based on specific document states. ([source](https://rethinkdb.com/docs/cookbook/javascript/))
- [Fluent Query Builders](https://awesome-repositories.com/f/data-databases/fluent-query-builders.md) — Writing complex database operations using chainable, functional language constructs that translate into optimized and parallelized server-side execution plans.
- [Geospatial Databases](https://awesome-repositories.com/f/data-databases/geospatial-databases.md) — RethinkDB represents spatial data using points, lines, and polygons to perform geospatial queries and calculations on coordinate-based information. ([source](https://rethinkdb.com/docs/data-types/))
- [High Availability Configurations](https://awesome-repositories.com/f/data-databases/high-availability-configurations.md) — Ensures continuous data availability through automated replication and manual failover procedures across cluster nodes. ([source](https://rethinkdb.com/docs/crashes/))
- [Indexing Engines](https://awesome-repositories.com/f/data-databases/indexing-engines.md) — RethinkDB indexes data using B-Tree structures for efficient lookups, supporting primary keys, secondary indexes, compound indexes, and indexes based on arbitrary computed expressions. ([source](https://rethinkdb.com/docs/architecture))
- [Object-Relational Mappers](https://awesome-repositories.com/f/data-databases/object-relational-mappers.md) — Provides an abstraction layer that maps database documents directly to application objects for seamless data integration. ([source](https://rethinkdb.com/docs/frameworks-and-libraries/))
- [Query Execution Engines](https://awesome-repositories.com/f/data-databases/query-execution-engines.md) — "Transforms fluent query chains into parallelized execution plans that stream data chunks from multiple servers to the client for efficient processing."
- [Search Index Synchronizers](https://awesome-repositories.com/f/data-databases/search-index-synchronizers.md) — RethinkDB synchronizes database tables with external search engines in real-time using changefeeds to automatically push new, updated, or deleted documents to indexes. ([source](https://rethinkdb.com/docs/elasticsearch/))
- [Stream Processing](https://awesome-repositories.com/f/data-databases/stream-processing.md) — RethinkDB processes large result sets using cursors to iterate over data lazily, or converts streams into arrays for smaller datasets. ([source](https://rethinkdb.com/docs/data-types/))
- [Asynchronous Database Drivers](https://awesome-repositories.com/f/data-databases/asynchronous-database-drivers.md) — RethinkDB executes database queries asynchronously using callbacks, promises, or event emitters to handle incoming data streams without blocking the main execution thread. ([source](https://rethinkdb.com/docs/async-connections/))
- [Concurrency Control Mechanisms](https://awesome-repositories.com/f/data-databases/concurrency-control-mechanisms.md) — "Manages data consistency by allowing multiple versions of documents to exist simultaneously, enabling non-blocking reads during concurrent write operations."
- [Consistency Tuning](https://awesome-repositories.com/f/data-databases/consistency-tuning.md) — RethinkDB allows configuring table-level write acknowledgements, disk durability, and query-level read consistency modes to balance data safety against performance requirements. ([source](https://rethinkdb.com/docs/consistency/))
- [Data Transformation Pipelines](https://awesome-repositories.com/f/data-databases/data-transformation-pipelines.md) — RethinkDB transforms query results by counting documents, calculating averages, performing subqueries, pivoting data structures, and grouping results by specific criteria. ([source](https://rethinkdb.com/docs/cookbook/javascript/))
- [Database Drivers](https://awesome-repositories.com/f/data-databases/database-drivers.md) — RethinkDB manages database connections, session storage, and data fixtures in server-side applications using community-maintained drivers, connection pools, and middleware extensions. ([source](https://rethinkdb.com/docs/frameworks-and-libraries/))
- [Distributed Query Processing](https://awesome-repositories.com/f/data-databases/distributed-query-processing.md) — RethinkDB executes queries by transforming them into parallelized, lazy-evaluated execution plans that stream data chunks from multiple servers to the client for efficient processing. ([source](https://rethinkdb.com/docs/architecture))
- [Functional Query Interfaces](https://awesome-repositories.com/f/data-databases/functional-query-interfaces.md) — RethinkDB writes functional-style queries using language constructs like lambdas, which the driver converts into optimized server-side operations for cluster evaluation. ([source](https://rethinkdb.com/docs/introduction-to-reql/))
- [Replication Strategies](https://awesome-repositories.com/f/data-databases/replication-strategies.md) — RethinkDB maintains data consistency by routing all reads and writes to a primary replica, while optionally allowing out-of-date reads from secondary replicas to improve latency. ([source](https://rethinkdb.com/docs/architecture))
- [Secondary Indexes](https://awesome-repositories.com/f/data-databases/secondary-indexes.md) — RethinkDB enables creating and querying simple secondary indexes on a single document field to efficiently retrieve, order, and join data across tables. ([source](https://rethinkdb.com/docs/secondary-indexes/javascript/))
- [Change Data Capture Streams](https://awesome-repositories.com/f/data-databases/change-data-capture-streams.md) — Building applications that react instantly to database changes by subscribing to live update feeds instead of polling for data.
- [Data Aggregation Engines](https://awesome-repositories.com/f/data-databases/data-aggregation-engines.md) — RethinkDB processes large datasets using integrated tools that allow developers to perform complex data aggregation and transformation directly within the query language. ([source](https://docs.rethinkdb.com/))
- [Database Backup Utilities](https://awesome-repositories.com/f/data-databases/database-backup-utilities.md) — RethinkDB creates compressed archives of database tables and metadata from a live cluster without interrupting client access by using configurable connection and export options. ([source](https://rethinkdb.com/docs/backup/))
- [Database Restoration Tools](https://awesome-repositories.com/f/data-databases/database-restoration-tools.md) — RethinkDB restores data from previously created archives into a cluster while controlling concurrency, durability, and index creation settings during the restoration process. ([source](https://rethinkdb.com/docs/backup/))
- [Geospatial Query Engines](https://awesome-repositories.com/f/data-databases/geospatial-query-engines.md) — RethinkDB performs geospatial operations by creating points, calculating distances between locations, and querying for the nearest objects using specialized geospatial indexes. ([source](https://docs.rethinkdb.com/))
- [Pagination Utilities](https://awesome-repositories.com/f/data-databases/pagination-utilities.md) — RethinkDB paginates large datasets using limit, slice, or efficient range-based queries with secondary indexes to retrieve data in manageable chunks. ([source](https://rethinkdb.com/docs/cookbook/javascript/))
- [Sharding Orchestration](https://awesome-repositories.com/f/data-databases/sharding-orchestration.md) — RethinkDB allows configuring table sharding and replication settings through the web interface by specifying the desired number of shards and replicas for automatic cluster balancing. ([source](https://rethinkdb.com/docs/sharding-and-replication/))
- [Cluster Topology Management](https://awesome-repositories.com/f/data-databases/cluster-topology-management.md) — RethinkDB supports grouping servers into logical data centers by assigning tags on startup, allowing for precise control over where table replicas are stored. ([source](https://rethinkdb.com/docs/sharding-and-replication/))
- [Compound Indexes](https://awesome-repositories.com/f/data-databases/compound-indexes.md) — RethinkDB supports creating and querying compound secondary indexes using arrays of fields to retrieve documents based on multiple criteria or perform lexicographical sorting. ([source](https://rethinkdb.com/docs/secondary-indexes/javascript/))
- [Data Deduplication Tools](https://awesome-repositories.com/f/data-databases/data-deduplication-tools.md) — RethinkDB removes duplicate documents from a result set by excluding unique identifiers and applying distinct filters, then optionally inserting the cleaned results into a new table. ([source](https://rethinkdb.com/docs/reql-data-exploration/))
- [Data Enrichment Services](https://awesome-repositories.com/f/data-databases/data-enrichment-services.md) — RethinkDB stores and enriches external API data by inserting results into database tables and performing subsequent updates with additional information fetched from web services. ([source](https://rethinkdb.com/docs/external-api-access/))
- [Geospatial Extensions](https://awesome-repositories.com/f/data-databases/geospatial-extensions.md) — Storing and querying location-based information using specialized indexes to perform proximity searches and spatial calculations on coordinate data.
- [Multi-Value Indexes](https://awesome-repositories.com/f/data-databases/multi-value-indexes.md) — RethinkDB supports creating and querying multi-value secondary indexes that map a single document to multiple index keys, enabling efficient lookups for array-based fields. ([source](https://rethinkdb.com/docs/secondary-indexes/javascript/))
- [Relational Data Modeling](https://awesome-repositories.com/f/data-databases/relational-data-modeling.md) — RethinkDB models relationships across separate tables by using foreign keys and join operations to handle large datasets that exceed the size limits of embedded arrays. ([source](https://rethinkdb.com/docs/data-modeling/))
- [Result Ordering and Limiting](https://awesome-repositories.com/f/data-databases/result-ordering-and-limiting.md) — RethinkDB sorts documents by a specific field and restricts the number of returned results to display a subset of ordered data. ([source](https://rethinkdb.com/docs/reql-data-exploration/))
- [Schema Management](https://awesome-repositories.com/f/data-databases/schema-management.md) — RethinkDB creates, renames, and deletes databases or tables, and performs basic CRUD operations to maintain database and table structures. ([source](https://rethinkdb.com/docs/cookbook/javascript/))
- [Spatial Indexing](https://awesome-repositories.com/f/data-databases/spatial-indexing.md) — RethinkDB creates geospatial indexes on table fields, allowing for efficient spatial lookups and proximity searches within the database. ([source](https://rethinkdb.com/docs/geo-support/javascript/))
- [Storage Configuration Utilities](https://awesome-repositories.com/f/data-databases/storage-configuration-utilities.md) — Configures server storage paths, cache sizes, and I/O thread settings to control data persistence and local file system access. ([source](https://rethinkdb.com/docs/cli-options/))
- [Stream Optimization](https://awesome-repositories.com/f/data-databases/stream-optimization.md) — RethinkDB controls the delivery of rapid data updates by squashing multiple changes into single notifications or buffering individual events to optimize network latency. ([source](https://rethinkdb.com/docs/changefeeds/javascript/))
- [Temporal Data Ingestion](https://awesome-repositories.com/f/data-databases/temporal-data-ingestion.md) — RethinkDB inserts time values into database tables using native date objects, server-side time functions, epoch timestamps, or standard strings. ([source](https://rethinkdb.com/docs/dates-and-times/javascript/))

### DevOps & Infrastructure

- [Database Cluster Orchestration](https://awesome-repositories.com/f/devops-infrastructure/database-cluster-orchestration.md) — Deploying and maintaining scalable database clusters with automated failover, replication, and administrative tools for production environments.
- [High Availability Clusters](https://awesome-repositories.com/f/devops-infrastructure/high-availability-clusters.md) — RethinkDB maintains cluster availability through automatic failover, where voting replicas elect a new primary if the current one becomes unreachable, provided a majority remain online. ([source](https://rethinkdb.com/docs/architecture))
- [Database Deployment Automation](https://awesome-repositories.com/f/devops-infrastructure/database-deployment-automation.md) — RethinkDB automates the installation and configuration of database clusters using infrastructure-as-code tools and container orchestration platforms. ([source](https://rethinkdb.com/docs/deployment-tools/))
- [Database Proxying](https://awesome-repositories.com/f/devops-infrastructure/database-proxying.md) — RethinkDB allows running a proxy node on application servers to route queries directly to the correct database nodes, reducing network traffic and offloading query processing. ([source](https://rethinkdb.com/docs/sharding-and-replication/))
- [Container Orchestration Tools](https://awesome-repositories.com/f/devops-infrastructure/container-orchestration-tools.md) — RethinkDB deploys database instances using containerized images to simplify environment setup, version management, and cluster orchestration within containerized infrastructures. ([source](https://rethinkdb.com/docs/deployment-tools/))
- [Managed Cluster Orchestration](https://awesome-repositories.com/f/devops-infrastructure/managed-cluster-orchestration.md) — RethinkDB deploys hosted database clusters on managed platforms, connecting via encrypted tunnels for direct access or local-like network connectivity. ([source](https://rethinkdb.com/docs/paas/))

### Networking & Communication

- [Publish-Subscribe Systems](https://awesome-repositories.com/f/networking-communication/publish-subscribe-systems.md) — Implements a messaging architecture where publishers broadcast data to subscribers through centralized exchanges. ([source](https://rethinkdb.com/docs/publish-subscribe/javascript/))
- [Message Broker Consumers](https://awesome-repositories.com/f/networking-communication/message-broker-consumers.md) — RethinkDB consumes messages from a message broker by binding temporary queues to specific exchange topics and processing incoming data via custom callback functions. ([source](https://rethinkdb.com/docs/rabbitmq/javascript/))
- [Message Broker Producers](https://awesome-repositories.com/f/networking-communication/message-broker-producers.md) — RethinkDB streams database changes to a message broker by monitoring table changefeeds and publishing serialized change events to a topic exchange. ([source](https://rethinkdb.com/docs/rabbitmq/javascript/))

### Security & Cryptography

- [Access Control Lists](https://awesome-repositories.com/f/security-cryptography/access-control-lists.md) — RethinkDB assigns granular read, write, connect, and configuration permissions to users at global, database, or table scopes to control access to data and operations. ([source](https://rethinkdb.com/docs/permissions-and-accounts/))
- [Database Access Control](https://awesome-repositories.com/f/security-cryptography/database-access-control.md) — RethinkDB allows setting an initial password for the administrative user during server startup to ensure secure access to the database cluster. ([source](https://rethinkdb.com/docs/cli-options/))
- [Network Encryption](https://awesome-repositories.com/f/security-cryptography/network-encryption.md) — RethinkDB encrypts network traffic between servers, clients, and the web interface by generating certificates and configuring the server for secure communication. ([source](https://rethinkdb.com/docs/security/))
- [Administrative Security](https://awesome-repositories.com/f/security-cryptography/administrative-security.md) — RethinkDB assigns a password to the default admin account to prevent unauthorized cluster access using command-line options or system table updates. ([source](https://rethinkdb.com/docs/security/))
- [Network Connection Security](https://awesome-repositories.com/f/security-cryptography/network-connection-security.md) — RethinkDB protects the driver port by binding it to localhost and using encrypted tunnels to route client database connections through a secure network path. ([source](https://rethinkdb.com/docs/security/))
- [User Account Management](https://awesome-repositories.com/f/security-cryptography/user-account-management.md) — RethinkDB manages records in the system users table, including configuring custom password hashing iterations for improved security. ([source](https://rethinkdb.com/docs/permissions-and-accounts/))

### System Administration & Monitoring

- [Cluster Management Interfaces](https://awesome-repositories.com/f/system-administration-monitoring/cluster-management-interfaces.md) — Provides a browser-based interface to monitor and manage database cluster health and node configurations. ([source](https://rethinkdb.com/docs/administration-tools/))
- [Cluster Management Tools](https://awesome-repositories.com/f/system-administration-monitoring/cluster-management-tools.md) — Enables programmatic execution of administrative commands to manage sharding, replication, and complex cluster maintenance tasks. ([source](https://rethinkdb.com/docs/administration-tools/))
- [Database Administration Consoles](https://awesome-repositories.com/f/system-administration-monitoring/database-administration-consoles.md) — A unified environment for managing database nodes, storage configuration, and user permissions through both administrative commands and a visual interface.
- [Access Control Policies](https://awesome-repositories.com/f/system-administration-monitoring/access-control-policies.md) — RethinkDB restricts web interface access by binding the port to localhost and using proxies to safely expose the administration dashboard. ([source](https://rethinkdb.com/docs/security/))

### Web Development

- [Web Framework Adapters](https://awesome-repositories.com/f/web-development/web-framework-adapters.md) — RethinkDB integrates document-oriented databases into web applications using object-relational mappers that provide model definitions, schema synchronization, and familiar scaffolding workflows. ([source](https://rethinkdb.com/docs/rails))

### Development Tools & Productivity

- [Command Line Administration Tools](https://awesome-repositories.com/f/development-tools-productivity/command-line-administration-tools.md) — RethinkDB provides administrative subcommands to create server instances, manage data imports and exports, rebuild indexes, or install the database as a system service. ([source](https://rethinkdb.com/docs/cli-options/))
