Tonbo — Rust-движок для данных нового поколения

29 May, 2026
1,558
🔱 98
👥 17

Tonbo Logo

Представьте базу данных, которая сочетает:

  • скорость ключ-значение
  • богатые возможности запросов
  • кросс-платформенность
  • и всё это с гарантиями безопасности Rust

Именно такой и предстаёт Tonbo — молодой, но амбициозный проект, который уже собрал более 1000 звёзд на GitHub за первые месяцы существования.

Кому стоит присмотреться к Tonbo?

Если вы:

  • Разрабатываете data-intensive приложения на Rust
  • Ищете легковесную embedded альтернативу RocksDB с поддержкой сложных запросов
  • Работаете с аналитическими данными и хотите единый стек от хранения до обработки
  • Создаёте оффлайн-первые (offline-first) приложения

...то Tonbo может стать вашим новым любимым инструментом.

Реклама

Три кита Tonbo

1. Rust-нативный API с нулевым копированием

Tonbo предлагает типобезопасный интерфейс, где схема данных описывается через derive-макросы, как в популярных ORM:

#[derive(Record, Debug)]
pub struct User {
    #[record(primary_key)]
    name: String,
    email: Option<String>,
    age: u8,
}

А благодаря интеграции с Arrow, данные можно читать без лишних аллокаций — идеально для высоконагруженных сценариев.

2. Гибкая архитектура хранения

Под капотом — LSM-дерево (как в RocksDB), но с важным отличием: данные хранятся в формате Parquet. Это даёт:

  • Pushdown-оптимизации (фильтры и проекции работают на уровне хранилища)
  • Совместимость с экосистемой Apache Arrow
  • Поддержку разных бэкендов (локальный диск, S3, OPFS для WASM)

3. Кроссплатформенность и мультиязычность

Хотя ядро написано на Rust, Tonbo уже предлагает:

  • Python-библиотеку через PyO3
  • WASM-версию для работы в браузере
  • Поддержку разных async-рантаймов (Tokio, async-std в планах)

Изнутри: как это работает?

Типичный workflow с Tonbo:

  1. Инициализация
let options = DbOption::new(
    Path::from_filesystem_path("./db_path/users").unwrap(),
    &UserSchema,
);
  1. Вставка данных
db.insert(User {
    name: "Alice".into(),
    email: Some("alice@gmail.com".into()),
    age: 22,
}).await.unwrap();
  1. Транзакционные запросы
let user = txn
    .get(&name, Projection::All)
    .await
    .unwrap();
  1. Диапазонные сканы
let mut scan = txn
    .scan((Bound::Included(&name), Bound::Excluded(&upper)))
    .projection(&["email"])
    .take()
    .await
    .unwrap();

Где это можно применить уже сегодня?

Хотя проект ещё в активной разработке (версия 0.1.x), его уже можно использовать для:

  1. Локального кэширования сложных структур данных с возможностью rich-запросов
  2. Оффлайн-режима в web/mobile приложениях через WASM/OPFS
  3. Прототипирования аналитических pipelines перед переходом на полноценные Data Lake решения
  4. Embedded-устройств, где важны эффективность и безопасность Rust

Что в дорожной карте?

Команда Tonbo активно работает над:

  • Полноценной поддержкой DataFusion для SQL-запросов
  • Распределёнными режимами работы
  • Оптимизацией tiered storage (RAM + SSD + облако)

Вывод: стоит ли пробовать?

Плюсы: ✅ Невероятно перспективная архитектура ✅ Богатый API для Rust-разработчиков ✅ Растущая экосистема интеграций

Ограничения: ⚠️ Пока не готов для production (версия 0.1.x) ⚠️ Документация ещё в процессе развития

Вердикт: Если вы работаете со структурированными данными на Rust — обязательно добавьте Tonbo в список для тестирования. Этот проект имеет все шансы стать новым стандартом в области embedded analytical storage.

Ссылки для погружения:

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.