| RocksDB | ||
|---|---|---|
| Información general | ||
| Tipo de programa | base de datos embebida | |
| Desarrollador | Meta Platforms | |
| Modelo de desarrollo | Código abierto | |
| Licencia | Licencia BSD de 3 cláusulas | |
| Información técnica | ||
| Programado en | C++ | |
| Plataformas admitidas | ||
| Versiones | ||
| Última versión estable | 10.2.124 de abril de 2025 | |
| Enlaces | ||
RocksDB es unabase de datos incrustada de alto rendimiento[1][2][3][4][5] para datos de clave-valor. Es unfork deLevelDB, optimizado para explotar múltiples núcleos deCPU, y hacer uso eficiente de dispositivos de almacenamiento rápido comoUnidad de estado sólido en cargas de trabajo de Entrada/Salida (E/S) limitada. Está basado en laestructura de datos de árbol LSM (Log-structured merge-tree). Está escrito enC++ y provee una API de lenguaje oficial paraC++,C yJava, junto a variosenlaces de lenguajes de terceros. RocksDB es decódigo abierto, publicado bajo laLicencia BSD de 3 cláusulas.[6][7][8]
RocksDB es usando en sistemas de producción en varios sitios web de escala empresarial,[9] incluyendoFacebook,Yahoo!,[10] yLinkedIn.[11]
Al igual queLevelDB, RocksDB almacena claves y valores en arrays de bytes arbitrarios, y los datos son ordenados mediante byte por clave, o proveyendo un comparador personalizado.
RocksDB provee todas las características de LevelDB, además de:
RocksDB no es una base de datosSQL (a pesar de que MyRocks combina RocksDB conMySQL). Como otros sistemas de almacenamiento comoNoSQL y dbm, RocksDB no posee unmodelo relacional, y no soporta consultas SQL. Además, no posee soporte directo para índices secundarios,sin embargo, un usuario puede crear la suya propia internamente usando Familias de columnas o externamente. Las aplicaciones usan RocksDB como una biblioteca, ya que no provee una interfaz de servidor o línea de comandos.
RocksDB fue creado enFacebook por Dhruba Borthakur[20][21] en abril de 2012, como unfork de LevelDB, con el objetivo principal de mejorar el rendimiento en las cargas del servidor.[22][23]
Como una base de datos incrustada, RocksDB puede ser usado como un mecanismo de almacenamiento junto congestores de bases de datos mayores. Por ejemplo,CockroachDB usa RocksDB como su mecanismo de almacenamiento.[24]
Los siguientes proyectos se han iniciado para ofrecer o reemplazar un mecanismo de almacenamiento alternativo para los sistemas de base de datos ya establecidos con RocksDB:
El proyecto MongoRocks provee un módulo de almacenamiento paraMongoDB, en el cual el mecanismo de almacenamiento es RocksDB.[25][26][27]
Un programa relacionado es Rocks Strata, una herramienta escrita enGo, el cual permite manejar respaldos incrementales de MongoDB donde RocksDB es usado como mecanismo de almacenamiento.[28]
El proyecto MyRocks crea un nuevomecanismo de almacenamiento paraMySQL basado en RocksDB.[29][30] En elPercona Live 2016 se presentaron detalles en profundidad de MyRocks.[31]
Unabase de datos distribuida NewSQL orientada a ser una alternativa compatible con MySQL, posee un número debackends conectables, entre ellos RocksDB.[33]
Los siguientes sistemas de bases de datos eligieron usar RocksDB como su mecanismo de almacenamiento incrustado:
El proyectp Dgraph[34] usa RocksDB como el motor de su base de datos.[35] NoSQLGraph Database.
El proyectp ssdb-rocks[36] usa RocksDB como mecanismo de almacenamiento NoSQL de SSDB.[37] NoSQL Database.
Los enlaces de lenguaje de terceros disponibles para RocksDB incluyen: