Laravel ClickHouse — повнофункціональний ClickHouse Driver для Laravel.

Перекладено ШІ 0 Laravel News 08 травня, 2026

Бажаєте обробляти мільярди рядків даних у Laravel з неймовірною швидкістю? Дізнайтеся, як інтегрувати ClickHouse у свій проєкт для повноцінної підтримки Eloquent, міграцій та паралельного виконання запитів.

Laravel ClickHouse — це драйвер бази даних, який інтегрує ClickHouse із Laravel, додаючи підтримку Eloquent, Query Builder, Schema Builder та інших інструментів:

  • Моделі Eloquent із підтримкою неінкрементних ID;
  • Query Builder зі специфічними конструкціями ClickHouse (як-от FINAL, ARRAY JOIN, SAMPLE);
  • Schema Builder із підтримкою ENGINE, PARTITION BY, ORDER BY та типів колонок LowCardinality;
  • Керування міграціями через стандартну команду artisan migrate;
  • Паралельне виконання запитів через асинхронний HTTP-пул Guzzle;
  • Два варіанти HTTP-транспорту: Guzzle та Curl/phpclickhouse.

ClickHouse — це колоночна СУБД із відкритим кодом для аналітичних навантажень. Вона зберігає дані за колонками, а не за рядками, що дозволяє миттєво агрегувати величезні масиви даних і опрацьовувати мільярди рядків за лічені секунди. Це оптимальний вибір для трекінгу подій, роботи з часовими рядами (time-series) та створення аналітичних панелей, де швидкість читання на великих масштабах є критичною.

# Моделі Eloquent

Ви можете визначати моделі Eloquent для ClickHouse так само, як і для будь-якої іншої бази даних:

class Event extends Model
{
    protected $connection = 'clickhouse';
}
 
$events = Event::where('user_id', 1)->get();

Оскільки ClickHouse не підтримує автоінкрементні первинні ключі, драйвер автоматично налаштовує моделі на роботу з неінкрементними ID. Scopes та колекції працюють без змін.

# Query Builder та розширення ClickHouse

Query Builder підтримує стандартні методи Laravel та додає специфічні функції для ClickHouse. Параметр final застосовує модифікатор FINAL, який змушує ClickHouse об'єднувати дублікати під час зчитування — це необхідно для двигуна ReplacingMergeTree:

$events = DB::connection('clickhouse')
    ->table('events', final: true)
    ->where('user_id', 1)
    ->get();

Також доступні розширення PREWHERE (фільтрація за колонками первинного ключа), ARRAY JOIN, SAMPLE, LIMIT BY та типи джоінів SEMI/ANTI/ASOF.

# Schema Builder та міграції

Schema Builder підтримує ClickHouse DDL через ClickHouseBlueprint. Ви можете визначати двигуни таблиць (engines), ключі секціонування (partition keys), ключі сортування (order keys) та спеціальні типи на кшталт LowCardinality:

Schema::connection('clickhouse')->create('events', function (ClickHouseBlueprint $table) {
    $table->engine('MergeTree()');
    $table->orderBy(['id', 'created_at']);
    $table->partitionBy('toYYYYMM(created_at)');
});

Команди artisan migrate працюють зі спеціальним репозиторієм міграцій, що дозволяє керувати схемою ClickHouse разом з іншими базами даних.

# Паралельне виконання запитів

Пакет містить хелпер Parallel для одночасного запуску кількох запитів через асинхронний HTTP-пул Guzzle:

$results = Parallel::get([
    'users'  => User::where('active', 1),
    'events' => Event::where('type', 'click'),
]);

Запити до таблиць users та events виконуються паралельно, а результати повертаються у вигляді масиву після завершення всіх операцій.

Повну документацію та вихідний код можна знайти на GitHub.

Популярні

Інше, що варто прочитати

10 Оновлено 07 травня, 2026

Локальні моделі та їх скоупи в Laravel за допомогою атрибута Scope

В Laravel 12 ми отримали можливість використовувати новий підхід для визначення локальних скоупів у моделях Eloquent. Дізнайтеся, як новий атрибут #[Scope] спрощує цей процес і зберігає ваші назви методів незмінними

172 Оновлено 07 травня, 2026

Використання повнотекстового пошуку в Laravel

Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом

10 Оновлено 07 травня, 2026

Генерація документації в Laravel за допомогою штучного інтелекту

Docudoodle — це потужний пакет для генерації документації в Laravel, який допомагає легко аналізувати вашу кодову базу та створювати документацію за допомогою обраного вами AI. Чи готові ви дізнатися, як цей інструмент може спростити вашу роботу з документуванням коду? Читайте далі!