LevelDB: la base de datos del tipo key-value de Google

leveldb GoogleLevelDB es una biblioteca escrita en C++ que permite el rápido almacenamiento de datos en formato clave-valor, la misma se encuentra liberada bajo licencia BSD por Google. Y si bien este tipo de motores no cuentan con las mismas virtudes que cualquier base de datos convencional, sus implementaciones pueden ser muy variadas, por ejemplo Google sugiere que un navegador puede utiliza LevelDB para almacenar la cache de las paginas web que se han accedido recientemente.

LevelDB cuenta con un buen rendimiento en distintos escenarios, y aquí es donde viene lo interesante, Google ejemplifica y demuestra el buen rendimiento de LevelDB comparando sus resultados con otras bases de datos como SQLite, que es probablemente la más utilizada en aplicaciones para dispositivos móviles. Sin ir más lejos los desarrolladores de aplicaciones para iPhone recomiendan ampliamente su utilización.

En mi opinión Google apunta claramente al mercado de base de datos para dispositivos móviles, otra razón por la que llego a esa conclusión es que LevelDB se encuentra optimizada en los puntos débiles SQLite, por ejemplo actualizaciones por lotes, un factor donde las bases de datos de hoy en día hacen bastante agua (obviamente hablando de las que se utilizan en móviles).

Limitaciones de LevelDB

  • No es una base de datos del tipo SQL.
  • No soporta consultas del tipo SQL, como tampoco cuenta con indices (probablemente una de las mayores desventajas)
  • Solo un proceso puede acceder a la base de datos a la vez.
  • No cuenta con un modelo de datos relacional.

Algunas ventajas de LevelDB

  • Los datos se almacenan directamente ordenados por clave.
  • Existen principalmente tres funciones básicas: Put, Get, Delete.
  • Al ser una base de datos optimizada para trabajo en lote se pueden ejecutar diversos cambios en un solo proceso de lote.
  • Se pueden crear vistas, algo muy interesante para mantener la coherencia de datos.
  • La información automáticamente se guarda comprimida.

Rendimiento

Y finalmente llegamos a lo más interesante. En el sitio oficial del proyecto existe un buen benchmark con diversos resultados. Como estamos acostumbrados Google tiene como meta acelerar absolutamente todo, los resultados si bien no son del todo exactos son bastante orientativos, un pequeño resumen:

  • Escritura: Aproximadamente 400.000 por segundo, cada uno de ellas corresponde a grabar un par (key-value).
  • Lectura: Aproximadamente 60.000 registros por segundo de forma aleatoria, este resultado se puede mejorar considerablemente según la configuración que empleemos, en el sitio oficial se comentan ciertos cambios que logran que LevelDB alcance los 190.000 registros leídos por segundos. Muy impresionante.

Veremos como evoluciona LevelDB, por el momento tiene muy buena pinta, seguramente si Google logra que los desarrolladores adopten su biblioteca las mejoras sean impresionantes de aquí a unos cuantos meses.

Categorizado en: