ده سالگی متنباز شدن ClickHouse
خلاصهٔ کاملتر
ClickHouse دقیقاً ده سال پیش، ۱۵ ژوئن ۲۰۱۶، متنباز شد و به گفتهٔ نویسنده از اون موقع به محبوبترین دیتابیس تحلیلی متنباز با بیش از ۲۰۰۰ مشارکتکننده تبدیل شده. این پست رو الکسی میلوویدوف، سازندهش، نوشته و توش هم داستان ساخت رو مرور میکنه و هم فلسفهٔ متنباز بودنش رو.
نویسنده میگه متنباز بودن سطحهای مختلفی داره: از اینکه فقط کد رو برای خوندن باز کنی (مثل انتشار موزهای Doom یا MS-DOS) تا بالاترین سطح که شامل راهنمای مشارکت باز، تسکترکر، بازبینی کد، نقشهٔ راه، CI و مستندات میشه. اون میگه همیشه بالاترین سطح رو هدف گرفته: کلیکهاوس باید هم نمونهٔ خوبی از ساخت یه دیتابیس عالی باشه، هم جایی برای یاد گرفتن C++ و آزمایش ساختمانداده و بهینهسازی، و اسم هر مشارکتکننده رو هم تو changelog و حتی داخل خود دیتابیس ثبت میکنه.
ریشهٔ ماجرا برمیگرده به کار روی یه سیستم آنالیتیکس وب شبیه Google Analytics: لاگ بازدید صفحات میاومد و با MySQL و C++ پردازش میشد، ولی حجم داده مدام بیشتر میشد و چیزی جواب نمیداد. نویسنده دنبال هر راهحلی میگشت و دیتابیسهای ستونی رو امتحان کرد — Infobright، InfiniDB، Vertica، MonetDB، LucidDB — ولی هیچکدوم از پس بارگذاری ۱۰۰ میلیارد رکورد در روز با ۵۰۰ ستون برنمیاومدن.
برای همین خودش دوتا نمونهٔ اولیه ساخت: OLAPServer (ستونی، برای دادهٔ تجمیعنشده) و Metrage (سطری و بلادرنگ با ساختار CRDT). بعد فکر کرد چی میشه اگه سرعت رویکرد ستونی رو با بهروزرسانی بلادرنگ merge tree ترکیب کنه و یه زبان کوئری و انواع داده هم بهش بده — و کلیکهاوس اینطوری شروع شد. نکتهٔ جالبش اینه که کلیکهاوس کاملاً از صفر پیاده شده و برخلاف خیلی از دیتابیسهای امروزی، پایهش Postgres یا Datafusion نیست.
نویسنده قدمبهقدم ساخت رو مرور میکنه: اول کلاسهای ستون تو حافظه (IColumn و Field)، بعد توابع تجمیعی، بعد table engineها، بعد فشردهسازی (اول QuickLZ و بعد جایگزینی با LZ4)، و بعد MergeTree که مرتبسازی افزایشی داده رو تو پسزمینه انجام میداد. با اضافه شدن ReplicatedMergeTree روی ZooKeeper، از ۲۰۱۴ برای کوئریهای کاربر تو پروداکشن به کار رفت و روزانه صدها میلیارد رکورد رو نگه میداشت.
دربارهٔ متنباز شدن هم میگه یه فهرست از مزیتها و ریسکها آماده کرد تا مدیریت شرکت رو قانع کنه، و بعد از تأیید، لوگو و وبسایت و پست وبلاگ و مخزن Debian رو آماده کرد و ۱۵ ژوئن ۲۰۱۶ برای همه باز شد. آخرش هم هر مهندسی رو تشویق میکنه کدش رو متنباز کنه؛ میگه بدترین حالتش اینه که هیچی ازش درنیاد، ولی شاید مثل کلیکهاوس روی نسلها اثر بذاره.
نکات کلیدی:
- ClickHouse ۱۵ ژوئن ۲۰۱۶ متنباز شد؛ حالا محبوبترین دیتابیس تحلیلی متنباز با بیش از ۲۰۰۰ مشارکتکنندهست.
- کاملاً از صفر ساخته شده و پایهش هیچ دیتابیس دیگهای نیست.
- از دل دو نمونهٔ اولیه (OLAPServer ستونی و Metrage سطری) و ترکیب ایدههاشون درومد.
- MySQL از پس ۱۰۰ میلیارد رکورد در روز با ۵۰۰ ستون برنمیاومد و همین جرقهٔ ساختش شد.
- نویسنده بالاترین سطح متنباز بودن رو هدف میدونه و همه رو به متنباز کردن کدشون تشویق میکنه.




