GlueSQL: SQL-клей для ваших данных

30 May, 2026

Когда последний раз вам приходилось писать сложные конвертеры между SQL и NoSQL? Или мучиться с JOIN между разными типами хранилищ? GlueSQL предлагает элегантное решение — универсальный SQL-интерфейс поверх любых данных.

Что склеивает GlueSQL?

GlueSQL — это Rust-библиотека, которая:

  • Добавляет SQL-интерфейс к любым данным: от JSON-файлов до IndexedDB
  • Поддерживает как структурированные, так и неструктурированные данные
  • Работает в браузере через WebAssembly
  • Позволяет делать JOIN между разными хранилищами

Главная фишка — GlueSQL не требует заранее определённой схемы. Вы можете работать с JSON-документами как с реляционными таблицами и даже соединять их в запросах!

// Пример из документации:
let storage = MemoryStorage::default();
let mut glue = Glue::new(storage);

let payloads = glue.execute("SELECT * FROM Foo;").await.unwrap();

5 причин попробовать GlueSQL

  1. SQL для NoSQL Забудьте про сложные ORM и конвертеры. Делайте SELECT, JOIN и GROUP BY напрямую из MongoDB или JSON-файлов.

  2. Браузерная аналитика Используйте localStorage или IndexedDB как полноценную SQL-базу прямо в браузере. Отлично подходит для аналитических панелей.

    Реклама
  3. Гибкие схемы Работайте с полуструктурированными данными без головной боли. GlueSQL автоматически адаптируется к вашим JSON-схемам.

  4. Git как база данных Встроенная поддержка Git Storage позволяет версионировать данные и запросы.

  5. Кросс-платформенность Один код работает в Rust, JavaScript (через WASM) и скоро в других языках.

Как это работает внутри?

GlueSQL состоит из трёх основных компонентов:

  1. Парсер SQL (на основе sqlparser-rs)
  2. Планировщик запросов
  3. Абстрактный слой хранилища

Сердце системы — трейты Store и StoreMut, которые вы можете реализовать для своего хранилища. Тест-сьюит GlueSQL автоматически проверит вашу реализацию на соответствие SQL-стандартам.

Необычные кейсы использования

  • Веб-приложения: Замените сложные манипуляции с IndexedDB на чистый SQL
  • Анализ логов: Загрузите JSONL-файлы и анализируйте их без ETL
  • Прототипирование: Быстрое подключение к CSV/JSON вместо настройки PostgreSQL
  • Гибридные хранилища: JOIN между данными в памяти и на диске
-- Пример из документации: JOIN структурированной и JSON-таблицы
CREATE TABLE Names (id INTEGER, name TEXT);
INSERT INTO Names VALUES (1, 'glue'), (2, 'sql');

CREATE TABLE Logs;
INSERT INTO Logs VALUES
    ('{ "id": 1, "value": 30 }'),
    ('{ "id": 2, "rate": 3.0, "list": [1, 2, 3] }');

SELECT * FROM Names JOIN Logs ON Names.id = Logs.id;

Кому особенно пригодится?

  • Fullstack-разработчикам, уставшим от ORM
  • Аналитикам, работающим с разнородными данными
  • Rust-энтузиастам, ищущим интересные проекты для контрибьютинга
  • Разработчикам встраиваемых систем (поддержка Sled и Redb)

GlueSQL — это не просто ещё одна SQL-библиотека. Это новый взгляд на то, как мы можем работать с данными, стирая границы между SQL и NoSQL. Если вы хотя бы раз проклинали несовместимость разных хранилищ — самое время попробовать этот "клей" на практике.

Ссылки для изучения:

P.S. Проект активно развивается и ждёт контрибьюторов — тест-покрытие 99% делает участие комфортным даже для новичков в Rust.