RocksDB
RocksDB es una base de datos incrustada de alto rendimiento[1][2][3][4][5] para datos de clave-valor. Es un fork de LevelDB, optimizado para explotar múltiples núcleos de CPU, y hacer uso eficiente de dispositivos de almacenamiento rápido como Unidad de estado sólido en cargas de trabajo de Entrada/Salida (E/S) limitada. Está basado en la estructura de datos de árbol LSM (Log-structured merge-tree). Está escrito en C++ y provee una API de lenguaje oficial para C++, C y Java, junto a varios enlaces de lenguajes de terceros. RocksDB es de código abierto, publicado bajo la Licencia BSD de 3 cláusulas.[6][7][8] RocksDB es usando en sistemas de producción en varios sitios web de escala empresarial,[9] incluyendo Facebook, Yahoo!,[10] y LinkedIn.[11] CaracterísticasAl igual que LevelDB, 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 datos SQL (a pesar de que MyRocks combina RocksDB con MySQL). Como otros sistemas de almacenamiento como NoSQL y dbm, RocksDB no posee un modelo 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. HistoriaRocksDB fue creado en Facebook por Dhruba Borthakur[20][21] en abril de 2012, como un fork de LevelDB, con el objetivo principal de mejorar el rendimiento en las cargas del servidor.[22][23] IntegraciónComo una base de datos incrustada, RocksDB puede ser usado como un mecanismo de almacenamiento junto con gestores de bases de datos mayores. Por ejemplo, CockroachDB usa RocksDB como su mecanismo de almacenamiento.[24] Backends alternativosLos 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: MongoDBEl proyecto MongoRocks provee un módulo de almacenamiento para MongoDB, en el cual el mecanismo de almacenamiento es RocksDB.[25][26][27] Un programa relacionado es Rocks Strata, una herramienta escrita en Go, el cual permite manejar respaldos incrementales de MongoDB donde RocksDB es usado como mecanismo de almacenamiento.[28] MySQLEl proyecto MyRocks crea un nuevo mecanismo de almacenamiento para MySQL basado en RocksDB.[29][30] En el Percona Live 2016 se presentaron detalles en profundidad de MyRocks.[31] TiDB[32]Una base de datos distribuida NewSQL orientada a ser una alternativa compatible con MySQL, posee un número de backends conectables, entre ellos RocksDB.[33] IncrustadosLos siguientes sistemas de bases de datos eligieron usar RocksDB como su mecanismo de almacenamiento incrustado: DgraphEl proyectp Dgraph[34] usa RocksDB como el motor de su base de datos.[35] NoSQLGraph Database. SSDBEl proyectp ssdb-rocks[36] usa RocksDB como mecanismo de almacenamiento NoSQL de SSDB.[37] NoSQL Database. Enlaces de lenguaje de tercerosLos enlaces de lenguaje de terceros disponibles para RocksDB incluyen:
Referencias
Enlaces externos |