Sobre el proyecto
LevelDB es una biblioteca integrada de almacenamiento clave-valor desarrollada en Google por Sanjay Ghemawat y Jeff Dean. Proporciona un mapeo ordenado de claves de cadena a valores de cadena y está pensada para enlazarse directamente a una aplicación en lugar de ejecutarse como un servicio separado.
Las capacidades principales descritas en el README:
- Las claves y los valores son matrices de bytes arbitrarias, y los datos se almacenan ordenados por clave.
- Quienes la usen pueden proporcionar una función de comparación personalizada para anular el orden de clasificación predeterminado.
- Las operaciones básicas son Put(clave, valor), Get(clave) y Delete(clave).
- Se pueden aplicar varios cambios en un solo lote atómico.
- Los usuarios pueden crear una instantánea transitoria para obtener una vista coherente de los datos.
- Se admite la iteración hacia adelante y hacia atrás sobre los datos.
- Los datos se comprimen automáticamente con Snappy, y también se admite Zstd.
- La actividad externa, como las operaciones del sistema de archivos, se transmite a través de una interfaz virtual para que las interacciones con el sistema operativo puedan personalizarse.
Limitaciones importantes indicadas por el proyecto: no es una base de datos SQL, no tiene modelo relacional, consultas SQL ni soporte de índices; solo un único proceso (posiblemente multihilo) puede acceder a una base de datos a la vez; y no hay soporte integrado cliente-servidor, por lo que las aplicaciones que lo necesiten deben envolver su propio servidor alrededor de la biblioteca.
El repositorio tiene un mantenimiento muy limitado. Los mantenedores dicen que solo revisarán correcciones para errores críticos como pérdida de datos o corrupción de memoria, y cambios absolutamente necesarios para los clientes de LevelDB soportados internamente, normalmente para corregir fallos debidos a actualizaciones de lenguaje, biblioteca estándar o sistema operativo. Se espera que las contribuciones apunten a plataformas probadas (POSIX para Linux y macOS, o Windows), preserven una API estable, incluyan pruebas y sigan la Guía de estilo de C++ de Google; es poco probable que se acepten cambios en la configuración de compilación. Las solicitudes de extracción requieren firmar un Acuerdo de licencia de colaborador de Google y hacer squash/rebase sobre main.
La compilación usa CMake directamente. En POSIX, un inicio rápido típico es crear un directorio de compilación, ejecutar cmake con un tipo de compilación Release y luego compilar. En Windows, CMake puede generar archivos de proyecto/solución de Visual Studio 2017, con una opción para objetivos de 64 bits, y la solución puede compilarse desde la línea de comandos o dentro de Visual Studio.
El README incluye un informe de rendimiento del programa db_bench incluido, que usa una base de datos de un millón de entradas con claves de 16 bytes y valores de 100 bytes. Informa puntos de referencia de escritura (fillseq, fillsync, fillrandom, overwrite) y de lectura (readrandom, readseq, readreverse), y señala que los resultados son ruidosos y que la compactación en segundo plano mejora el rendimiento de lectura. La interfaz pública vive en include/leveldb/*.h, con db.h como punto de entrada principal, options.h para el comportamiento de la base de datos y por operación, comparator.h para orden personalizado, iterator.h para iteración, write_batch.h para actualizaciones atómicas, slice.h y status.h como ayudas, env.h para la abstracción del sistema operativo, y table.h/table_builder.h como módulos de nivel inferior que la mayoría de los clientes no usarán directamente. La documentación está incluida en el árbol de fuentes bajo doc/.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.