¿En qué archivos se compone la base de datos LevelDB en el disco?
Introducción a LevelDB
1. Introducción a LevelDB
LevelDB es la base de datos independiente KV persistente de código abierto de Google. Tiene un alto rendimiento de escritura aleatoria y lectura/escritura secuencial, pero el rendimiento de lectura aleatoria es muy promedio, lo que significa que LevelDB es muy adecuado para A. escenario donde hay pocas consultas pero muchas escrituras. LevelDB adopta la estrategia LSM (fusión estructurada de registros). lsm_tree retrasa y agrupa los cambios de índice y migra eficientemente las actualizaciones al disco de una manera similar a la clasificación por fusión, lo que reduce la sobrecarga de inserción de índice. Con respecto a LSM, también se mencionará brevemente más adelante en este artículo.
Según la descripción en el sitio web oficial de LevelDB, las características y limitaciones de LevelDB son las siguientes:
Características:
1. matrices de bytes de longitud arbitraria. ;
2. De forma predeterminada, las entradas (es decir, registros K-V) se almacenan en el orden de claves del diccionario. Por supuesto, los desarrolladores también pueden sobrecargar esta función de clasificación.
3. Interfaces de operación básicas proporcionadas: Put(), Delete(), Get(), lote();
4. Admite operaciones atómicas y por lotes;
5. Puede crear una instantánea del panorama de datos y permitirle encontrar datos dentro de la instantánea;
6. Puede recorrer los datos a través de un iterador directo (o inverso) (el iterador lo hará). implícitamente para crear instantáneas);
7. Usar Snappy automáticamente para comprimir datos;
8. Portabilidad;
Limitaciones:
1. , Modelo de datos no relacional (Nosql), no admite sentencias o índices sql;
2. Solo se permite que un proceso acceda a una base de datos específica a la vez; No existe una arquitectura C/S incorporada, pero los desarrolladores pueden usar la biblioteca LevelDB para empaquetar el servidor.
LevelDB en sí es solo una biblioteca lib, que se puede compilar en el directorio fuente make, y luego el archivo de encabezado leveldb/include/db.h se puede incluir directamente en nuestra aplicación.
El archivo de encabezado tiene varias interfaces de operación de base de datos básicas. El siguiente es un ejemplo de prueba:
# include & ltiostream & gt
# include & ltstring& gt
#. include & ltassert.h & gt
#Include "leveldb/db.h"
Usar espacio de nombres std
int main(void)
{
nivel DB::DB * DB;
niveldb::Opciones
opciones crear _ si _ falta = verdadero;
p>
//Abrir
nivel DB::Estado Estado = nivel DB::DB::Abrir(opciones "/tmp/testdb", & ampdb);
afirmar(status.ok());
string key="nombre";
String value="Chen Qi";
//Escribir p>
estado = db-> put(nivel db::escribir opciones(), clave, valor);
assert(status. ok()); //Leer
estado = db->get(nivel db::leer opciones(), clave y valor);
afirmar(status.ok()); p>
cout<<value<<endl
//Eliminar
status = db->delete( nivel db::opciones de escritura(),clave);
afirmar(status.ok());
status = db->get(nivel db::read options (), clave y valor);
if (!status. ok())
cerr & lt& ltkey & lt& lt"""<& ltstatus.ToString()<& ltendl
}else {
cout & lt& ltkey & lt& lt" = = ="< >}
//Cerrar
Eliminar la base de datos;
Devolver 0;