LevelDB
# LevelDB

LevelDB Es una biblioteca de almacenamiento rápido de código abierto basada en pares clave-valor con almacenamiento en disco. Está escrita por Jeffrey Dean y Sanjay Ghemawat de Google, que también escribieron parte de la plataforma Google. Está inspirada en BigTable, y el código del proyecto se almacena en Google bajo la nueva licencia BSD. Ha sido portada a distintos sistemas Unix, Mac OS X, Windows y Android.

Aunque algunos lo definan como una base de datos, en su github oficial, es definida como una biblioteca y no como una base de datos.

## Características

LevelDB almacena claves y valores en matrices arbitrarias de bytes, y los datos se ordenan por la clave. Soporta escrituras en lote, iteraciones hacia adelante y hacia atrás, y compresión de datos mediante la librería Snappy de Google.

LevelDB no es una base de datos SQL. Al igual que otros almacenamientos NoSQL y Dbm, no posee un modelo de datos relacional, no soporta sentencias SQL y no soporta índices. Las aplicaciones han de usar LevelDB como una librería, ya que esta no incluye interfaz de comandos.

## Historia

LevelDB se basa en conceptos del sistema de base de datos BigTable de Google. La implementación de BigTable comenzó alrededor de 2004 y desarrolló un código fuente propietario. Dicho código fuente se basa en una serie de librerías de Google cuyo código no está abierto, por lo que no resultaban adecuadas para realizar el proyecto levelDB en código abierto. Jeff Dean y Sanjay Ghemawat se propusieron crear un sistema parecido a BigTable que tuviera mínimas dependencias con BigTable y fuera adecuado para ser puesto a disposición de la comunidad de código abierto, y que pudiera también utilizarse en Chrome para la implementación de IndexedDB. Para ello escribieron en 2011 LevelDB, siguiendo las mismas líneas de diseño que BigTable.

## Prestaciones

Google proporciona comparación de prestaciones entre LevelDB y SQLite y Kyoto Cabinet en distintos escenarios. LevelDB mejora SQLite y Kyoto Cabinet en operaciones de escritura y en lecturas secuenciales. LevelDB también las supera en escrituras por lotes, pero es más lenta que SQLite cuando maneja valores grandes.

