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.
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 .
La biblioteca dbm original de AT&T ha sido reemplazada por muchas de sus implementaciones sucesivas. Algunos ejemplos notables son:
Las siguientes bases de datos están inspiradas en dbm, pero no proporcionan directamente una interfaz dbm, aunque sería trivial empaquetar una:
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.[6] Después de un cambio de licencia de Berkeley DB a GNU AGPL en 2013, proyectos como Debian se han trasladado a LMDB.[7]
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;[6] 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.[7]
Owlapps.net - since 2012 - Les chouettes applications du hibou