DataFlora 1.0.0

The owner has unlisted this package. This could mean that the package is deprecated, has security vulnerabilities or shouldn't be used anymore.
dotnet add package DataFlora --version 1.0.0
                    
NuGet\Install-Package DataFlora -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DataFlora" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DataFlora" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="DataFlora" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add DataFlora --version 1.0.0
                    
#r "nuget: DataFlora, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package DataFlora@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=DataFlora&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=DataFlora&version=1.0.0
                    
Install as a Cake Tool

DataFlora 🌿

Супер простая и быстрая база данных для .NET 8

.NET License

DataFlora — легковесная embedded база данных с поддержкой тегов, версионирования и истории изменений.

✨ Особенности

  • 🏷️ Теги — гибкий поиск по меткам
  • 📜 Версионирование — полная история изменений
  • 🔐 Шифрование — встроенная защита данных
  • 📦 Сжатие — компактное хранение (Zstd)
  • Быстрый поиск — по тегам, датам, содержимому
  • 🎯 Zero-config — работает из коробки

📦 Установка

dotnet add package DataFlora

🚀 Быстрый старт

using DataFlora;

// Открыть базу данных
var db = DataFloraDatabase.Open("./mydata");

// Сохранить данные с тегами
var id = db.Save("Hello, DataFlora!", tags: "greeting, demo");

// Получить данные
string? text = db.GetString(id);

// Найти по тегам
var results = db.Find("greeting");

📖 Примеры использования

Работа с текстом


// Сохранение с автоматическим ID
Guid id = db.Save("Мой текст", tags: "заметки, важное");

// Сохранение с указанным ID
Guid myId = Guid.NewGuid();
db.Save(myId, "Контент", tags: "статья, draft");

// Получение
string? content = db.GetString(id);

Работа с JSON


var user = new User { Name = "Alice", Age = 25 };

// Сохранить объект
Guid id = db.SaveJson(user, tags: "user, active");

// Получить объект
User? loaded = db.GetJson<User>(id);

Работа с файлами


// Сохранить файл (теги генерируются автоматически из имени/расширения)
Guid id = db.SaveFile("document.pdf", tags: "docs, report");

// Получить как поток
using Stream? stream = db.GetStream(id);

🔍 Поиск


// Поиск по тегам
var notes = db.Find("заметки");

// Поиск по нескольким тегам
var important = db.Find("важное, срочное");

// Поиск по дате
var recent = db.FindByDate(
    from: DateTime.Now.AddDays(-7),
    to: DateTime.Now,
    take: 50
);

// Проверка существования
bool exists = db.Exists(id);

📜 Версионирование


// Обновить с сохранением истории
db.Update(id, "Новый контент", tags: "updated", changeDescription: "Исправлены опечатки");

// Получить историю изменений
IEnumerable<DataVersion> history = db.GetHistory(id);

foreach (var version in history)
{
    Console.WriteLine($"v{version.Version}: {version.Description} ({version.CreatedAt})");
}

// Получить конкретную версию
byte[]? oldVersion = db.GetVersion(id, version: 1);

⚙️ Конфигурация

Fluent Builder


var db = new DataFloraConfigBuilder("./data")
    .WithCompression(level: 22)           // Brotli сжатие 0-22
    .WithEncryption(myKey)                // AES шифрование
    .WithCacheSize(megabytes: 256)        // Размер кэша
    .WithVersioning(maxVersions: 100)     // Макс. версий на запись
    .Build();

Через конфиг


var config = DataFloraConfig.Default("./data") with
{
    EnableCompression = true,
    EnableEncryption = true,
    EncryptionKey = myKey,
    CacheSizeMb = 128
};

var db = IDataFloraDatabase.Open(config);

📊 Метаданные

// Полная информация о записи
DataInfo? info = db.GetInfo(id);
Console.WriteLine($"Создано: {info.CreatedAt}");
Console.WriteLine($"Теги: {info.Tags}");
Console.WriteLine($"Формат: {info.Format}");

// Полная запись с данными
DataRecord? record = db.GetRecord(id);

🔄 Сравнение данных

byte[] newData = GetUpdatedData();

CompareResult result = db.Compare(id, newData, newTags: "updated");

if (result.HasChanges)
{
    db.Update(id, newData, tags: "updated");
}

📦 Пакетные операции

var items = new[]
{
    (Data: Encoding.UTF8.GetBytes("Item 1"), Tags: "batch, item"),
    (Data: Encoding.UTF8.GetBytes("Item 2"), Tags: "batch, item"),
    (Data: Encoding.UTF8.GetBytes("Item 3"), Tags: "batch, item"),
};

// Параллельное сохранение
IEnumerable<Guid> ids = db.SaveBatch(items);

📁 Структура данных

./mydata/
├── data/           # Файлы данных
├── indexes/        # Индексы для поиска
└── versions/       # История версий

🎯 Форматы данных

Формат Описание
DataFormat.Binary Бинарные данные
DataFormat.Text Текст (UTF-8)
DataFormat.Json JSON документы

📄 Лицензия

MIT License — используйте свободно!


---

Это README покрывает все основные функции вашей библиотеки и даёт пользователям понятные примеры для быстрого старта! 🚀

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated

Initial release:
- Tag-based storage and search
- Full versioning support
- Change history tracking
- Brotli compression
- AES encryption
- Fluent configuration API