Open Source + Pro Edition

База данных объектов
для .NET

Не key-value хранилище. Настоящие объекты, настоящие запросы.
LINQ, деревья, агрегации, оконные функции — нативный SQL.

$ dotnet new install redb.Templates && dotnet new redb -n MyApp
// Define your model
[RedbScheme]
public class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }
    public Category Category { get; set; }  // Nested!
}

// Query with full LINQ
await redb.Query<Product>()
    .Where(p => p.Price < 100)
    .Where(p => p.Category.Name == "Electronics")
    .OrderBy(p => p.Name)
    .ToListAsync();
100K+ Объектов протестировано
<15ms Время запроса
2 СУБД
0 Миграций

Почему RedBase?

◆

Строгая типизация

Настоящие C# классы с IntelliSense. Проверки на этапе компиляции. Полный рефакторинг. Без магических строк.

◇

Древовидные структуры

Иерархические данные как объект первого класса. Предки, потомки — оптимизированные CTE-запросы.

▣

Полный LINQ

Where, OrderBy, GroupBy, Take, Skip, Any, All, Count — всё компилируется в нативный SQL.

◈

Аналитика

GroupBy, Sum, Avg, Min, Max. Оконные функции: RowNumber, Rank, Lag, Lead.

○

Без миграций

Code-first синхронизация. Добавьте свойство — база обновится автоматически. Без скриптов.

◉

Enterprise Ready

PostgreSQL, SQL Server и SQLite. Кеширование, отслеживание изменений, вычисляемые выражения.

Пишите меньше. Запрашивайте больше.

Никаких цепочек Include. Никаких проблем N+1.

Традиционный подход
// Nested objects = Include chains
var dbOrders = await context.Orders
    .Include(o => o.Customer)
    .Include(o => o.Items)
        .ThenInclude(i => i.Product)
            .ThenInclude(p => p.Category)
    .Include(o => o.Shipping)
        .ThenInclude(s => s.Address)
    .Where(o => o.Status == "Active")
    .ToListAsync();

// Then map to business objects...
var orders = dbOrders.Select(MapToOrder);

// 6 JOINs, N+1 risk, manual mapping
RedBase
// Query business objects directly
var orders = await redb
    .Query<Order>()
    .Where(o => o.Status == "Active")
    .Where(o => o.Customer.Country == "US")
    .ToListAsync();

// Business entities ready to use
// No DB models. No mapping.
// No Include. Compile-time safe.

Настоящий SQL. Настоящая мощь.

Построен на PostgreSQL, SQL Server и SQLite — от одного встраиваемого файла до корпоративных серверов.

Вся мощь реляционных БД

Индексы, внешние ключи, транзакции, ограничения, триггеры — всё, что предоставляет ваш SQL-сервер. Без ограничений.

ACID-транзакции

Настоящие транзакции базы данных с поддержкой отката. Не eventual consistency — немедленная, надёжная, проверенная в бою.

Нативная производительность SQL

Запросы компилируются в оптимизированный SQL. Используйте EXPLAIN ANALYZE. Добавляйте индексы. Никакого чёрного ящика.

Строгая типизация

C# классы с IntelliSense. Проверки на этапе компиляции. Рефакторинг работает. Без магических строк, без сюрпризов в рантайме.

Свой SQL при необходимости

Пишите сырой SQL для сложных случаев. Комбинируйте LINQ и SQL свободно. Полный контроль, когда нужно.

Лучше, чем NoSQL

Гибкость документных хранилищ + мощь SQL. Вложенные объекты без парсинга JSON. Настоящие запросы, не map-reduce.

Идеально подходит для

От простых проектов до корпоративных систем — один подход для всего.

Простая интеграция с SQL

Есть существующая SQL база? Просто подключитесь, опишите классы и начните работать. Без миграций, без изменений схемы. Развивайтесь постепенно.

Хранимые процедуры и функции

Используйте существующую библиотеку SQL-функций. Создавайте свои процедуры. Вызывайте их прямо из LINQ. Вся мощь SQL в C# коде.

IoT и телеметрия

Датчики, устройства, контроллеры — храните как объекты RedBase. Создайте свои партиционированные таблицы трендов для временных рядов. Связь через FK с _objects. Лучшее из двух миров.

Идентификация и IAM

Пользователи, роли, разрешения, клеймы, политики, журналы аудита. Вместо 20+ таблиц ASP.NET Identity — просто C# классы. Типизированные, рефакторируемые, простые.

CRM и бизнес-приложения

Контакты, компании, сделки, товары. Каждая отрасль требует разных полей. Добавляйте атрибуты без ALTER TABLE. Гибко как таблица, типизировано как код.

No-Code и конструкторы

Конструкторы сайтов, CMS, конструкторы форм. Пользователи создают типы сущностей в рантайме. Вы просто сохраняете объекты — без генерации схемы, без генерации кода.

Простые проекты

Блог, каталог, портфолио? Опишите классы, сохраните объекты, делайте запросы через LINQ. База данных готова за минуты. Масштабируйте при необходимости.

Медицина и ERP

Сотни типов сущностей: пациенты, диагнозы, анализы, оборудование, заказы. Традиционный подход = сотни таблиц. RedBase = просто C# классы.

E-commerce

У одежды — размер и цвет. У техники — характеристики. У еды — срок годности. У каждой категории — свои атрибуты. Один кодбейз, без схемы на категорию.

Портируемость баз данных

Экспорт в .redb файл, импорт в любую поддерживаемую СУБД. PostgreSQL сегодня, SQL Server завтра. Один формат бэкапа, без привязки к вендору. CLI-инструмент в комплекте.

Будущие движки

PostgreSQL и SQL Server сегодня. Oracle, MySQL, SQLite, ClickHouse — в планах. Ваш код остаётся тем же. Смените движок без переписывания запросов.

Cloud и MPP Ready

SQL Server → Azure SQL. PostgreSQL → Aurora, AlloyDB, Citus. Совместимость с GreenPlum в исследовании. Тот же код, смените строку подключения — из on-prem в облако за минуты.

.NET Native

Создан для .NET-разработчиков. Работает с C#, F#, VB.NET — любым .NET языком.

Кросс-платформенность

Windows, Linux, macOS, Docker, Kubernetes. .NET 8+ с поддержкой AOT. Деплой куда угодно — один бинарник.

Отладка и прозрачность

ToSqlString() на любом запросе — смотрите точный SQL перед выполнением. Никакого чёрного ящика. Используйте EXPLAIN ANALYZE. Профилируйте как нативный SQL.

Параллельная обработка

Parallel.ForEach для материализации. Параллельный diff деревьев. Пакетные операции. Масштабируется на все ядра CPU. 100K+ объектов/сек.

Полная поддержка LINQ

Where, Select, OrderBy, GroupBy, Any, All, Count, Take, Skip — всё работает. Не подмножество. Настоящий LINQ, настоящая мощь.

Dependency Injection

Стандартный IServiceCollection. AddRedb() и готово. Scoped-сервисы, правильный lifetime. ASP.NET Core, Blazor, MAUI — нативная интеграция.

100% Async

Каждая операция — async/await. Без блокирующих вызовов. Идеально для высоконагруженных веб-приложений, real-time сервисов, микросервисов.

Строгая типизация

IntelliSense для всех свойств. Проверки на этапе компиляции. Рефакторинг работает по всей кодовой базе. Без магических строк, без сюрпризов.

NuGet Ready

dotnet add package redb.Postgres — начните кодить за секунды. Ядро с открытым исходным кодом бесплатно навсегда. Pro-пакеты для корпоративных нужд.

SQL под конкретную СУБД

LINQ компилируется в оптимизированный SQL для PostgreSQL или SQL Server. Не generic SQL — нативный синтаксис, нативные функции, нативная производительность.

N O D S для .NET

RedBase — Native Object Database on SQL

Объектно-нативная. SQL-powered.
Храните C# объекты напрямую, используя PostgreSQL или SQL Server как движок.
Без миграций. Полный LINQ. SQL-доступ, когда нужно.

Начните строить сегодня

Бесплатное ядро с открытым кодом. Pro-функции для корпоративных нужд.

Последние релизы

  • 4.2.0
    • redb.Templates is a collection of seven templates. Each one runs as is: SQLite with Pro, the PVT
    • The redb console template turns on the PVT prefilter and change tracking in its Pro variant; they
    • SQL Server Pro: string matching follows the contract of COLLATION.md, as SQL Server Free does. Plain
    • Configuration copying has one list of settings. RedbServiceConfiguration.CopyFrom copies every setting,
  • 4.1.1
    • A window frame on Pro reached SQL as CURRENT ROW whatever it said. The core writes the frame as
    • The permission cache answered for the wrong database. It is shared by the process and was keyed
    • redb.Export: an import is one transaction, checks the file is whole, and restores ids correctly.
    • The documentation of RedbServiceConfiguration.EnablePvtPrefilter said the prefilter was PostgreSQL only.
  • 4.1.0
    • Storage maintenance reports what a DBA needs, and marks what must never be dropped. The
    • GetTableStatsAsync() on a SQLite database nobody has analysed yet. sqlite_stat1 does not
Все релизы (21) →

Статьи по redb

redb для бизнеса: программируем только бизнес, инфраструктура уже написана С redb команда пишет только бизнес-логику: что экосистема заменяет, во что обходится, какие риски снимает и что важно знать до старта.
redb 4.0: XML-маршруты, ленивые ссылки, уникальные ключи и WS-Trust в одном мажоре Мажор всей экосистемы: что появилось в redb.Core, redb.Route, redb.Tsak и redb.Identity, что закрыто по безопасности и что ломает обновление.
redb 3.7: свой gRPC-протокол, отсечение props до агрегата и релиз, отозванный через день Свой gRPC-wire в Route, отсечение props до агрегата в redb.Core, Tsak закрыт по умолчанию, второй фасад у Identity. И 3.7.0, отозванный через день.
redb 3.7.1: поиск по props быстрее до 100 раз. Альтернатива EF Core или дополнение к нему Цена запроса не зависела от того, что ищешь: фильтр стоял над GROUP BY. Теперь отсечение идёт до агрегата, на трёх движках, без единой правки в коде приложения. До 100 раз на диапазоне по дате и в 5,3 раза на полной выборке в MS SQL Server.
Архитектура движка подбора билетов: три GDS, железная дорога и маршрут, который меняют в дороге Референсная архитектура движка подбора билетов на redb: канонная модель, Scatter-Gather по трём GDS и ж/д, дерево-маршрут и saga-переоформление в дороге.
Не заводите вторую базу ради объектов: redb против MongoDB и RavenDB Объектное хранилище с типами, деревьями и настоящим SQL прямо в вашей PostgreSQL/MS SQL/SQLite. FK на объекты, EF и Dapper рядом. redb против Mongo и Raven.
redb 3.6.0: багрепорт, который оказался в шести провайдерах сразу — плюс AS2/EDI и общий порт Отчёт пользователя вскрыл утечку между диалогами в query-провайдере ядра — 6 из 6. Что ещё в 3.6.0: AS2/EDI, общий Kestrel, Camel-паритет.
Локальная база на клиенте: Blazor WebAssembly и MAUI на SQLite — без DbContext, Include и миграций Офлайн-хранилище со сложным графом и outbox: быстрый старт в MAUI и в браузере, базовые операции и почему в этой роли EF Core только мешает.
Все статьи по redb (14) →