Как установить и использовать chDB в среде выполнения Bun
chDB-bun предоставляет экспериментальные FFI-привязки (Foreign Function Interface) для chDB, позволяя выполнять запросы ClickHouse напрямую в приложениях Bun без каких-либо внешних зависимостей.
# Установка из репозитория GitHubbun add github:chdb-io/chdb-bun# Или клонируйте и соберите локальноgit clone https://github.com/chdb-io/chdb-bun.gitcd chdb-bunbun installbun run build
Для сложных операций, где требуется сохранять состояние между запросами:
import { Session } from 'chdb-bun';// Создание сеанса с постоянным хранилищемconst sess = new Session('./chdb-bun-tmp');try { // Создание базы данных и таблицы sess.query(` CREATE DATABASE IF NOT EXISTS mydb; CREATE TABLE IF NOT EXISTS mydb.users ( id UInt32, name String, email String ) ENGINE = MergeTree() ORDER BY id `, "CSV"); // Вставка данных sess.query(` INSERT INTO mydb.users VALUES (1, 'Alice', 'alice@example.com'), (2, 'Bob', 'bob@example.com'), (3, 'Charlie', 'charlie@example.com') `, "CSV"); // Запрос данных const users = sess.query("SELECT * FROM mydb.users ORDER BY id", "JSON"); console.log("Users:", users); // Создание и использование пользовательских функций sess.query("CREATE FUNCTION IF NOT EXISTS hello AS () -> 'Hello chDB'", "CSV"); const greeting = sess.query("SELECT hello() as message", "Pretty"); console.log(greeting); // Агрегирующие запросы const stats = sess.query(` SELECT COUNT(*) as total_users, MAX(id) as max_id, MIN(id) as min_id FROM mydb.users `, "JSON"); console.log("Statistics:", stats);} finally { // Всегда завершайте сеанс для освобождения ресурсов sess.cleanup(); // Удаляет файлы базы данных}