Laravel ClickHouse: درایور کامل ClickHouse برای لاراول
خلاصهٔ کاملتر
Laravel ClickHouse یه پکیجه که ClickHouse رو بهصورت کامل وارد اکوسیستم لاراول میکنه. ClickHouse یه دیتابیس ستونمحور اپنسورسه که برای بار کاری آنالیتیکی ساخته شده — دادهها رو بهجای ردیف، بر اساس ستون ذخیره میکنه و همین باعث میشه aggregationهای روی دادههای بزرگ خیلی سریع انجام بشن؛ حتی میلیاردها ردیف در چند ثانیه. ردیابی رویدادها، دادههای time-series و داشبوردهای آنالیتیکی از جمله کاربردهای اصلیشه.
با این درایور میشه مدلهای Eloquent رو دقیقاً مثل بقیهی کانکشنها تعریف کرد. چون ClickHouse از primary key با auto-increment پشتیبانی نمیکنه، درایور بهصورت پیشفرض مدلها رو با ID غیر auto-increment تنظیم میکنه. Scopeها و Collectionها هم مثل همیشه کار میکنن:
class Event extends Model
{
protected $connection = 'clickhouse';
}
$events = Event::where('user_id', 1)->get();Query Builder علاوه بر متدهای استاندارد لاراول، کلازهای مخصوص ClickHouse رو هم داره. مثلاً پارامتر final کلاز FINAL رو اعمال میکنه که ClickHouse رو مجبور میکنه ردیفهای تکراری رو در زمان خواندن ادغام کنه — این ویژگی مخصوصاً با engine مدل ReplacingMergeTree خیلی بهدرد میخوره:
$events = DB::connection('clickhouse')
->table('events', final: true)
->where('user_id', 1)
->get();برای تعریف ساختار جدول هم از ClickHouseBlueprint در Schema Builder استفاده میشه که امکان تعریف engine، partition key، order key و تایپهای خاصی مثل LowCardinality رو میده. دستورات artisan migrate هم بهخوبی با یه migration repository سازگار با ClickHouse کار میکنن:
Schema::connection('clickhouse')->create('events', function (ClickHouseBlueprint $table) {
$table->engine('MergeTree()');
$table->orderBy(['id', 'created_at']);
$table->partitionBy('toYYYYMM(created_at)');
});یه قابلیت جالب دیگه هلپر Parallelه که با استفاده از async HTTP pool گازل، چندین کوئری رو بهصورت همزمان اجرا میکنه. این یعنی بهجای اینکه کوئریها یکییکی منتظر هم بمونن، با هم فرستاده میشن و نتایج کنار هم جمع میشن — برای داشبوردهایی که چند کوئری سنگین موازی دارن خیلی مفیده. برای transport هم دو گزینه Guzzle و Curl/phpclickhouse در اختیاره.
نکات کلیدی:
- ClickHouse یه دیتابیس ستونمحوره که برای آنالیتیکس روی دادههای بزرگ بهینه شده
- پشتیبانی کامل از Eloquent، Query Builder، Schema Builder و Migration لاراول
- کلازهای اختصاصی ClickHouse مثل
FINAL،PREWHERE،ARRAY JOINوSAMPLEبه Query Builder اضافه شدن - هلپر
Parallelاجازه میده چند کوئری بهصورت آسنکرون و موازی اجرا بشن - از آنجا که ClickHouse از auto-increment ID پشتیبانی نمیکنه، درایور این رو بهصورت پیشفرض مدیریت میکنه




