شمارش بازدیدها و اکشنهای کاربر با فناوریهای مدرن داده
در پست قبلی درباره روشهای کلاسیک شمارش بازدید محصولات یا تماشای ویدئو صحبت کردم.
https://t.iss.one/bigdata_ir/445
اما امروز میخواهیم به سراغ راهکارهای مدرنتر برویم. پیشرفتهای اخیر در استکهای داده، امکانات جدیدی برای ما فراهم کرده که فقط محدود به شمارش ساده نیستند.
🎯 هدف ما فقط شمارش نیست!
آنچه امروز اهمیت دارد، ذخیرهسازی دقیق تمام اکشنهای کاربر است.
چرا؟
✅برای شخصیسازی تجربه کاربری بر اساس رفتار هر فرد
✅برای تحلیل عمیق روی محصولات یا ویدئوها و بهبود تجربه کاربران
پس راهکار ایدهآل باید هم شمارش و هم ذخیرهسازی کامل دادهها را پوشش دهد.
🛠 سه راهکار مدرن برای شمارش و ذخیره اکشنها
1️⃣ استفاده از Cassandra / ScyllaDB و قابلیت Distributed Counter
🎯برای هر کاربر و هر محصول، یک جدول بازدید ایجاد میکنیم
🎯هر اکشن را در هر دو جدول ذخیره میکنیم (مدل داده این دیتابیسها بر اساس Query طراحی میشود)
🎯شمارش اکشنها با Distributed Counter انجام میشود
🎯امکان تعریف شمارنده برای بازههای زمانی مختلف (ساعتی، روزانه و...) وجود دارد
✅مزیت اصلی: مقیاسپذیری بالا و سرعت فوقالعاده
2️⃣ ذخیره خام دادهها در قالب Apache Iceberg با AutoMQ
🎯جایگزین Kafka سنتی با AutoMQ
🎯 پیام رسان AutoMQ که دقیقا منطبق بر استاندارد کافکا است، پیامها را مستقیماً در Iceberg ذخیره میکند
🎯شمارش با Flink + Redis انجام میشود
🎯امکان تحلیل بعدی رفتار کاربران با ابزارهایی مثل ClickHouse یا Spark
✅مزیت اصلی: فشار کمتر روی دیتابیس اصلی و نگهداری دادههای خام برای تحلیلهای آینده
3️⃣ استفاده از دیتابیس جریانی RisingWave – سریع، مدرن و چندکاره 🚀
دیتابیس RisingWave یک دیتابیس جریانی (Streaming Database) است که با استاندارد PostgreSQL توسعه یافته و از SQL بهعنوان زبان اصلی پردازش دادههای جریانی استفاده میکند.
📌 ویژگیها و مزایا:
🎯شمارش و پردازش جریانی با SQL ساده → ایجاد Materialized Viewها برای شمارش بازدیدها و اکشنها در لحظه
🎯ذخیره اکشنها در S3 و Iceberg → امکان نگهداری دادههای خام برای تحلیلهای آینده
🎯سرعت بالا به لطف Rust → هسته سیستم با زبان Rust نوشته شده و از مزایای کارایی و مصرف کم منابع بهره میبرد
🎯پشتیبانی از Sinkهای متنوع → خروجی مستقیم به دیتابیسها، سیستمهای پیامرسان، S3، Kafka و...
🎯پردازش رویدادهای پیچیده → اجرای Queryهای تحلیلی پیشرفته بر روی جریان داده بدون نیاز به ابزار جداگانه
✅ نتیجه؟
با RisingWave میتوان علاوه بر شمارش بازدید و اکشنها، بسیاری از پردازشهای همزمان و تحلیلهای اولیه را نیز انجام داد، بدون نیاز به زیرساخت پیچیده و چندلایه.
📌 جمعبندی
این سه راهکار نسبت به روشهای سنتی و حتی رویکرد Kafka + Flink، مدرنتر هستند و از فناوریهای جدید حوزه داده بهره میبرند.
اگر در حال طراحی یا ارتقای بخش شمارش بازدید و اکشنها هستید، پیشنهاد میکنم این گزینهها را نیز بررسی کنید.
#DataEngineering #StreamingData #RealTimeAnalytics #Kafka #Flink #Iceberg #ClickHouse #RisingWave #ScyllaDB #BigData #UserAnalytics #TechInnovation #RustLang #SQL
در پست قبلی درباره روشهای کلاسیک شمارش بازدید محصولات یا تماشای ویدئو صحبت کردم.
https://t.iss.one/bigdata_ir/445
بهطور خلاصه گفتیم که در بار ترافیکی بالا، بهتر است بازدیدها را در حافظه نگهداری و جمعبندی کرده، سپس در بازههای زمانی مشخص وارد دیتابیس کنیم. همچنین به رویکرد پیشرفتهتری با Kafka + Flink برای ایجاد بافر و بروزرسانی دورهای دیتابیس اشاره شد.
اما امروز میخواهیم به سراغ راهکارهای مدرنتر برویم. پیشرفتهای اخیر در استکهای داده، امکانات جدیدی برای ما فراهم کرده که فقط محدود به شمارش ساده نیستند.
🎯 هدف ما فقط شمارش نیست!
آنچه امروز اهمیت دارد، ذخیرهسازی دقیق تمام اکشنهای کاربر است.
چرا؟
✅برای شخصیسازی تجربه کاربری بر اساس رفتار هر فرد
✅برای تحلیل عمیق روی محصولات یا ویدئوها و بهبود تجربه کاربران
پس راهکار ایدهآل باید هم شمارش و هم ذخیرهسازی کامل دادهها را پوشش دهد.
🛠 سه راهکار مدرن برای شمارش و ذخیره اکشنها
1️⃣ استفاده از Cassandra / ScyllaDB و قابلیت Distributed Counter
🎯برای هر کاربر و هر محصول، یک جدول بازدید ایجاد میکنیم
🎯هر اکشن را در هر دو جدول ذخیره میکنیم (مدل داده این دیتابیسها بر اساس Query طراحی میشود)
🎯شمارش اکشنها با Distributed Counter انجام میشود
🎯امکان تعریف شمارنده برای بازههای زمانی مختلف (ساعتی، روزانه و...) وجود دارد
✅مزیت اصلی: مقیاسپذیری بالا و سرعت فوقالعاده
2️⃣ ذخیره خام دادهها در قالب Apache Iceberg با AutoMQ
🎯جایگزین Kafka سنتی با AutoMQ
🎯 پیام رسان AutoMQ که دقیقا منطبق بر استاندارد کافکا است، پیامها را مستقیماً در Iceberg ذخیره میکند
🎯شمارش با Flink + Redis انجام میشود
🎯امکان تحلیل بعدی رفتار کاربران با ابزارهایی مثل ClickHouse یا Spark
✅مزیت اصلی: فشار کمتر روی دیتابیس اصلی و نگهداری دادههای خام برای تحلیلهای آینده
3️⃣ استفاده از دیتابیس جریانی RisingWave – سریع، مدرن و چندکاره 🚀
دیتابیس RisingWave یک دیتابیس جریانی (Streaming Database) است که با استاندارد PostgreSQL توسعه یافته و از SQL بهعنوان زبان اصلی پردازش دادههای جریانی استفاده میکند.
📌 ویژگیها و مزایا:
🎯شمارش و پردازش جریانی با SQL ساده → ایجاد Materialized Viewها برای شمارش بازدیدها و اکشنها در لحظه
🎯ذخیره اکشنها در S3 و Iceberg → امکان نگهداری دادههای خام برای تحلیلهای آینده
🎯سرعت بالا به لطف Rust → هسته سیستم با زبان Rust نوشته شده و از مزایای کارایی و مصرف کم منابع بهره میبرد
🎯پشتیبانی از Sinkهای متنوع → خروجی مستقیم به دیتابیسها، سیستمهای پیامرسان، S3، Kafka و...
🎯پردازش رویدادهای پیچیده → اجرای Queryهای تحلیلی پیشرفته بر روی جریان داده بدون نیاز به ابزار جداگانه
✅ نتیجه؟
با RisingWave میتوان علاوه بر شمارش بازدید و اکشنها، بسیاری از پردازشهای همزمان و تحلیلهای اولیه را نیز انجام داد، بدون نیاز به زیرساخت پیچیده و چندلایه.
📌 جمعبندی
این سه راهکار نسبت به روشهای سنتی و حتی رویکرد Kafka + Flink، مدرنتر هستند و از فناوریهای جدید حوزه داده بهره میبرند.
اگر در حال طراحی یا ارتقای بخش شمارش بازدید و اکشنها هستید، پیشنهاد میکنم این گزینهها را نیز بررسی کنید.
#DataEngineering #StreamingData #RealTimeAnalytics #Kafka #Flink #Iceberg #ClickHouse #RisingWave #ScyllaDB #BigData #UserAnalytics #TechInnovation #RustLang #SQL
👍5
آغاز به کار رسمی مدرسه مهندسی داده سپهرام
با افتخار اعلام میکنم که وبسایت https://sepahram.ir به عنوان اولین مدرسه کاربردی مهندسی داده در ایران راهاندازی شد. هدف ما ارائه آموزشهای عملی و پروژهمحور در حوزه #مهندسی_داده برای جامعه فارسیزبان است.
🔰 شروع فعالیت مدرسه با برگزاری دوره نوین:
✨ مبانی مهندسی داده ✨
در این دوره، مفاهیم پایه و ابزارهای اصلی مهندسی داده به شکلی کاملاً عملی آموزش داده میشود، شامل:
🗄 پایگاه دادهها و طراحی اولیه با #PostgreSQL
🛠 آشنایی با #Airflow برای مدیریت و زمانبندی جریانهای داده
⚡️ پردازش دادههای عظیم با #ApacheSpark
🔄 پردازش جریانهای داده در #Kafka
📊 آشنایی عملیاتی با #ClickHouse برای تحلیل سریع و بلادرنگ دادهها
🧊 کار با #ApacheIceberg به عنوان نسل جدید فرمتهای جدولی و مدیریت داده در مقیاس بزرگ
🎯 برای تضمین یادگیری گامبهگام و مؤثر:
- هر درس شامل چند آزمون کوتاه و مفهومی است.
- برای دریافت گواهینامه پایان دوره، انجام و تحویل یک پروژه عملی و کاربردی الزامی است. جزئیات این پروژه در صفحه دوره ذکر شده است.
💬 در صورت بروز مشکل در مسیر آموزشی یا هنگام انجام آزمونها، میتوانید از طریق پیامرسانهای تلگرام، واتساپ یا بله با حساب پشتیبانی مدرسه مهندسی داده سپهرام در ارتباط باشید:
📌 شناسه پشتیبانی: @sepahram_ir
🙌 به عنوان موسس و مدرس اصلی این مدرسه، امیدوارم سپهرام گامی مؤثر در جهت توانمندسازی جامعه فارسیزبان در مسیر حرفهای مهندسی داده باشد.
🔗 جزئیات بیشتر و ثبتنام:
https://sepahram.ir/courses/intro-to-data-engineering
کانال رسمی سپهرام :
https://t.iss.one/sepahram_school
با افتخار اعلام میکنم که وبسایت https://sepahram.ir به عنوان اولین مدرسه کاربردی مهندسی داده در ایران راهاندازی شد. هدف ما ارائه آموزشهای عملی و پروژهمحور در حوزه #مهندسی_داده برای جامعه فارسیزبان است.
🔰 شروع فعالیت مدرسه با برگزاری دوره نوین:
✨ مبانی مهندسی داده ✨
در این دوره، مفاهیم پایه و ابزارهای اصلی مهندسی داده به شکلی کاملاً عملی آموزش داده میشود، شامل:
🗄 پایگاه دادهها و طراحی اولیه با #PostgreSQL
🛠 آشنایی با #Airflow برای مدیریت و زمانبندی جریانهای داده
⚡️ پردازش دادههای عظیم با #ApacheSpark
🔄 پردازش جریانهای داده در #Kafka
📊 آشنایی عملیاتی با #ClickHouse برای تحلیل سریع و بلادرنگ دادهها
🧊 کار با #ApacheIceberg به عنوان نسل جدید فرمتهای جدولی و مدیریت داده در مقیاس بزرگ
🎯 برای تضمین یادگیری گامبهگام و مؤثر:
- هر درس شامل چند آزمون کوتاه و مفهومی است.
- برای دریافت گواهینامه پایان دوره، انجام و تحویل یک پروژه عملی و کاربردی الزامی است. جزئیات این پروژه در صفحه دوره ذکر شده است.
💬 در صورت بروز مشکل در مسیر آموزشی یا هنگام انجام آزمونها، میتوانید از طریق پیامرسانهای تلگرام، واتساپ یا بله با حساب پشتیبانی مدرسه مهندسی داده سپهرام در ارتباط باشید:
📌 شناسه پشتیبانی: @sepahram_ir
🙌 به عنوان موسس و مدرس اصلی این مدرسه، امیدوارم سپهرام گامی مؤثر در جهت توانمندسازی جامعه فارسیزبان در مسیر حرفهای مهندسی داده باشد.
🔗 جزئیات بیشتر و ثبتنام:
https://sepahram.ir/courses/intro-to-data-engineering
کانال رسمی سپهرام :
https://t.iss.one/sepahram_school
👍8
وقتی شمارش دقیق خیلی گرون میشه: HyperLogLog 🔢
وقتی با دادههای بزرگ سروکار داریم، خیلی وقتها لازم داریم بدانیم:
✅چند کاربر یکتا در سایت بودهاند؟
✅چند IP مختلف به API ما وصل شدهاند؟
✅چند محصول متفاوت در یک بازه دیده شده؟
💡 راه ساده این است که همه شناسهها را نگه داریم و آخرش بشماریم.
اما در دیتابیسهای توزیعشده، این یعنی انفجار حافظه و فشار شدید روی شبکه.
برای همین سراغ ساختارهای دادهی «تقریبی» میرویم که با مصرف کم حافظه، جواب نزدیک به درست بدهند. یکی از معروفترینها: #HyperLogLog.
🎲 مثال با تاس: رخدادهای نادر
فرض کن کسی مدام تاس میریزد. تو نمیدانی چند بار تاس انداخته، فقط نتایج را میبینی.
🔹 اگه فقط یک بار ۶ آمد → عادی است.
🔹 اگه دو بار پشت سر هم ۶ آمد → کمی نادرتر.
🔹 اگه چهار بار پشت سر هم ۶ آمد → خیلی خیلی نادر.
این رخدادهای نادر سرنخ خوبی هستند. وقتی چیزی خیلی نادر دیدی، میتوانی حدس بزنی که احتمالا تعداد دفعات تاس انداختن خیلی زیاد بوده است.
🔑 ارتباط با #HyperLogLog
حالا این ایده را میبریم به دنیای هش:
📌هر آیتم (مثل IP یا UserID) را هش میکنیم → یک رشتهی طولانی صفر و یک.
📌به ابتدای این رشته نگاه میکنیم: چند صفر پشت سر هم آمده؟
📌هرچه صفرهای بیشتری پشت سر هم باشد، اتفاق نادرتر است → پس احتمالاً دادههای یکتای زیادی وارد شدهاند.
📌در نسخهی سادهی الگوریتم، همیشه بیشترین تعداد صفر دیدهشده را نگه میداریم.
مثلاً اگر حداکثر ۶ صفر دیدهایم، میگوییم:
تقریباً 6^2 = 64 آیتم یکتا داشتهایم. (بر اساس فرمولهای آماری)
🚨 ایراد نسخهی ساده
این روش یک اشکال بزرگ دارد:
اگر همان اوّل کار شانسی هشی بیاید با ۲۰ صفر پشت سر هم، الگوریتم میگوید: «اینجا باید حدود یک میلیون آیتم یکتا دیده شده باشد!»
در حالی که شاید فقط ۱۰ آیتم وارد شدهاند.
مثل این است که دفعهی اوّل ۴ تا شش پشت سر هم بیاید و ما فکر کنیم هزار بار تاس ریختهایم!
🪣 راهحل: باکتینگ
برای حل این مشکل، #HyperLogLog واقعی از باکتها استفاده میکند:
🎯چند بیت اول هش → تعیین میکند آیتم در کدام باکت قرار بگیرد.
🎯بقیه بیتها → برای شمردن تعداد صفرهای ابتدای رشته استفاده میشود.
🎯در هر باکت، فقط «بیشترین تعداد صفر» ذخیره میشود.
🎯در پایان، الگوریتم همه باکتها را با هم ترکیب میکند (با میانگین هارمونیک + اصلاح خطا).
به این ترتیب، یک رخداد نادر شانسی نمیتواند کل تخمین را خراب کند.
🏗 کجاها استفاده میشود؟
الگوریتم شمارش #HyperLogLog امروز در خیلی از دیتابیسها و ابزارهای بزرگ بهکار میرود:
🧩ردیس → دستورات PFADD و PFCOUNT برای شمارش یکتاها
🧩بیگکوئری→ پشت APPROX_COUNT_DISTINCT
🧩ترینو/Presto و #ClickHouse → توابع شمارش تقریبی
🧩اسپارک و #Snowflake → در approx_count_distinct
🧩و حتی سیستمهایی مثل Cassandra / ScyllaDB که برای کم کردن بار IO از ساختارهای مشابه استفاده میکنند
✨ خلاصه اینکه:
الگوریتم HyperLogLog بهجای شمردن دقیق، «حدس تقریبی اما پایدار» میزند؛ و همین باعث شده در مقیاس وب و دیتای عظیم، تبدیل به یک ابزار استاندارد شود.
کانال مدرسه مهندسی داده سپهرام: @sepahram_school
وقتی با دادههای بزرگ سروکار داریم، خیلی وقتها لازم داریم بدانیم:
✅چند کاربر یکتا در سایت بودهاند؟
✅چند IP مختلف به API ما وصل شدهاند؟
✅چند محصول متفاوت در یک بازه دیده شده؟
💡 راه ساده این است که همه شناسهها را نگه داریم و آخرش بشماریم.
اما در دیتابیسهای توزیعشده، این یعنی انفجار حافظه و فشار شدید روی شبکه.
برای همین سراغ ساختارهای دادهی «تقریبی» میرویم که با مصرف کم حافظه، جواب نزدیک به درست بدهند. یکی از معروفترینها: #HyperLogLog.
🎲 مثال با تاس: رخدادهای نادر
فرض کن کسی مدام تاس میریزد. تو نمیدانی چند بار تاس انداخته، فقط نتایج را میبینی.
🔹 اگه فقط یک بار ۶ آمد → عادی است.
🔹 اگه دو بار پشت سر هم ۶ آمد → کمی نادرتر.
🔹 اگه چهار بار پشت سر هم ۶ آمد → خیلی خیلی نادر.
این رخدادهای نادر سرنخ خوبی هستند. وقتی چیزی خیلی نادر دیدی، میتوانی حدس بزنی که احتمالا تعداد دفعات تاس انداختن خیلی زیاد بوده است.
🔑 ارتباط با #HyperLogLog
حالا این ایده را میبریم به دنیای هش:
📌هر آیتم (مثل IP یا UserID) را هش میکنیم → یک رشتهی طولانی صفر و یک.
📌به ابتدای این رشته نگاه میکنیم: چند صفر پشت سر هم آمده؟
📌هرچه صفرهای بیشتری پشت سر هم باشد، اتفاق نادرتر است → پس احتمالاً دادههای یکتای زیادی وارد شدهاند.
📌در نسخهی سادهی الگوریتم، همیشه بیشترین تعداد صفر دیدهشده را نگه میداریم.
مثلاً اگر حداکثر ۶ صفر دیدهایم، میگوییم:
تقریباً 6^2 = 64 آیتم یکتا داشتهایم. (بر اساس فرمولهای آماری)
🚨 ایراد نسخهی ساده
این روش یک اشکال بزرگ دارد:
اگر همان اوّل کار شانسی هشی بیاید با ۲۰ صفر پشت سر هم، الگوریتم میگوید: «اینجا باید حدود یک میلیون آیتم یکتا دیده شده باشد!»
در حالی که شاید فقط ۱۰ آیتم وارد شدهاند.
مثل این است که دفعهی اوّل ۴ تا شش پشت سر هم بیاید و ما فکر کنیم هزار بار تاس ریختهایم!
🪣 راهحل: باکتینگ
برای حل این مشکل، #HyperLogLog واقعی از باکتها استفاده میکند:
🎯چند بیت اول هش → تعیین میکند آیتم در کدام باکت قرار بگیرد.
🎯بقیه بیتها → برای شمردن تعداد صفرهای ابتدای رشته استفاده میشود.
🎯در هر باکت، فقط «بیشترین تعداد صفر» ذخیره میشود.
🎯در پایان، الگوریتم همه باکتها را با هم ترکیب میکند (با میانگین هارمونیک + اصلاح خطا).
به این ترتیب، یک رخداد نادر شانسی نمیتواند کل تخمین را خراب کند.
🏗 کجاها استفاده میشود؟
الگوریتم شمارش #HyperLogLog امروز در خیلی از دیتابیسها و ابزارهای بزرگ بهکار میرود:
🧩ردیس → دستورات PFADD و PFCOUNT برای شمارش یکتاها
🧩بیگکوئری→ پشت APPROX_COUNT_DISTINCT
🧩ترینو/Presto و #ClickHouse → توابع شمارش تقریبی
🧩اسپارک و #Snowflake → در approx_count_distinct
🧩و حتی سیستمهایی مثل Cassandra / ScyllaDB که برای کم کردن بار IO از ساختارهای مشابه استفاده میکنند
✨ خلاصه اینکه:
الگوریتم HyperLogLog بهجای شمردن دقیق، «حدس تقریبی اما پایدار» میزند؛ و همین باعث شده در مقیاس وب و دیتای عظیم، تبدیل به یک ابزار استاندارد شود.
کانال مدرسه مهندسی داده سپهرام: @sepahram_school
👌4❤1🔥1
جلسه اول دوره ClickHouse در مدرسه مهندسی داده سپهرام برگزار شد و فیلم بخش نصب و راهاندازی و شروع به کار با ClickHouse اکنون در یوتیوب و صفحه درس دوره منتشر شده است.
دوستانی که تاکنون فرصت نصب و کار کردن با ClickHouse را نداشتهاند اما علاقه دارند با این دیتابیس پرقدرت و سریع تحلیلی آشنا شوند، میتوانند در یک جلسه کوتاه نیمساعته به صورت عملی کار با آن را تجربه کنند.
در این ویدئو خواهید دید:
ـ نصب ClickHouse روی ویندوز با استفاده از WSL
ـ راهاندازی سرور و اتصال اولیه
ـ کار با محیط clickhouse-client
ـ ایجاد دیتابیس و جداول اولیه برای شروع کار
📺 مشاهده ویدئوی جلسه اول:
👉 https://www.youtube.com/watch?v=gGpSbMpfAiM
برای دیدن بخش دوم و ادامه ویدئوهای آموزشی به آدرس زیر مراجعه کنید:
👉 https://sepahram.ir/courses/clickhouse-201/
#ClickHouse #DataEngineering #BigData #Analytics #OLAP #HandsOn
کانال تلگرام سپهرام : @sepahram_school
دوستانی که تاکنون فرصت نصب و کار کردن با ClickHouse را نداشتهاند اما علاقه دارند با این دیتابیس پرقدرت و سریع تحلیلی آشنا شوند، میتوانند در یک جلسه کوتاه نیمساعته به صورت عملی کار با آن را تجربه کنند.
در این ویدئو خواهید دید:
ـ نصب ClickHouse روی ویندوز با استفاده از WSL
ـ راهاندازی سرور و اتصال اولیه
ـ کار با محیط clickhouse-client
ـ ایجاد دیتابیس و جداول اولیه برای شروع کار
📺 مشاهده ویدئوی جلسه اول:
👉 https://www.youtube.com/watch?v=gGpSbMpfAiM
برای دیدن بخش دوم و ادامه ویدئوهای آموزشی به آدرس زیر مراجعه کنید:
👉 https://sepahram.ir/courses/clickhouse-201/
#ClickHouse #DataEngineering #BigData #Analytics #OLAP #HandsOn
کانال تلگرام سپهرام : @sepahram_school
🔥1🙏1
مهندسی داده
Apache Doris vs ClickHouse.pdf
آپاچی دوریس و سرعت بالا در سناریوهای مبتنی بر JOIN
- توضیحی راجع به pdf بالا ـ
اخیراً گزارشی از سمت VeloDB (Powered by Apache Doris) منتشر شد که در آن، عملکرد Apache Doris و ClickHouse در سناریوهای سنگین مبتنی بر JOIN و کوئریهای تحلیلی پیچیده با هم مقایسه شدهاند.
در همین زمینه، تجربه اخیر اسنپفود با StarRocks (که رضا دهقانی در پست زیر به آن اشاره کرده بود) هم نشان میدهد که انتخاب دیتابیس تحلیلی تصمیمی وابسته به نیازها و شرایط سازمان است و یک پاسخ واحد برای همه سناریوها وجود ندارد.
https://lnkd.in/dvc76Dxa
خلاصه عملکرد (Benchmark Results)
در تستها مشخص شد که در سناریوی CoffeeBench (که به شدت بر JOIN متکی است)، Doris حدود ۴ برابر سریعتر از ClickHouse عمل کرده است. در مجموعه تستهای TPC-H که بار تحلیلی پیچیدهتری دارند، سرعت Doris تا ۳۰ برابر بیشتر گزارش شد. و در نهایت در سناریوهای سنگینتر TPC-DS، Doris تا ۴۰ برابر سریعتر از ClickHouse نتیجه گرفت.
⚙️ مشخصات تست (Test Config):
- 2 × AWS m6i.8xlarge (هرکدام 32 vCPU و 128GiB RAM)
- Apache Doris v3.0.7 در برابر ClickHouse v25.8
- On-premises
📌 لازم به ذکر است که CoffeeBench در ابتدا توسط Josue “Josh” Bogran برای مقایسه Databricks و Snowflake طراحی شده بود، اما به دلیل ماهیت JOIN-heavy خود، اکنون به یکی از معیارهای پرکاربرد برای سنجش دیتابیسهای تحلیلی تبدیل شده است.
#doris #starrocks #clickhouse
- توضیحی راجع به pdf بالا ـ
اخیراً گزارشی از سمت VeloDB (Powered by Apache Doris) منتشر شد که در آن، عملکرد Apache Doris و ClickHouse در سناریوهای سنگین مبتنی بر JOIN و کوئریهای تحلیلی پیچیده با هم مقایسه شدهاند.
من این گزارش را اینجا بازنشر میکنم تا برای دوستانی که به دنبال یک راهکار تحلیلی سریع و مشابه دنیای دیتابیسهای رابطهای هستند، مفید باشد. بهویژه برای کسانی که نیاز به تضمین یکتایی کلید اصلی و اجرای JOINهای متعدد دارند، اما امکان ایجاد جداول denormalized در ClickHouse برایشان مقدور نیست.
در همین زمینه، تجربه اخیر اسنپفود با StarRocks (که رضا دهقانی در پست زیر به آن اشاره کرده بود) هم نشان میدهد که انتخاب دیتابیس تحلیلی تصمیمی وابسته به نیازها و شرایط سازمان است و یک پاسخ واحد برای همه سناریوها وجود ندارد.
https://lnkd.in/dvc76Dxa
خلاصه عملکرد (Benchmark Results)
در تستها مشخص شد که در سناریوی CoffeeBench (که به شدت بر JOIN متکی است)، Doris حدود ۴ برابر سریعتر از ClickHouse عمل کرده است. در مجموعه تستهای TPC-H که بار تحلیلی پیچیدهتری دارند، سرعت Doris تا ۳۰ برابر بیشتر گزارش شد. و در نهایت در سناریوهای سنگینتر TPC-DS، Doris تا ۴۰ برابر سریعتر از ClickHouse نتیجه گرفت.
⚙️ مشخصات تست (Test Config):
- 2 × AWS m6i.8xlarge (هرکدام 32 vCPU و 128GiB RAM)
- Apache Doris v3.0.7 در برابر ClickHouse v25.8
- On-premises
📌 لازم به ذکر است که CoffeeBench در ابتدا توسط Josue “Josh” Bogran برای مقایسه Databricks و Snowflake طراحی شده بود، اما به دلیل ماهیت JOIN-heavy خود، اکنون به یکی از معیارهای پرکاربرد برای سنجش دیتابیسهای تحلیلی تبدیل شده است.
#doris #starrocks #clickhouse
Linkedin
#dataengineering #starrocks #lakehouse #warehouse #استارراکس | Reza Dehghani
تو جریان پروژه های کاری دنبال راهحلی بودیم که بتونیم دادههامون رو همزمان سریع و از منابع مختلف تحلیل کنیم. بعد از مقایسه ابزارهای مختلف، در نهایت StarRocks رو انتخاب کردم و تجربه متفاوت و جالبی بود.
استارراکس خودش رو یه دیتاورهوس نسل جدید معرفی میکنه…
استارراکس خودش رو یه دیتاورهوس نسل جدید معرفی میکنه…
👍2🙏1
Forwarded from عکس نگار
وقتی Excel به ClickHouse متصل میشود
در سالهای اخیر، با رشد تصاعدی حجم داده در شرکتهای بزرگ ایرانی، زیرساختهای سنتی مانند Oracle و SQL Server که سالها نقش ستون فقرات ذخیرهسازی دادهها را داشتند، دیگر پاسخگوی نیازهای تحلیلی جدید نیستند. بسیاری از این سازمانها در گزارشگیری و تحلیل دادههای حجیم دچار کندی محسوس شدهاند.
در نتیجه، تمایل به سمت استفاده از دیتابیسهای تحلیلی نوین مانند hashtag#ClickHouse و hashtag#StarRocks افزایش یافته است، فناوریهایی که با معماری columnar و توان پردازشی بالا، بهخوبی برای تحلیلهای سنگین و بلادرنگ طراحی شدهاند.
در یکی از مشاورههای اخیرم با یکی از فروشگاههای زنجیرهای بزرگ کشور، در حال بررسی #ClickHouse برای ذخیره و سرویسدهی تراکنشهای روزانه هستیم.
🔥اما چالش اصلی این بود که تیم فنی و کاربران نهایی سالها با استک مایکروسافت کار کرده بودند؛ بیشتر گزارشها از طریق Excel و با استفاده از SSAS و Power Pivot تولید میشد. بنابراین به دنبال راهکاری بودیم که بدون تغییر اساسی در محیط گزارشگیری کاربران، بتوان از ClickHouse نیز بهره برد.
در این مسیر، به دنبال یک ROLAP Engine بودیم که از MDX پشتیبانی کند و به پروژهای جالب به نام eMondrian رسیدیم.
🔰 پروژه eMondrian در واقع نسخهای توسعهیافته از Mondrian OLAP Engine است که امکان اتصال به دیتابیسهای مدرن از جمله ClickHouse را فراهم میکند. با این ابزار میتوان:
✔️همان مدل چندبعدی (Cube) را روی دادههای ClickHouse تعریف کرد،
✔️همچنان از MDX Queryها استفاده نمود،
✔️و حتی گزارشها را مستقیماً از طریق Excel یا Power BI بهصورت Live Connection مشاهده کرد.
در تستهای اولیه، سرعت اجرای کوئریها روی دادههای چندصدمیلیونی بسیار قابلقبول بود و ساختار XML-محور schema نیز اجازه تعریف دقیق ابعاد و اندازهها را میدهد. تنها نکته مهم، نیاز به دقت در طراحی schema است، چرا که برخلاف SSAS در اینجا خبری از Wizard نیست.
✅ مزیت اصلی eMondrian
راهحل کمهزینه و سریع برای «نگه داشتن لایهٔ گزارشگیری فعلی (Excel/MDX)» و در عین حال انتقال دادهها به ClickHouse؛ مخصوصاً مناسب برای مهاجرت تدریجی و جلوگیری از بازنویسی کامل داشبوردها.
ریسکها / محدودیتها:
🔴قابلیتهای کامل SSAS را ندارد، برخی امکانات پیشرفته ممکن است موجود نباشند یا متفاوت اجرا شوند.
🔴ممکن است در گزارشات چند سطحی، مجموعها یا گزارشهای زمانی، اختلاف در نتایج دیده شود، باید با دقت تست شوند.
🔴پروژه هنوز وابسته به بهروزرسانیها و رفع باگهاست؛ ممکن است نیاز به توسعه یا patch محلی باشد.
🔴طراحی schema و tune کردن ClickHouse برای عملکرد مطلوب حیاتی است، بدون این، ممکن است سرعت یا مصرف منابع مشکلساز شود.
🔴سازگاری کامل با همه نسخههای Excel/Power BI سرویس ممکن نیست، بعضی ابزارها رفتار متفاوتی دارند.
در حال حاضر دو نسخه از این موتور موجود است:
🔹 نسخه اصلی Pentaho Mondrian که سالهاست در پروژههای BI استفاده میشود،
🔹 و نسخه توسعهیافته eMondrian که برای اتصال به دیتابیسهای مدرن مانند ClickHouse بهینهسازی شده است.
ما در حال تست نسخه دوم هستیم که برای ClickHouse مناسبتر است.
اگر تجربهای در استفاده از Mondrian یا eMondrian دارید، بهویژه در ترکیب با ClickHouse، خوشحال میشویم از تجربه شما هم بتوانیم استفاده کنیم 🙌
در سالهای اخیر، با رشد تصاعدی حجم داده در شرکتهای بزرگ ایرانی، زیرساختهای سنتی مانند Oracle و SQL Server که سالها نقش ستون فقرات ذخیرهسازی دادهها را داشتند، دیگر پاسخگوی نیازهای تحلیلی جدید نیستند. بسیاری از این سازمانها در گزارشگیری و تحلیل دادههای حجیم دچار کندی محسوس شدهاند.
در نتیجه، تمایل به سمت استفاده از دیتابیسهای تحلیلی نوین مانند hashtag#ClickHouse و hashtag#StarRocks افزایش یافته است، فناوریهایی که با معماری columnar و توان پردازشی بالا، بهخوبی برای تحلیلهای سنگین و بلادرنگ طراحی شدهاند.
در یکی از مشاورههای اخیرم با یکی از فروشگاههای زنجیرهای بزرگ کشور، در حال بررسی #ClickHouse برای ذخیره و سرویسدهی تراکنشهای روزانه هستیم.
🔥اما چالش اصلی این بود که تیم فنی و کاربران نهایی سالها با استک مایکروسافت کار کرده بودند؛ بیشتر گزارشها از طریق Excel و با استفاده از SSAS و Power Pivot تولید میشد. بنابراین به دنبال راهکاری بودیم که بدون تغییر اساسی در محیط گزارشگیری کاربران، بتوان از ClickHouse نیز بهره برد.
در این مسیر، به دنبال یک ROLAP Engine بودیم که از MDX پشتیبانی کند و به پروژهای جالب به نام eMondrian رسیدیم.
🔰 پروژه eMondrian در واقع نسخهای توسعهیافته از Mondrian OLAP Engine است که امکان اتصال به دیتابیسهای مدرن از جمله ClickHouse را فراهم میکند. با این ابزار میتوان:
✔️همان مدل چندبعدی (Cube) را روی دادههای ClickHouse تعریف کرد،
✔️همچنان از MDX Queryها استفاده نمود،
✔️و حتی گزارشها را مستقیماً از طریق Excel یا Power BI بهصورت Live Connection مشاهده کرد.
در تستهای اولیه، سرعت اجرای کوئریها روی دادههای چندصدمیلیونی بسیار قابلقبول بود و ساختار XML-محور schema نیز اجازه تعریف دقیق ابعاد و اندازهها را میدهد. تنها نکته مهم، نیاز به دقت در طراحی schema است، چرا که برخلاف SSAS در اینجا خبری از Wizard نیست.
✅ مزیت اصلی eMondrian
راهحل کمهزینه و سریع برای «نگه داشتن لایهٔ گزارشگیری فعلی (Excel/MDX)» و در عین حال انتقال دادهها به ClickHouse؛ مخصوصاً مناسب برای مهاجرت تدریجی و جلوگیری از بازنویسی کامل داشبوردها.
ریسکها / محدودیتها:
🔴قابلیتهای کامل SSAS را ندارد، برخی امکانات پیشرفته ممکن است موجود نباشند یا متفاوت اجرا شوند.
🔴ممکن است در گزارشات چند سطحی، مجموعها یا گزارشهای زمانی، اختلاف در نتایج دیده شود، باید با دقت تست شوند.
🔴پروژه هنوز وابسته به بهروزرسانیها و رفع باگهاست؛ ممکن است نیاز به توسعه یا patch محلی باشد.
🔴طراحی schema و tune کردن ClickHouse برای عملکرد مطلوب حیاتی است، بدون این، ممکن است سرعت یا مصرف منابع مشکلساز شود.
🔴سازگاری کامل با همه نسخههای Excel/Power BI سرویس ممکن نیست، بعضی ابزارها رفتار متفاوتی دارند.
در حال حاضر دو نسخه از این موتور موجود است:
🔹 نسخه اصلی Pentaho Mondrian که سالهاست در پروژههای BI استفاده میشود،
🔹 و نسخه توسعهیافته eMondrian که برای اتصال به دیتابیسهای مدرن مانند ClickHouse بهینهسازی شده است.
ما در حال تست نسخه دوم هستیم که برای ClickHouse مناسبتر است.
اگر تجربهای در استفاده از Mondrian یا eMondrian دارید، بهویژه در ترکیب با ClickHouse، خوشحال میشویم از تجربه شما هم بتوانیم استفاده کنیم 🙌
👍3
چرا Intuit بهجای ClickHouse، سراغ StarRocks رفت؟
اخیراً تیم IPS در شرکت Intuit (سازنده QuickBooks، TurboTax، CreditKarma و دهها سرویس مالی دیگر) تجربه بسیار جالبی منتشر کردهاند.
https://celerdata-com.cdn.ampproject.org/c/s/celerdata.com/blog/how-intuit-achieved-sub-4-second-real-time-analytics-at-100k-events-per-second?hs_amp=true
آنها سالانه ۱۴۰ میلیارد تراکنش پردازش میکنند و در پیک کاری به ۱۰۰,۰۰۰ رویداد در ثانیه میرسند.
💡 نیاز اصلیشان: تاخیر سرتاسری کمتر از ۴ ثانیه برای تغذیه مدلهای ML و تحلیل رفتار لحظهای کاربران.
در این سطح از Scale و Real-Time، معماری قبلی آنها (Apache Druid) دیگر جوابگو نبود. Intuit چند گزینه را بررسی کرد: ClickHouse، Pinot، DuckDB … اما در نهایت StarRocks را انتخاب کرد.
دلایل انتخاب آنها برای ما - بهخصوص شرکتهای ایرانی - کاملاً کاربردی و قابل تعمیم است.
🔥 چرا #StarRocks انتخاب شد؟
1) پشتیبانی Native از Upsert و جداول منطبق بر منطق Primary Key
در معماریهای Real-Time، داشتن State برای هر کاربر، تراکنش یا session ضروری است.
در کلیکهوس، upsert واقعی وجود ندارد و نیاز به workaroundهایی مثل ReplacingMergeTree یا CollapsingMergeTree است. StarRocks این مشکل را بهصورت بومی حل کرده.
2) پرفورمنس بسیار قوی روی Multi-Table Join
در سناریوهایی مثل:
✔️ترکیب دادههای کلیکاستریم با پروفایل کاربر
✔️عملیات Join بین چند دامنه مختلف (مثلاً محصولات مالی Intuit)
✔️ساخت Featureهای پیچیده ML
کلیکهوس به دلیل طراحی column-oriented pure و join planner محدود، در joins سنگین، عقب میماند.
✅ در همین بخش، #StarRocks مزیت قطعی دارد.
3) تاخیر بسیار کم در Query (زیر ۵۰۰ms در TP99)
برای مدلهای ML که روی آخرین ۳۰ کلیک کاربر تصمیمگیری میکنند، هر میلیثانیه اهمیت دارد.
دستاورد StarRocks در تست Intuit:
✔️درج صدهزار رکورد در ثانیه
✔️ ۰.۵ ثانیه latency در ۹۹٪ کوئریها
✔️ تازگی دادهها : زیر ۱ ثانیه
این سطح از پرفورمنس با ClickHouse سختتر و پرهزینهتر است.
4) معماری Shared-Data مشابه Lakehouse با تکیه بر S3
استارراکز میتواند:
✔️ جدا کردن Compute از Storage
✔️داشتن چند warehouse مجزا
✔️ قابلیت resource group برای multi-tenancy واقعی
کلیک هوس در نسخه Cloud این مسیر را آغاز کرده، اما اکوسیستم cloud-native StarRocks پختهتر است.
5) سادگی عملیاتی (Operational Simplicity)
کلیکهوس ابزارهای عملیاتی خوب دارد، اما scale-out پیشرفته نیازمند:
✔️ عملیات sharding دستی
✔️معماری پیچیده ReplicatedMergeTree
✔️ابزارهای جانبی custom
استارراکز اینها را تقریباً بهصورت plug-and-play ارائه میکند.
⭐️ جمعبندی
تجربه Intuit نشان میدهد:
اگر real-time واقعی، joins سنگین، upsert و latency زیر ۲–۳ ثانیه نیاز دارید، StarRocks انتخاب بسیار مناسبتری خواهد بود.
اگر batch analytics با مقیاس بسیار بزرگ دارید، ClickHouse همچنان پادشاه است.
امروزه حجم عظیم داده در بسیاری از شرکتها و سازمانهای ایرانی، ضرورت استفاده از دیتابیسهای تحلیلی مدرن را بیش از هر زمان دیگری آشکار کرده است. مجموعههایی که میخواهند تحلیلهای Real-Time، گزارشهای سریع، داشبوردهای منعطف و زیرساخت داده قابلاتکا داشته باشند، ناچارند بین نسل جدید OLAPها، مثل #ClickHouse، #StarRocks یا Apache #Doris انتخاب کنند.
اخیراً تیم IPS در شرکت Intuit (سازنده QuickBooks، TurboTax، CreditKarma و دهها سرویس مالی دیگر) تجربه بسیار جالبی منتشر کردهاند.
https://celerdata-com.cdn.ampproject.org/c/s/celerdata.com/blog/how-intuit-achieved-sub-4-second-real-time-analytics-at-100k-events-per-second?hs_amp=true
آنها سالانه ۱۴۰ میلیارد تراکنش پردازش میکنند و در پیک کاری به ۱۰۰,۰۰۰ رویداد در ثانیه میرسند.
💡 نیاز اصلیشان: تاخیر سرتاسری کمتر از ۴ ثانیه برای تغذیه مدلهای ML و تحلیل رفتار لحظهای کاربران.
در این سطح از Scale و Real-Time، معماری قبلی آنها (Apache Druid) دیگر جوابگو نبود. Intuit چند گزینه را بررسی کرد: ClickHouse، Pinot، DuckDB … اما در نهایت StarRocks را انتخاب کرد.
دلایل انتخاب آنها برای ما - بهخصوص شرکتهای ایرانی - کاملاً کاربردی و قابل تعمیم است.
🔥 چرا #StarRocks انتخاب شد؟
1) پشتیبانی Native از Upsert و جداول منطبق بر منطق Primary Key
در معماریهای Real-Time، داشتن State برای هر کاربر، تراکنش یا session ضروری است.
در کلیکهوس، upsert واقعی وجود ندارد و نیاز به workaroundهایی مثل ReplacingMergeTree یا CollapsingMergeTree است. StarRocks این مشکل را بهصورت بومی حل کرده.
2) پرفورمنس بسیار قوی روی Multi-Table Join
در سناریوهایی مثل:
✔️ترکیب دادههای کلیکاستریم با پروفایل کاربر
✔️عملیات Join بین چند دامنه مختلف (مثلاً محصولات مالی Intuit)
✔️ساخت Featureهای پیچیده ML
کلیکهوس به دلیل طراحی column-oriented pure و join planner محدود، در joins سنگین، عقب میماند.
✅ در همین بخش، #StarRocks مزیت قطعی دارد.
3) تاخیر بسیار کم در Query (زیر ۵۰۰ms در TP99)
برای مدلهای ML که روی آخرین ۳۰ کلیک کاربر تصمیمگیری میکنند، هر میلیثانیه اهمیت دارد.
دستاورد StarRocks در تست Intuit:
✔️درج صدهزار رکورد در ثانیه
✔️ ۰.۵ ثانیه latency در ۹۹٪ کوئریها
✔️ تازگی دادهها : زیر ۱ ثانیه
این سطح از پرفورمنس با ClickHouse سختتر و پرهزینهتر است.
4) معماری Shared-Data مشابه Lakehouse با تکیه بر S3
استارراکز میتواند:
✔️ جدا کردن Compute از Storage
✔️داشتن چند warehouse مجزا
✔️ قابلیت resource group برای multi-tenancy واقعی
کلیک هوس در نسخه Cloud این مسیر را آغاز کرده، اما اکوسیستم cloud-native StarRocks پختهتر است.
5) سادگی عملیاتی (Operational Simplicity)
کلیکهوس ابزارهای عملیاتی خوب دارد، اما scale-out پیشرفته نیازمند:
✔️ عملیات sharding دستی
✔️معماری پیچیده ReplicatedMergeTree
✔️ابزارهای جانبی custom
استارراکز اینها را تقریباً بهصورت plug-and-play ارائه میکند.
⭐️ جمعبندی
تجربه Intuit نشان میدهد:
اگر real-time واقعی، joins سنگین، upsert و latency زیر ۲–۳ ثانیه نیاز دارید، StarRocks انتخاب بسیار مناسبتری خواهد بود.
اگر batch analytics با مقیاس بسیار بزرگ دارید، ClickHouse همچنان پادشاه است.
❤3👍1