De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

RocksDB es una base de datos incrustada de alto rendimiento [2] [3] [4] [5] [6] para datos clave-valor . Es una bifurcación de LevelDB de Google optimizada para explotar muchos núcleos de CPU y hacer un uso eficiente del almacenamiento rápido, como unidades de estado sólido (SSD), para cargas de trabajo vinculadas de entrada / salida (E / S) . Se basa en una estructura de datos de árbol de fusión estructurado por registros (árbol LSM). Está escrito en C ++ y proporciona enlaces de idioma oficiales para C ++ , C y Java ; junto a muchosenlaces de idiomas de terceros . RocksDB es un software de código abierto y se lanzó 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] posiblemente en respuesta a la lista negra de la Apache Software Foundation de la cláusula de licencia BSD + Patentes anterior. . [11] [12]

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

Funciones [ editar ]

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

RocksDB proporciona todas las características de LevelDB, más:

  • Transacciones [16]
  • Copias de seguridad [17] e instantáneas [18]
  • Familias de columnas [19]
  • Filtros de floración [20]
  • Soporte de Time to Live (TTL) [21]
  • Compactación universal [22]
  • Combinar operadores [23]
  • Recopilación de estadísticas [24]
  • Indexación geoespacial [25]

y otros: Lista de características de RocksDB que no están en LevelDB .

RocksDB no es una base de datos SQL (aunque MyRocks combina RocksDB con MySQL ). Al igual que otras tiendas NoSQL y dbm , no tiene un modelo de datos relacionales y no admite consultas SQL. Además, no tiene soporte directo para índices secundarios, sin embargo, un usuario puede crear los suyos propios internamente usando familias de columnas o externamente. Las aplicaciones usan RocksDB como biblioteca, ya que no proporciona un servidor o una interfaz de línea de comandos.

Historia [ editar ]

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

Integración [ editar ]

Como base de datos integrable, RocksDB se puede utilizar como motor de almacenamiento dentro de un sistema de gestión de bases de datos (DBMS) más grande . Por ejemplo, CockroachDB usa RocksDB como su motor de almacenamiento, [30] principalmente para cargas de trabajo transaccionales, mientras que Rockset usa RocksDB principalmente para procesamiento de datos analíticos. Esto demuestra que RocksDB se puede utilizar como un motor de almacenamiento tanto para el procesamiento de transacciones en línea y procesamiento analítico en línea .

Backend alternativo [ editar ]

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 [ editar ]

ArangoDB ha agregado RocksDB a su motor de almacenamiento anterior ("mmfiles"). [31] A partir de ArangoDB 3.4, RocksDB será el motor de almacenamiento predeterminado en ArangoDB. [32]

Cassandra [ editar ]

Cassandra en RocksDB puede mejorar significativamente el rendimiento de Apache Cassandra (de 3 a 4 veces más rápido en general, 100 veces más rápido en algunos casos de uso). [ cita requerida ] El equipo de Instagram en Facebook desarrolló y abrió su código, junto con puntos de referencia de sus resultados de rendimiento. [33]

MariaDB [ editar ]

MariaDB puede usar el motor de almacenamiento MyRocks (que se bifurca desde RocksDB) desde MariaDB 10.2.5 (estado Alpha) [34] y estable desde MariaDB 10.2.16 en 2018. [35]

MongoDB [ editar ]

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

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

MySQL [ editar ]

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

Incrustado [ editar ]

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

BlueStore de Ceph [ editar ]

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

Apache Flink [ editar ]

Apache Flink usa RocksDB para almacenar puntos de control. [44]

FusionDB [ editar ]

FusionDB [45] usa RocksDB como su motor de almacenamiento para XML, Key / Value y JSON. [46]

LogDevice LogsDB [ editar ]

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

Rockset [ editar ]

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

SSDB [ editar ]

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

TiDB [ editar ]

El proyecto TiDB [51] utiliza RocksDB como motor de almacenamiento. [52]

Vinculaciones de idioma de terceros [ editar ]

Los enlaces de lenguaje de programación de terceros disponibles para RocksDB incluyen:

  • C # [53]
  • D [54]
  • Elixir [55]
  • Erlang [56] [57]
  • Ir [58]
  • Haskell [59]
  • Java [60]
  • Node.js [61]
  • Objective-C y Swift [62]
  • OCaml [63] [64]
  • Perl [65]
  • PHP [66]
  • Prólogo [67]
  • Python [68]
  • Rubí [69]
  • Óxido [70]

Referencias [ editar ]

  1. ^ "RocksDB 6.15.5" . 5 de febrero de 2021 . Consultado el 13 de marzo de 2021 .
  2. ^ "Puntos de referencia de rendimiento" . Consultado el 29 de noviembre de 2015 .
  3. ^ "Evaluación comparativa de la familia leveldb" . Consultado el 10 de marzo de 2016 .
  4. ^ "Comparando LevelDB y RocksDB, toma 2" . Consultado el 10 de marzo de 2016 .
  5. ^ "Evaluación comparativa LevelDB frente a RocksDB frente a HyperLevelDB frente al rendimiento de LMDB para InfluxDB" . 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 estructurados por registros simultáneos". EuroSys '15 Actas de la Décima Conferencia Europea de Sistemas Informáticos . doi : 10.1145 / 2741948.2741973 .
  7. ^ "El último esfuerzo de código abierto de Facebook: una base de datos basada en flash llamada RocksDB" . Consultado el 10 de marzo de 2016 .
  8. ^ "Bajo el capó: construcción y RocksDB de código abierto" . Consultado el 10 de marzo de 2016 .
  9. ^ "RocksDB - Base de datos de Facebook ahora de código abierto" . Consultado el 10 de marzo de 2016 .
  10. ^ "Solicitud de extracción de GitHub" . Consultado el 20 de julio de 2017 .
  11. ^ "Apache dice 'no' a las bibliotecas de códigos de Facebook" . Consultado el 20 de julio de 2017 .
  12. ^ "Problema de GitHub" . Consultado el 20 de julio de 2017 .
  13. ^ "Usuarios.md" . Consultado el 1 de diciembre de 2015 .
  14. ^ "RocksDB con esteroides" . Consultado el 10 de marzo de 2016 .
  15. ^ "Benchmarking 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?" . Consultado el 19 de julio de 2017 .
  18. ^ "Puntos de control" . Consultado el 19 de julio de 2017 .
  19. ^ "Familias de columnas en RocksDB" . GitHub . Consultado el 4 de abril de 2016 .
  20. ^ "Filtros de floración 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 combinación de RocksDB" . GitHub . Consultado el 4 de abril de 2016 .
  24. ^ "Contexto perf RocksDB y contexto de estadísticas IO" . GitHub . Consultado el 4 de abril de 2016 .
  25. ^ "Indexación espacial en RocksDB" . rocksdb.org . Consultado el 19 de julio de 2018 .
  26. ^ "Primera confirmación donde RocksDB diverge de LevelDB" . 10 de mayo de 2012 . Consultado el 15 de marzo de 2016 .
  27. ^ "archivo Léame de rocksdb" . 30 de noviembre de 2012 . Consultado el 15 de marzo de 2016 .
  28. ^ "La historia de RocksDB" . 24 de noviembre de 2013 . Consultado el 10 de marzo de 2016 .
  29. ^ Borthakur, Dhruba (22 de noviembre de 2013). "RocksDB: un almacén de valor clave integrado de alto rendimiento para almacenamiento flash - Data @ Scale" . Consultado el 10 de marzo de 2016 . ... La historia de por qué decidimos hacer RocksDB ...
  30. Edwards, Jessica (29 de octubre de 2015). "Hola mundo: Conoce a CockroachDB, la base de datos SQL resistente" . La nueva pila . Consultado el 8 de julio de 2016 .
  31. ^ "Comparación de nuevos motores de almacenamiento de RocksDB y MMFiles" .
  32. ^ "RC1 ArangoDB 3.4 - ¿Qué hay de nuevo?" .
  33. ^ "Código abierto una reducción de 10 veces en la latencia de la cola de Apache Cassandra" .
  34. ^ "MyRocks" . KnowledgeBase de MariaDB . Consultado el 28 de abril de 2019 .
  35. ^ https://mariadb.com/kb/en/mariadb-10216-release-notes/
  36. ^ "mongodb-partners / mongo-rocks" .
  37. ^ "Integración de RocksDB con MongoDB" . Consultado el 19 de julio de 2018 .
  38. ^ "MongoDB + RocksDB en Parse" . Consultado el 1 de diciembre de 2015 .
  39. ^ "facebookgo / rocks-strata" .
  40. ^ "facebook / mysql-5.6" .
  41. ^ "MyRocks: MySQL en RocksDB" (PDF) . Consultado el 29 de noviembre de 2015 .
  42. ^ "MyRocks Deep Dive" . Consultado el 9 de mayo de 2016 .
  43. ^ "Dispositivos de almacenamiento - documentación de Ceph" .
  44. ^ "Documentación de Apache Flink 1.8: State Backends" . ci.apache.org . Consultado el 11 de agosto de 2019 .
  45. ^ "FusionDB" . Binario evolucionado.
  46. ^ "El diseño y la implementación de FusionDB" (PDF) . XML Praga.
  47. ^ "LogDevice: un almacén de datos distribuido para registros" . Mark Marchukov, Facebook.
  48. ^ "Cómo usamos RocksDB en Rockset" . rockset.com . Consultado el 10 de julio de 2019 .
  49. ^ "ideawu / ssdb-rocks" .
  50. ^ https://ssdb.io
  51. ^ "pingcap / tidb" .
  52. ^ "TiDB interno (I) - Almacenamiento de datos" . Shen Li.
  53. ^ "warrenfalk / rocksdb-sharp" .
  54. ^ "b1naryth1ef / rocksdb" .
  55. ^ "urbint / rox" .
  56. ^ "proyecto-leo / erocksdb" .
  57. ^ "barril-db / erlang-rocksdb" .
  58. ^ "tecbot / gorocksdb" .
  59. ^ "rocksdb-haskell: enlaces de Haskell a RocksDB" .
  60. ^ "RocksJava" .
  61. ^ "rocksdb" .
  62. ^ "iabudiab / ObjectiveRocks" .
  63. ^ "Enlaces OCaml para RocksDB" .
  64. ^ "Un enlace OCaml RocksDb usando ocaml-ctypes" .
  65. ^ "RocksDB - Extensión de Perl para RocksDB - metacpan.org" .
  66. ^ "Photonios / rocksdb-php" .
  67. ^ "Interfaz SWI-Prolog para RocksDB" .
  68. ^ "stephan-hof / pyrocksdb" .
  69. ^ "rocksdb-ruby - RubyGems.org - su anfitrión de gemas de la comunidad" .
  70. ^ "spacejam / rust-rocksdb" .

Enlaces externos [ editar ]

  • Página web oficial