LiteDB — это небольшое, быстрое и легковесное NoSQL встраиваемое базовое хранилище данных для .NET.
Серверный NoSQL документальный магазин
Простой API, схожий с MongoDB
100% код на C#, предназначен для .NET 4.5 / NETStandard 1.3/2.0 в одной DLL (менее 450кБ)
Устойчивость к многопоточному выполнению
Поддержка транзакций с полной поддержкой ACID
Восстановление данных после ошибки записи (файл журнала WAL)
Шифрование файла данных с помощью алгоритма AES
Преобразование ваших POCO классов в BsonDocument
с использованием атрибутов или Fluent Mapper API
Хранение файлов и потоковых данных (похоже на GridFS в MongoDB)
Хранение данных в одном файле (похоже на SQLite)
Индексация полей документов для быстрого поиска
Поддержка LINQ для запросов
Похожие на SQL команды для доступа/преобразования данных
LiteDB Studio — удобный графический интерфейс для работы с данными
Открытый исходный код и бесплатен для всех — включая коммерческое использование
Установка из NuGet: Install-Package LiteDB
## Новая версия v5
Новый движок хранения данных
Отсутствие блокировки для операций чтения (read
)
Блокировка записи для каждой коллекции (несколько писателей)
Внутренние/системные коллекции
Новый синтаксис, похожий на SQL
Новый движок запросов (поддерживает проекцию, сортировку, фильтрацию, запросы)
Частичная загрузка документов (уровень корня)
И многое другое!
Новый графический интерфейс для управления и визуализации вашей базы данных:
Просмотреть Wiki для полной документации. Для упрощённой китайской версии, проверьте здесь.
Поддержите развитие сообщества пользователей LiteDB, ответив на этот короткий опрос.
Пример быстрого хранения и поиска документов:
// Создайте ваш класс POCO
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; }
}
// Откройте базу данных (или создайте её, если она ещё не существует)
using(var db = new LiteDatabase(@"MyData.db"))
{
// Получите коллекцию клиентов
var col = db.GetCollection<Customer>("customers");
}
``` // Создайте новый экземпляр клиента
var customer = new Customer
{
Name = "Иван Петров",
Phones = new string[] { "8000-0000", "9000-0000" },
Age = 39,
IsActive = true
};
// Создайте уникальный индекс в поле Name
col.EnsureIndex(x => x.Name, true);
// Вставьте новый документ клиента (Id будет автоматически увеличиваться)
col.Insert(customer);
// Обновите документ внутри коллекции
customer.Name = "Ивана Петрова";
col.Update(customer);
// Используйте LINQ для запроса документов (без использования индекса)
var results = col.Find(x => x.Age > 20);
}
Использование Fluent Mapper и кросс-документных ссылок для более сложных моделей данных
```C#
// DbRef для кросс-ссылок
public class Order
{
public ObjectId Id { get; set; }
public DateTime OrderDate { get; set; }
public Address ShippingAddress { get; set; }
public Customer Customer { get; set; }
public List<Product> Products { get; set; }
}
// Использование маппера из глобального экземпляра
var mapper = BsonMapper.Global;
// "Products" и "Customer" являются другими коллекциями (не встроенные документы)
mapper.Entity<Order>()
.DbRef(x => x.Customer, "customers") // 1 к 1/0 ссылка
.DbRef(x => x.Products, "products") // 1 к многим ссылка
.Field(x => x.ShippingAddress, "addr"); // Вложенный поддокумент
using(var db = new LiteDatabase("MyOrderDatafile.db"))
{
var orders = db.GetCollection<Order>("orders");
// При запросе заказа, включаются ссылки
var query = orders
.Include(x => x.Customer)
.Include(x => x.Products) // 1 к многим ссылка
.Find(x => x.OrderDate <= DateTime.Now);
// Каждый экземпляр заказа будет загружать ссылки на клиента/продукты
foreach(var order in query)
{
var name = order.Customer.Name;
...
}
}
Fluent Mapper и кросс-документные ссылки используются для работы со сложными моделями данных, где требуется эффективное управление отношениями между различными коллекциями. Это особенно полезно при работе с большими объемами данных и необходимостью быстрого доступа к связанным объектам.- Десктопные/локальные небольшие приложения
Детали изменений для каждого выпуска документируются в заметках к выпускам.
LiteDB цифрово подписывается благодаря SignPath
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )