DBM (informática)

En informática, una DBM es una biblioteca y un formato de archivo que proporciona acceso rápido y con una sola tecla a los datos. Siendo una base de datos de valores clave del Unix original, dbm es uno de los primeros ejemplos de un sistema NoSQL.

HistoriaEditar

La biblioteca original y el forma de archivo de dbm eran simplemente un motor de base de datos, escrito por Ken Thompson y publicado por AT&T en 1979. El nombre es un acrónimo de tres letras que significan DataBase Manager, que también puede referenciar a la familia de motores de base de datos con APIs y funciones derivadas del primer dbm.

La biblioteca dbm almacena datos arbitrarios usando una sola clave (una clave primaria ) en cubos de tamaño fijo y usa técnicas de hashing para permitir la recuperación rápida de los datos por clave.

El esquema de hash utilizado es una forma de hash extensible, de modo que el esquema de hash se expande a medida que se agregan nuevos depósitos a la base de datos, lo que significa que, cuando está casi vacía, la base de datos comienza con un depósito, que luego se divide cuando se llena. Los dos depósitos secundarios resultantes se dividirán cuando se llenen, por lo que la base de datos crece a medida que se agregan claves.

La biblioteca dbm y sus derivados son bases de datos pre- relacionales – administran matrices asociativas, implementadas como tablas hash en disco. En la práctica, pueden ofrecer una solución más práctica para el almacenamiento de alta velocidad al que se accede por clave, ya que no requieren la sobrecarga de conexión y preparación de consultas. Esto se equilibra con el hecho de que, por lo general, solo se pueden abrir para escritura por un único proceso a la vez. Un agente demonio puede manejar solicitudes de múltiples procesos, pero introduce una sobrecarga de IPC .

ImplementacionesEditar

La biblioteca dbm original de AT&T ha sido reemplazada por muchas de sus implementaciones sucesivas. Algunos ejemplos notables son:

  • ndbm ("new dbm"), basado en el dbm original con algunas características nuevas.
  • GDBM ("GNU dbm"), reescritura de GNU de la biblioteca que implementa las características de ndbm y su propia interfaz.
  • sdbm ("small dbm"), una reescritura de dominio público de dbm . Es parte de las distribuciones estándar de Perl y Ruby . [1][2]
  • qdbm, un dbm de mayor rendimiento que utiliza muchas de las mismas técnicas que Tokyo Cabinet / Kyoto. Escrito por el mismo autor antes de pasar a los gabinetes. [3]
  • tdb, una base de datos simple utilizada por Samba que admite varios escritores. Tiene una API basada en gdbm. [4]
  • Berkeley DB, 1991 reemplazo de ndbm por Sleepycat Software (ahora Oracle ) creado para evitar los derechos de autor de AT&T Unix en BSD . Cuenta con muchas extensiones como paralelismo, control transaccional, hash y almacenamiento de árbol B.
  • LMDB : implementación de árbol B + de copia en escritura mapeada en memoria en C con una API de estilo Berkeley.

Las siguientes bases de datos están inspiradas en dbm, pero no proporcionan directamente una interfaz dbm, aunque sería trivial empaquetar una:

DisponibilidadEditar

En 2001, la implementación ndbm de DBM era estándar en Solaris e IRIX, donde gdbm es ubicuo en Linux . Las implementaciones Berkeley DB eran comunes en algunos sistemas operativos gratuito.[7]​ Después de un cambio de licencia de Berkeley DB a GNU AGPL en 2013, proyectos como Debian se han trasladado a LMDB. [8]

FiabilidadEditar

En 2018, un test de fuzzing AFL,usado en muchas bases de datos de la familia DBM, expuso bastantes problemas en la implementación cuando se intenta corromper o invalidar ficheros de la base de datos. Solo freecdb de Daniel J. Bernstein no tuvo problemas. Los autores de gdbm, tdb y lmdb respondieron rápidamente. Berkeley DB se quedó atrás debido a la gran cantidad de otros problemas; [7]​ las correcciones serían irrelevantes para los usuarios de software de código abierto debido a que el cambio de licencia los bloqueaba en una versión anterior. [8]

Ver tambiénEditar

ReferenciasEditar

  1. yigit, ozan. «sdbm.bun». cse.yorku.ca. Consultado el 8 de mayo de 2019. 
  2. «class SDBM». Documentation for Ruby 2.4.0. «Note that Ruby comes with the source code for SDBM, while the DBM and GDBM standard libraries rely on external libraries and headers.» 
  3. «QDBM: Quick Database Manager». fallabs.com. 2006. 
  4. «tdb: Main Page». tdb.samba.org. 
  5. «Tokyo Cabinet第1版基本仕様書» [Fundamental Specifications of Tokyo Cabinet Version 1]. Fall Labs (en japonés). 5 August 2010. Archivado desde el original el 28 October 2018. Consultado el 25 de mayo de 2019. «Tokyo CabinetはGDBMやQDBMの後継として次の点を目標として開発されました。これらの目標は達成されており、Tokyo Cabinetは従来のDBMを置き換える製品だと言えます。». 
  6. «Tokyo Cabinet第1版基本仕様書» [Fundamental Specifications of Tokyo Cabinet Version 1]. Fall Labs (en japonés). 5 August 2010. Archivado desde el original el 28 October 2018. Consultado el 25 de mayo de 2019. «Tokyo CabinetはGDBMやQDBMの後継として次の点を目標として開発されました。これらの目標は達成されており、Tokyo Cabinetは従来のDBMを置き換える製品だと言えます。». 
  7. a b Debroux, Lionel (16 de junio de 2018). «oss-security - Fun with DBM-type databases...». openwall.com. 
  8. a b , June 19, 2014. 

Error en la cita: La etiqueta <ref> definida en las <references> con nombre «2001-hazel-exim» no se utiliza en el texto anterior.
Error en la cita: La etiqueta <ref> definida en las <references> con nombre «2001-ladd-odonell-xhtml» no se utiliza en el texto anterior.

Error en la cita: La etiqueta <ref> definida en las <references> con nombre «2007-kew-apache» no se utiliza en el texto anterior.

BibliografíaEditar