Articulo de referencia

Base de datos de rocas

RocksDB es una base de datos integrada de alto rendimiento [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] para datos clave-valor . Es una bifurcación de LevelDB de Google optimizada para explota...

RocksDB es una base de datos integrada de alto rendimiento [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] para datos clave-valor . Es una bifurcación de LevelDB de Google optimizada para explotar procesadores multinúcleo (CPU) y hacer un uso eficiente del almacenamiento rápido, como las unidades de estado sólido (SSD), para cargas de trabajo limitadas por entrada/salida (E/S) . Se basa en una estructura de datos de árbol de fusión estructurado por registro (árbol LSM). Está escrita en C++ y proporciona enlaces de lenguaje oficiales para C++ , C y Java . Existen muchos enlaces de lenguaje de terceros . RocksDB es software libre y de código abierto , publicado originalmente bajo una licencia BSD de 3 cláusulas . [ 7 ] [ 8 ] [ 9 ] Sin embargo, en julio de 2017 el proyecto se migró a una licencia dual de Apache 2.0 y GPLv2 . [ 10 ] Este cambio ayudó a su adopción en los proyectos de Apache Software Foundation después de la inclusión en la lista negra de la cláusula de licencia BSD+Patents anterior. [ 11 ] [ 12 ]

RocksDB se utiliza en sistemas de producción en varias empresas a escala web [ 13 ] incluyendo Facebook , Yahoo !, [ 14 ] y LinkedIn . [ 15 ]

Características

RocksDB, al igual que LevelDB , almacena claves y valores en matrices de bytes arbitrarias, y los datos se ordenan byte a byte por clave o proporcionando un comparador personalizado.

RocksDB ofrece todas las características de LevelDB, además de:

y otros. [ 26 ]

RocksDB no es una base de datos SQL (aunque MyRocks combina RocksDB con MySQL ). Al igual que otras bases de datos NoSQL y dbm , carece de un modelo de datos relacional y no admite consultas SQL. Tampoco ofrece soporte directo para índices secundarios; sin embargo, el usuario puede crearlos internamente mediante Column Families o externamente. Las aplicaciones utilizan RocksDB como una biblioteca , ya que no proporciona un servidor ni una interfaz de línea de comandos .

Historia

RocksDB fue creado en Facebook por Dhruba Borthakur [ 27 ] [ 28 ] en abril de 2012, como una bifurcación de LevelDB con el objetivo inicial declarado de mejorar el rendimiento para cargas de trabajo de servidor. [ 29 ] [ 30 ]

Integración

Como base de datos integrable, RocksDB puede utilizarse como motor de almacenamiento dentro de un sistema de gestión de bases de datos (DBMS) más amplio. Por ejemplo, Rockset utiliza RocksDB [ 31 ] principalmente para el procesamiento de datos analíticos.

Backend alternativo

Se han iniciado los siguientes proyectos para reemplazar u ofrecer motores de almacenamiento alternativos para sistemas de bases de datos ya establecidos con RocksDB:

ArangoDB

ArangoDB ha añadido RocksDB a su motor de almacenamiento anterior ("mmfiles"). [ 32 ] RocksDB es el motor de almacenamiento predeterminado desde ArangoDB 3.4. [ 33 ]

Cassandra

El equipo de Instagram en Facebook desarrolló y publicó su código como código abierto, junto con pruebas comparativas de sus resultados de rendimiento. [ 34 ]

María DB

MariaDB puede usar el motor de almacenamiento MyRocks (que es una bifurcación de RocksDB) desde MariaDB 10.2.5 (estado Alpha) [ 35 ] y estable desde MariaDB 10.2.16 en 2018. [ 36 ]

MongoDB

El proyecto MongoRocks proporciona un módulo de almacenamiento para MongoDB donde el motor de almacenamiento es RocksDB. [ 37 ] [ 38 ] [ 39 ]

Un programa relacionado es Rocks Strata, una herramienta escrita en Go , que permite gestionar copias de seguridad incrementales de MongoDB cuando se utiliza RocksDB como motor de almacenamiento. [ 40 ]

MySQL

El proyecto MyRocks creó un nuevo motor de almacenamiento basado en RocksDB para MySQL . [ 41 ] [ 42 ] Se presentaron detalles en profundidad sobre MyRocks en Percona Live 2016. [ 43 ]

Oxígrafo

Oxigraph [ 44 ] es una base de datos de grafos que implementa el estándar SPARQL , basada en RocksDB.

Vehículos del Reino Unido

El proyecto UKV [ 45 ] permite a los usuarios utilizar RocksDB al mismo nivel que LevelDB como almacén subyacente de clave-valor . Representa una abstracción compartida para las operaciones de creación, lectura, actualización y eliminación (CRUD) comunes a todos los motores de almacenamiento. La complementa con enlaces estructurados para varios lenguajes de alto nivel, incluidos Python , Java y Go .

Incorporado

Los siguientes sistemas y aplicaciones de bases de datos han optado por utilizar RocksDB como su motor de almacenamiento integrado:

Tienda Azul de Ceph

La capa de almacenamiento BlueStore de Ceph utiliza RocksDB para la gestión de metadatos en dispositivos OSD. [ 46 ]

Apache Flink utiliza RocksDB para almacenar puntos de control. [ 47 ]

FusionDB

FusionDB [ 48 ] utiliza RocksDB como su motor de almacenamiento para XML, Clave/Valor y JSON. [ 49 ]

Dispositivo de registro Base de datos de registros

LogsDB de LogDevice está construido sobre RocksDB. [ 50 ]

Flujos de Kafka

Kafka Streams utiliza RocksDB para sus almacenes de estado. [ 51 ]

Manhattan

El Manhattan Distributed Key-Value Store ha utilizado RocksDB como su motor principal para almacenar datos de Twitter desde 2018. [ 52 ]

Rockset

El servicio Rockset [ 53 ] que se utiliza para el análisis de datos operativos utiliza RocksDB como su motor de almacenamiento. [ 54 ]

SSDB

El proyecto ssdb-rocks [ 55 ] utiliza RocksDB como motor de almacenamiento para la base de datos NoSQL SSDB [ 56 ] .

TiDB

El proyecto TiDB [ 57 ] utiliza RocksDB como su motor de almacenamiento. [ 58 ]

YugabyteDB

La base de datos YugabyteDB utiliza una versión modificada de RocksDB como parte de su motor de almacenamiento DocDB. [ 59 ]

Enlaces de idioma de terceros

Entre las bibliotecas de lenguajes de programación de terceros disponibles para RocksDB se incluyen:

Véase también

Referencias

  1. . 24 de abril de 2025 https://github.com/facebook/rocksdb/releases/tag/v10.2.1 . Consultado el 24 de abril de 2025 .{{cite web}}: Falta o está vacío |title=( ayuda )
  2. "Pruebas de rendimiento" . GitHub . Consultado el 29 de noviembre de 2015 .
  3. "Evaluación comparativa de la familia leveldb" . 7 de julio de 2014. Consultado el 10 de marzo de 2016 .
  4. "Comparando LevelDB y RocksDB, toma 2" . 27 de abril de 2015. Consultado el 10 de marzo de 2016 .
  5. "Comparativa de rendimiento de LevelDB frente a RocksDB frente a HyperLevelDB frente a LMDB para InfluxDB" . 20 de junio de 2014. Consultado el 10 de marzo de 2016 .
  6. Golan-Gueta, Guy; Bortnikov, Edward; Hillel, Eschar; Keidar, Idit (21 de abril de 2015). «Escalado de almacenes de datos concurrentes con estructura de registro». Actas de la Décima Conferencia Europea sobre Sistemas Informáticos . págs. 1–14 . doi : 10.1145/2741948.2741973 . ISBN  9781450332385. S2CID 5849146 . 
  7. "El último proyecto de código abierto de Facebook: una base de datos basada en Flash llamada RocksDB" . 21 de noviembre de 2013. Archivado del original el 24 de febrero de 2020. Consultado el 10 de marzo de 2016 .
  8. "Bajo el capó: Construyendo y publicando RocksDB como código abierto" . Facebook . Consultado el 10 de marzo de 2016 .
  9. "RocksDB - La base de datos de Facebook ahora es de código abierto" . Consultado el 10 de marzo de 2016 .
  10. "Solicitud de extracción de GitHub" . GitHub . Consultado el 20 de julio de 2017 .
  11. "Apache dice 'no' a las bibliotecas de código de Facebook" . The Register . Consultado el 20 de julio de 2017 .
  12. "Problema de GitHub" . GitHub . Consultado el 20 de julio de 2017 .
  13. "Users.md" . GitHub . Consultado el 1 de diciembre de 2015 .
  14. "RocksDB con esteroides" . Consultado el 10 de marzo de 2016 .
  15. "Pruebas de rendimiento de Apache Samza: 1,2 millones de mensajes por segundo en un solo nodo" . Consultado el 10 de marzo de 2016 .
  16. "Transacciones de RocksDB" . GitHub . Consultado el 4 de abril de 2016 .
  17. "¿Cómo hacer una copia de seguridad de RocksDB?" . GitHub . Consultado el 19 de julio de 2017 .
  18. "Puntos de control" . GitHub . Consultado el 19 de julio de 2017 .
  19. "Familias de columnas en RocksDB" . GitHub . Consultado el 4 de abril de 2016 .
  20. "Filtros bloom de RocksDB" . GitHub . Consultado el 4 de abril de 2016 .
  21. "Soporte TTL de RocksDB" . GitHub . Consultado el 4 de abril de 2016 .
  22. "Compactación universal" . GitHub . Consultado el 4 de abril de 2016 .
  23. "Operador de fusión de RocksDB" . GitHub . Consultado el 4 de abril de 2016 .
  24. "Contexto de rendimiento de RocksDB y contexto de estadísticas de E/S" . GitHub . Consultado el 4 de abril de 2016 .
  25. "Indexación espacial en RocksDB" . rocksdb.org . Consultado el 19 de julio de 2018 .
  26. "Funciones que no están en LevelDB" . GitHub .
  27. "Primer commit donde RocksDB diverge de LevelDB" . GitHub . 10 de mayo de 2012. Consultado el 15 de marzo de 2016 .
  28. "Archivo readme de Rocksdb" . GitHub . 30 de noviembre de 2012. Consultado el 15 de marzo de 2016 .
  29. "La historia de RocksDB" . 24 de noviembre de 2013. Consultado el 10 de marzo de 2016 .
  30. Borthakur, Dhruba (22 de noviembre de 2013). "RocksDB: Un almacén de clave-valor integrado de alto rendimiento para almacenamiento flash - Data@Scale" . YouTube . Consultado el 10 de marzo de 2016. ... La historia de por qué decidimos crear RocksDB ...  
  31. Dhoot, Sandeep (27-06-2019). "Cómo usamos RocksDB en Rockset" . rockset.com . Consultado el 01-03-2023 .
  32. "Comparación de los nuevos motores de almacenamiento RocksDB y MMFiles" . ArangoDB .
  33. "RC1 ArangoDB 3.4 - ¿Qué hay de nuevo?" . 6 de septiembre de 2018.
  34. "Reducción de 10 veces en la latencia de cola de Apache Cassandra mediante código abierto" . 5 de marzo de 2018.
  35. "MyRocks" . Base de conocimientos de MariaDB . Consultado el 28 de abril de 2019 .
  36. "Notas de la versión de MariaDB 10.2.16" . Base de conocimientos de MariaDB .
  37. "mongodb-partners/mongo-rocks" . GitHub . 29 de octubre de 2021.
  38. "Integración de RocksDB con MongoDB" . Consultado el 19 de julio de 2018 .
  39. "MongoDB + RocksDB en Parse" . Consultado el 1 de diciembre de 2015 .
  40. "facebookgo/rocks-strata" . GitHub . 31 de octubre de 2021.
  41. "facebook/mysql-5.6" . GitHub . 2 de noviembre de 2021.
  42. "MyRocks: MySQL en RocksDB" (PDF) . Consultado el 29 de noviembre de 2015 .
  43. "Análisis en profundidad de MyRocks" . 19 de abril de 2016. Consultado el 9 de mayo de 2016 .
  44. Pellissier Tanon, Thomas (12 de julio de 2024). «Oxígrafo» . doi : 10.5281/zenodo.7408022 vía GitHub.
  45. 1 2 3 4 5 "unum-cloud/ukv" . GitHub . 28 de diciembre de 2022.
  46. "Dispositivos de almacenamiento - Documentación de Ceph" . Archivado del original el 24 de febrero de 2020. Consultado el 8 de noviembre de 2017 .
  47. "Documentación de Apache Flink 1.8: Backends de estado" . ci.apache.org . Consultado el 11 de agosto de 2019 .
  48. "FusionDB" . Binario evolucionado.
  49. "Diseño e implementación de FusionDB" (PDF) . XML Praga.
  50. "LogDevice: un almacén de datos distribuido para registros" . Mark Marchukov, Facebook. 31 de agosto de 2017.
  51. "Configuración de una aplicación de flujos" . kafka.apache.org . Consultado el 11 de marzo de 2024 .
  52. "Adopción de RocksDB en Manhattan" . Twitter . 28 de diciembre de 2022.
  53. "Rockset: Base de datos de búsqueda y análisis" . rockset.com .
  54. "Cómo usamos RocksDB en Rockset" . rockset.com . Consultado el 10 de julio de 2019 .
  55. "ideawu/ssdb-rocks" . GitHub . 21 de agosto de 2021.
  56. "Inicio" . ID-2Sbo .
  57. «pingcap/tidb» . GitHub . 4 de noviembre de 2021.
  58. «TiDB Interno (I) - Almacenamiento de datos» . Shen Li. 11 de julio de 2017.
  59. "¿Cómo construimos un almacén de documentos de alto rendimiento en RocksDB?" 20 de febrero de 2019.
  60. "warrenfalk/rocksdb-sharp" . GitHub . 28 de septiembre de 2021.
  61. "Enlaces de RocksDB para CHICKEN Scheme 5" . wiki.call-cc.org . Consultado el 13 de julio de 2024 .
  62. "b1naryth1ef/rocksdb" . GitHub . 22 de octubre de 2019.
  63. "urbint/rox" . GitHub . Septiembre de 2021.
  64. "leo-project/erocksdb" . GitHub . Septiembre de 2021.
  65. "barrel-db / erlang-rocksdb · GitLab" . GitLab .
  66. "tecbot/gorocksdb" . GitHub . 29 de octubre de 2021.
  67. "rocksdb-haskell" . Hackage .
  68. "RocksJava" . GitHub .
  69. "RocksDB-Android" . GitHub .
  70. "RocksDB Kotlin Multiplatform" . GitHub .
  71. "rocksdb" . 25 de marzo de 2022.
  72. "rocksdb" . GitHub .
  73. "iabudiab/ObjectiveRocks" . GitHub . 2 de agosto de 2021.
  74. "Enlaces OCaml para RocksDB" . GitHub . 8 de octubre de 2021.
  75. "Un enlace de OCaml a RocksDb usando ocaml-ctypes" . GitHub . 28 de septiembre de 2020.
  76. "RocksDB" . MetaCPAN .
  77. "Photonios/rocksdb-php" . GitHub . 11 de agosto de 2021.
  78. "Paquete "rocksdb" para SWI-Prolog" . www.swi-prolog.org .
  79. "stephan-hof/pyrocksdb" . GitHub . 27 de octubre de 2021.
  80. "rocksdb-ruby | RubyGems.org | tu servidor de gemas de la comunidad" . rubygems.org .
  81. "rust-rocksdb/rust-rocksdb" . GitHub . 11 de julio de 2024.
  • Sitio web oficial