litedb

LiteDB, base de datos NoSQL embebida para .NET

LiteDB es una base de datos NoSQL ligera y embebida de código abierto, disponible C# para usar en nuestras aplicaciones de .NET.

Es una opción interesante para añadir en un proyecto, cuando necesitamos almacenar cantidades datos relativamente pequeñas, pero no queremos ni emplear una base de datos “grande” como SQL Server o MongoDB, ni trabajar con ficheros JSON.

LiteDB es una base de datos NoSQL embebida orientada a documentos, que se centra simple y fácil de usar. Su API ha sido diseñada para ser similar a MongoDB, y es compatible con LINQ.

En general LiteDB es válido para aplicaciones pequeñas y medianas, sin requisitos de concurrencia de usuarios. Por ejemplo, cuando haces una aplicación de consola, que solo vas a usar tú, y necesitas guardar datos de una forma rápida y sencilla.

Es un desarrollo enteramente realizado en C#, sin dependencias externas. Ha sido optimizado para que sea muy ligero, el fichero completo ocupa menos 450Kb.

Por otro lado, en el mismo proyecto se proporciona una pequeña herramienta, LideDB Studio, para gestionar los datos que tengamos almacenados en la base de datos.

Es compatible con .NET Framework 4.5 o superior, y .NET Standard 1.3 y 2.0.

Cómo usar LiteDB

Podemos añadir la biblioteca a un proyecto de .NET fácilmente, a través del paquete Nuget correspondiente.

Install-Package LiteDB

Ya podemos usar LiteDB en nuestro proyecto. Por ejemplo, supongamos que tenemos una clase Customer que tiene la siguiente forma

public class Customer
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
    public string[] Phones { get; set; }
    public bool IsActive { get; set; }
}

Así podríamos realizar las operaciones en la base de datos.

using LiteDB;

// abrirmos la bsae de datos (o la creamos si no existe)
var db = new LiteDatabase("myDatabase.db");

// obtener una colección de documentos
var collection = db.GetCollection("users");

// agregar un nuevo documento
var customer = new Customer
{ 
	Name = "John Doe", 
	Phones = new string[] { "8000-0000", "9000-0000" }, 
	Age = 39,
	IsActive = true
};   
collection.Insert(user);


// actualizar un documento
customer.Name = "Joana Doe";
col.Update(customer);

También podríamos trabajar directamente con BsonDocuments (que no recomiendo especialmente) de la siguiente forma

using LiteDB;

// abrirmos la bsae de datos (o la creamos si no existe)
var db = new LiteDatabase("myDatabase.db");

// obtener una colección de documentos
var collection = db.GetCollection("users");

// agregar un nuevo documento
var user = new BsonDocument
{
    { "name", "John Doe" },
    { "age", 30 },
    { "email", "johndoe@example.com" }
};

collection.Insert(user);