مهندسی داده
792 subscribers
112 photos
7 videos
24 files
314 links
BigData.ir کانال رسمی وب سایت
مطالبی راجع به مهندسی داده و طراحی زیرساخت‌های پردازش دیتا و ابزارهای مدرن دیتا
ارتباط با ادمین: @smbanaei
گروه تخصصی مهندسی داده 👇
https://t.iss.one/bigdata_ir_discussions2
کانال یوتیوب 👇
https://www.youtube.com/@irbigdata
Download Telegram
🚀 تبدیل PostgreSQL به یک دیتابیس HTAP با یک راهکار ساده و موثر!


🔍 این مطلب صرفاً برای اشاره به یک موج جدید در حوزه دیتابیس‌ها نوشته شده است—ایده‌ای که نشان می‌دهد می‌توان با ترکیب ابزارهای حرفه‌ای متن‌باز، سیستم‌هایی با توانایی بالا ساخت، بدون نیاز به توسعه یک موتور پایگاه داده از صفر!


اما چطور؟ 🤔 فرض کنید که به شما پیشنهاد شود که برای حل مشکل کندی PostgreSQL در کوئری‌های پیچیده و سنگین تحلیلی، یک راهکار سریع، ارزان و موثر پیدا کنید. اینجاست که با خودتان می‌گویید:

ذخیره‌سازی داده‌ها به‌صورت ستونی: داده‌های PostgreSQL را در قالب ستونی ذخیره کنم تا برای اجرای کوئری‌های پیچیده و سنگین تحلیلی بهینه شود. چه گزینه‌ای بهتر از Parquet؟

مدیریت و سازماندهی داده‌ها: وقتی حجم داده‌ها زیاد شود و تعداد فایل‌های Parquet بالا برود، چطور آن‌ها را مدیریت کنم؟ اینجاست که Open Table Format‌هایی مثل Apache Iceberg به کمک می‌آیند، چون دقیقاً برای همین منظور طراحی شده‌اند.

انتقال داده از PostgreSQL به این ساختار: سریع‌ترین روش بدون نیاز به یک ETL پیچیده چیست؟ می‌توانیم یک Read Replica از PostgreSQL بسازیم که خودش تغییرات را ارسال کند و این تغییرات را مستقیماً در قالب Parquet و با استاندارد Iceberg ذخیره کنیم.

اجرای سریع کوئری‌ها: حالا چطور روی این داده‌ها کوئری اجرا کنم؟ یکی از بهترین گزینه‌هایی که در سال‌های اخیر بلوغ بالایی پیدا کرده و از Iceberg و Parquet پشتیبانی می‌کند، DuckDB است! بنابراین می‌توانیم مستقیماً روی Iceberg کوئری بزنیم و نتایج را سریع دریافت کنیم.

ایجاد یک واسط SQL سازگار با PostgreSQL: برای اجرای کوئری‌ها توسط کاربران، نیاز به یک لایه تبدیل SQL داریم که درخواست‌های PostgreSQL را به گرامر DuckDB تبدیل کند. خوشبختانه، گرامر DuckDB تا حد زیادی با استاندارد SQL سازگار است، بنابراین این مرحله هم به سادگی قابل انجام است.

🎯 نتیجه؟ به همین راحتی، PostgreSQL را به یک HTAP (دیتابیس ترکیبی تحلیلی/تراکنشی) تبدیل کردیم!

💡 اما این پایان ماجرا نیست!
دیتابیسی به نام BemiDB دقیقاً بر اساس همین معماری در حال توسعه است. این پروژه هنوز در ابتدای مسیر قرار دارد و در حال حاضر انتقال داده‌ها به‌صورت آفلاین انجام می‌شود. اما این تنها یک شروع است و مسیر رشد و تکامل آن می‌تواند بسیار هیجان‌انگیز باشد!
Bemi

🔥 و نکته‌ی هیجان‌انگیز؟
تست‌های اولیه روی دیتاست استاندارد TPC-H نشان داده که در برخی پرس‌وجوها، سرعت اجرای کوئری‌ها تا ۲۰۰۰ برابر سریع‌تر از PostgreSQL شده است! 😯🚀

📌 به نظر میرسد که ترکیب ابزارهای متن‌باز قدرتمند می‌تواند راهکارهایی نوآورانه برای چالش‌های دنیای دیتابیس ایجاد کند!

آدرس پروژه BemiDB :
https://github.com/BemiHQ/BemiDB
👍9
Forwarded from عکس نگار
در دنیای مهندسی داده که سرعت و کارایی اهمیت زیادی دارد، استفاده از ابزارهای نوین مدیریت پکیج‌ها و محیط‌های مجازی بسیار حیاتی است. uv به عنوان یک مدیر پکیج پایتون سریع و بهینه، مزایای قابل توجهی نسبت به روش‌های سنتی مانند pip و virtualenv ارائه می‌دهد.

ویژگی‌های کلیدی uv 🚀

⚖️ جایگزین بدون دردسر – کاملاً سازگار با pip، pip-tools، virtualenv و دیگر ابزارهای مدیریت پکیج.

⚡️ سرعت خیره‌کننده – بین ۱۰ تا ۱۰۰ برابر سریع‌تر از pip، pip-compile و pip-sync.

💾 بهینه در مصرف فضا – با استفاده از کش جهانی، وابستگی‌های تکراری را حذف کرده و فضای دیسک را ذخیره می‌کند.

🐍 نصب آسان و منعطف – قابل نصب از طریق curl، pip یا pipx بدون نیاز به Rust یا حتی نصب بودن Python.

🧪 تست‌شده در مقیاس بالا – عملکرد uv با ۱۰,۰۰۰ پکیج برتر PyPI بررسی و تأیید شده است.

🖥 سازگاری با تمام پلتفرم‌ها – کاملاً قابل اجرا روی macOS، Linux و Windows.

🔩 مدیریت پیشرفته وابستگی‌ها – امکان کنترل نسخه‌های وابستگی، حل تداخل‌ها و استفاده از استراتژی‌های مختلف نصب.

⁉️ خطاهای شفاف و قابل فهم – بهترین سیستم مدیریت خطا برای رفع سریع مشکلات توسعه‌دهندگان.

🤝 پشتیبانی از قابلیت‌های مدرن پایتون – نصب‌های قابل ویرایش، وابستگی‌های Git، URLهای مستقیم، مدیریت وابستگی‌های محلی و موارد دیگر.

🚀 ابزار همه‌کاره – ترکیبی از امکانات pip، pipx، poetry، pyenv، twine و ابزارهای دیگر در یک راهکار واحد.

🛠 مدیریت پیشرفته پروژه و اسکریپت‌ها – امکان اجرای اسکریپت‌ها، مدیریت نسخه‌های پایتون و کار با متادیتای وابستگی‌ها.

🗂 لاک‌فایل عمومی و پایدار – یکپارچه‌سازی وابستگی‌ها در پروژه‌های مختلف و تسهیل مدیریت نسخه‌ها.

🏢 پشتیبانی از ورک‌اسپیس‌ها – مناسب برای پروژه‌های مقیاس‌پذیر و چندبخشی، مشابه Cargo-style.


نمونه‌هایی از استفاده uv:

# نصب یک پکیج در محیط مجازی:

uv pip install pandas


# ایجاد یک محیط مجازی جدید:

uv venv .venv


# همگام‌سازی پکیج‌ها با فایل pyproject.toml:

uv pip sync


اگر به دنبال سرعت، کارایی و مدیریت بهتر وابستگی‌ها در پروژه‌های مهندسی داده هستید، uv گزینه‌ای ایده‌آل برای جایگزینی روش‌های سنتی است. 💡🔥


منابعی برای مطالعه بیشتر :

- https://www.kdnuggets.com/new-python-package-manager
- https://www.saaspegasus.com/guides/uv-deep-dive/
- https://codemaker2016.medium.com/introducing-uv-next-gen-python-package-manager-b78ad39c95d7

- https://docs.astral.sh/uv/getting-started/first-steps/

عکس پست از منبع اول و بخش لاتین از منبع سوم برداشته شده است.
👍51
برای ذخیره و پردازش داده‌های جی‌سان کدام بانک‌اطلاعاتی را انتخاب کنیم ؟

🚀 مقایسه عملکرد ClickHouse با MongoDB، Elasticsearch، DuckDB و PostgreSQL در پردازش JSON


وبلاگ رسمی کلیک هوس اخیرا (اوایل سال ۲۰۲۵ – بهمن ماه ۱۴۳) مقاله ای منتشر کرده است با عنوان :

The billion docs JSON Challenge: ClickHouse vs. MongoDB, Elasticsearch, and more

در این مقاله، عملکرد پایگاه‌های داده محبوب در پردازش داده‌های JSON بررسی شده است. با توجه به اینکه این نوع از داده‌ها یعنی داده‌های JSON در کاربردهای روزانه تیم‌های فنی بسیار رایج هستند و نتایج ارائه شده در این گزارش، می‌تواند در تصمیم گیری تیم‌های فنی برای انتخاب ابزار یا دیتابیس مناسب برای ذخیره و پردازش این نوع از داده‌ها موثر باشد، تصمیم گرفتم خلاصه این مقاله و نتایج آنرا با هم مرور کنیم.

پایگاه‌های داده‌ای که در این آزمایش شرکت داشتند عبارت‌اند از:


1️⃣ ClickHouse

2️⃣ MongoDB

3️⃣ Elasticsearch

4️⃣ DuckDB

5️⃣ PostgreSQL


برای مقایسه، یک مجموعه داده‌ی بزرگ شامل یک میلیارد سند JSON استفاده شده است. هدف این بود که مشخص شود هر پایگاه داده چگونه این داده‌ها را ذخیره و پردازش می‌کند.


در این آزمایش، JSONBench استفاده شده است که توسط خود کلیک هوس برای این گزارش توسعه داده شده است (آدرس گیت: https://github.com/ClickHouse/JSONBench) و همانطور که در خود مقاله فوق آمده است سعی شده است تمامی بهینه سازی‌های مرتبط با هر یک از دیتابیس های فوق در ذخیره و پردازش داده‌ها انجام شود که یک مقایسه عادلانه و جوانمردانه باشد.

🔹 علاوه بر بررسی میزان فضای مصرف شده برای ذخیره این حجم از داده، از پنج کوئری تحلیلی هم استفاده شده است که برای مشاهده لیست کامل کوئری ها به آدرس گیت بالا مراجعه کنید.

خلاصه نتایج را در فیلم زیر می توانید ببینید.

🔥 خلاصه نتایج

🎯 ClickHouse در تمام سناریوهای آزمایش‌شده از رقبا سریع‌تر و بهینه‌تر بود.

📉 فضای ذخیره‌سازی موردنیاز آن به‌شدت کمتر بود.

⚡️ در پردازش JSON، ClickHouse نسبت به سایر پایگاه‌های داده، عملکردی فراتر از انتظار داشت.


اگر به دنبال یک پایگاه داده فوق‌العاده سریع برای پردازش داده‌های JSON در مقیاس بزرگ هستید، ClickHouse یک انتخاب عالی است!


اما صبر کنید!

🔹 این جمله بالا، نتیجه‌گیری ClickHouse از اجرای بنچمارک فوق و انتخاب خودش به عنوان برنده بود. اما بهتر است موارد زیر را برای تصمیم نهایی در این خصوص در نظر بگیریم :

اگر قصد ذخیره نتایج فراخوانی API ها، لاگ‌ها، و رخدادهایی را داریم که از نوع JSON هستند و قرار نیست آنها را به‌روز‌رسانی کنیم، ClickHouse می‌تواند گزینه‌ی اول باشد.

اگر با داده‌های متنی کار می‌کنیم و علاوه بر ذخیره داده‌ها به‌صورت JSON، قرار است پردازش‌های مختلف متنی هم روی آنها انجام دهیم (مثلاً به ستون‌های مختلف یک سند، وزن بیشتری در کوئری‌های خود بدهیم)، Elasticsearch همچنان گزینه‌ی اول ما خواهد بود.

اگر پایگاه داده‌ی اصلی ما PostgreSQL است و یا حجم دیتای ما در حد چند ده گیگابایت است، می‌توانیم از امکانات خود PostgreSQL برای ذخیره JSON استفاده کنیم.

اگر قرار است علاوه بر ذخیره داده‌ها، به‌صورت مداوم آنها را ویرایش و به‌روز‌رسانی کنیم و ماهیت داده‌ها و پردازش‌های ما غیر متنی است، MongoDB می‌تواند بهترین گزینه باشد.

#مهندسی‌_داده #کلیک_هوس

https://www.bigdata.ir/?p=8512
👍1🙏1
This media is not supported in your browser
VIEW IN TELEGRAM
نتایج مقایسه کلیک‌هوس با الستیک سرچ، مانگودی‌بی و پستگرس - در ارتباط با پست فوق
👍1
Media is too big
VIEW IN TELEGRAM
Warp

یک ترمینال مدرن و پیشرفته است که به نظر می رسد به طور خاص برای توسعه‌دهندگان و مهندسین داده طراحی شده است. این ترمینال با ویژگی‌های منحصر به فردی مانند:

رابط کاربری مدرن و زیبا

قابلیت تکمیل خودکار هوشمند (AI-powered)

امکان اشتراک‌گذاری دستورات و نتایج

امکان ساخت نوت‌بوک و ورک‌فلو برای مستند کردن دستورات پیچیده و راحت تر کردن انجام کارهای تکراری

پشتیبانی از کار گروهی و همکاری تیمی

قابلیت جستجوی سریع در تاریخچه دستورات

بلوک‌های دستور که امکان اجرای مجدد آسان را فراهم می‌کند

تجربه کار با خط فرمان رو کاملاً متحول کرده است.
Warp
در اصل برای سیستم‌عامل macOS توسعه داده شد و بعداً پشتیبانی از لینوکس را نیز اضافه کرد. مدتها بود که منتظر نهایی شدن نسخه ویندوز این ترمینال بودم که چند ساعت پیش ایمیل دانلود این نسخه برایم آمد و حیفم آمد تجربه خوبی که از کار با این ترمینال به دست آوردم را با علاقه مندان به دنیای مهندسی داده و خط فرمان به اشتراک نگذارم.

امیدوارم این فیلم کوتاه برای این دوستان مفید باشد.

#Warp #Terminal #DeveloperTools #Productivity #TechTips
🙏6
در دنیای هوش مصنوعی، نام DeepSeek این روزها بیش از پیش شنیده می‌شود. شرکتی که با مدل‌های قدرتمند خود توانسته توجه بسیاری را به خود جلب کند. یکی از مهم‌ترین درس‌های مهندسی که از دیپ‌سیک می‌توان گرفت، روش‌های نوآورانه‌ای است که این شرکت برای تأمین و پردازش حجم عظیم داده‌های مورد نیاز خود به کار گرفته است. 🔥
مقاله اصلی الهام بخش این پست :
https://mehdio.substack.com/p/duckdb-goes-distributed-deepseeks
شرکت دیپ‌سیک با انتشار بخشی از ابزارهای داخلی خود در گیت‌هاب در روزهای اخیر (اوایل اسفند 1403 - اواخر فوریه 2025)، به جامعه مهندسی داده نشان داد که چگونه می‌توان با ساده‌ترین ابزارها، کارآمدترین سیستم‌ها را ساخت. یکی از این پروژه‌ها، SmallPond نام دارد:

🔗https://github.com/deepseek-ai/smallpond

SmallPond
یک کتابخانه بسیار ساده برای پردازش توزیع‌شده داده است که برای پردازش حجم عظیمی از داده‌ها آنهم فقط با توزیع داده‌ها بین چندین نسخه از دیتابیس DuckDB و دریافت نتایج از آنها طراحی شده است. برخلاف سیستم‌های مرسوم مانند Apache Spark که به زیرساخت‌های پیچیده و پرهزینه نیاز دارند، این پروژه با استفاده از چندین نسخه DuckDB - یک دیتابیس تحلیلی سبک‌وزن - توانسته به نتایجی خیره‌کننده دست یابد. همانطور که Mehdi Quazza اشاره می‌کند تیم DeepSeek موفق شده است ۱۱۰ ترابایت داده را به کمک این کتابخانه، تنها در نیم‌ساعت پردازش کند! آن هم بدون نیاز به کلاسترهای سنگین یا سرویس‌های ابری گران‌قیمت. این رویکرد نشان می‌دهد که معماری‌های ساده اما هوشمندانه می‌توانند جایگزینی برای ابزارهای سنتی باشند.


💪 نکته جالب‌تر اینکه این پروژه تنها توسط دو توسعه‌دهنده (طبق لیست گیت‌هاب) پیاده‌سازی شده است! 🔥 چنین نتیجه‌ای نشان می‌دهد که در دنیای امروز، خلاقیت مهم‌تر از منابع است.

🗂 اما راز اصلی این موفقیت در استفاده از چارچوب پردازشی Ray‌ (یک فریمورک بسیار حرفه‌ای در پردازش توزیع شده که سه سال پیش راجع به آن در سایت مهندسی داده نوشته بودم : https://www.bigdata.ir/?p=8104) و سیستم فایل توزیع‌شده‌ای به نام 3FS (توسعه داده شده توسط خود دیپ‌سیک) نهفته است:

🔗 https://github.com/deepseek-ai/3FS

پروژه 3FS یک سیستم فایل بهینه برای ذخیره‌سازی توزیع‌شده و مخصوص نیازهای پروژه‌های هوش مصنوعی طراحی شده است. ترکیب این سیستم فایل با SmallPond یک زنجیره پردازش سبک، سریع و مقرون‌به‌صرفه را به وجود آورده است.

🚀 در ماه‌های آینده انتظار داریم استفاده‌های نوآورانه بیشتری از DuckDB را در حوزه مهندسی داده بشنویم. 🔥

#مهندسی_داده #DistributedComputing #DuckDB #هوش_مصنوعی #DeepSeek #3FS #SmallPond
5👏2👍1
‏۱/ کوئرا با ۳۰۰ میلیون کاربر ماهانه، ۲۵,۰۰۰+ سوال روزانه، و ۱۰+ سال فعالیت، دیتابیسش میدونی چیه؟ MySQL 🫠 ! ده‌ها ترابایت داده و صدها هزار QPS. و اومدن شدیدا بهینه‌ش کردن، چطوری؟
‏۲/ اینا میبینن بار دیتابیس (Database Load) با رشد کاربران، پتابایت‌ها بیشتر و با ویژگی‌های ML محصولاتشون بالاتر هم می‌ره، و البته اسپمرها هم یه بخشی ازین بار بودن.

‏۳/ بار دیتابیسشون تو خواندن (Reads) (۷۰٪ ترافیک)، حجم داده (Data Volume) ( که رشد ۲۰۰٪ تو ۵ سال داشت)، و نوشتن (Writes) (کم اما حساس) بود. کوئرا برای بهینه‌سازی روی خواندن و حجم داده تمرکز کرد، چون ترافیک بیشترشون سمت خواندن بود.

‏۴/ اسکن‌های بزرگ رو با LIMIT و صفحه‌بندی (Pagination) بهینه کردن. این کار از اسکن‌ غیرضروری جلوگیری کرد و پرفومنس کوئری‌ها رو تا ۶۰٪ سریع‌تر کرد.

‏۵/ برای کوئری‌های کند، ایندکس‌ها رو دوباره طراحی کردن، ستون‌های غیرضروری حذف شدن، ORDER BY به کلاینت منتقل شد، و کوئری‌های غیرضروری هم حذف شدند. و بار CPU ۵۰٪ کم شد.

‏۶/ برای High QPS، کوئرا کش رو بهینه کرد. کلید کش (Cache Key) به uid تغییر داد تا QPS رو بیش از ۹۰٪ کم کنه.

برای حجم داده ها، کوئرا MyRocks که فیس‌بوک توسعه داده بود رو برای شاردهای قدیمی MySQL استفاده کرد. این کار فضا رو تا ۸۰٪ برای برخی جدول‌ها و ۵۰-۶۰٪ برای بقیه کاهش داد.

‏۷/ مای راک با فشرده‌سازی بهتر، IO رو کم کرد و زمان بکاپ/ریستور رو ۵۰٪ سریع‌تر کرد. شاردهای قدیمی (بیش از ۱۸ ماه) به MyRocks منتقل شدند.
برای نوشتن، lag رپلیکیشن رو با رپلیکیشن موازی Parallel ( توی mysql تنظیماتش slave_parallel_type یا شبیه شه) حل کردن تا بار رو بهتر توزیع کنه.


‏۸/ یعنی یه تاخیری بین دیتابیس مادر با رپلیکا به وجود میومد که رو برداشتن سیستمش رو موازی کردن، مشکلش چی بود؟ وقتی رپلیکا داره میخونه یا مینویسه ممکنه خیلی زمان بر بشه یا transaction دیتابیس مادر خیلی زمانبر باشه رپلیکا مجبور بشه صبر کنه تا تراکنش تموم بشه بعد تغییرات رو اعمال کنه

‏۸/ یعنی یه تاخیری بین دیتابیس مادر با رپلیکا به وجود میومد که رو برداشتن سیستمش رو موازی کردن، مشکلش چی بود؟ وقتی رپلیکا داره میخونه یا مینویسه ممکنه خیلی زمان بر بشه یا transaction دیتابیس مادر خیلی زمانبر باشه رپلیکا مجبور بشه صبر کنه تا تراکنش تموم بشه بعد تغییرات رو اعمال کنه

‏۹/ خلاصه اینکه نتیجه این شد که کوئرا:
- با بهینه‌سازی کش و کوئری‌ها
- استفاده از MyRocks،
- و رپلیکیشن موازی

بار رو برای ۳۰۰ میلیون کاربر روی دیتابیس‌ MySQL کاهش داد


مطالب به نقل از یوزر Saman(@teal33t) در توئیتر (X) نقل شده است
https://x.com/teal33t/status/1898117078168609173?s=19
👍61
اینکه شرکت‌های بزرگ از بانک‌های اطلاعاتی تحلیلی قدرتمندی مانند ClickHouse برای مدیریت حجم بالای داده‌های خود استفاده می‌کنند، برای تیم های فنی ما عادی شده است اما این که چگونه آنها را بهینه سازی کرده و تنظیمات پیشرفته آنها را در خدمت افزایش سرعت پاسخگویی به مشتریان به کار گرفته اند، میتواند حاوی نکات ارزشمندی برای ما باشد.

دوستانی که از کلیک هوس استفاده میکنند، هنگام ایجاد جداول در ClickHouse، معمولاً اندازهٔ ریزدانگی (granularity) را برابر ۸۱۹۲ تنظیم می‌کنند(یا پشت صحنه تنظیم می‌شود) که البته همان مقدار پیش فرض است. این مقدار تعیین می‌کند که به ازای هر ۸۱۹۲ رکورد، یک ورودی در ایندکس ایجاد شود. یعنی اگر کلیک هوس بخواهد وجود رکوردی را در یک گرانول بررسی کند، باید کل آنرا اسکن و بررسی کند. مقاله زیر به طور خاص به همین موضوع میپردازد که شرکت SolarWinds با تغییر این مقدار، چگونه به بهبود قابل‌توجهی در عملکرد خود دست یافت.
https://clickhou.se/3QZ7m6L

سولارویندز با کاهش اندازهٔ ریزدانگی، موفق به افزایش ۶۰٪ سرعت پاسخ‌دهی شد. چون میزان اسکن سطرها به ازای کوئری ها کاهش یافت و نهایتا زمان پاسخ‌دهی بهبود یافت

با این حال، این بهینه‌سازی هزینه‌هایی نیز به همراه داشت:

افزایش مصرف حافظه: کاهش اندازهٔ ریزدانگی منجر به افزایش حجم فایلهای مارک که ورودی های اندیس ها را نگه می‌دارند و معمولا در حافظه نگه داری میشوند شد .‌ اما با این تغییر در ریزدانگی، از ده گیگابایت حافظه به ۳۲۰ گیگابایت حافظه نیاز پیدا شد که با هزینه دلاری معقولی قابل تهیه و پوشش دادن بود. این هزینه در قبال سرعتی که به همراه داشت، قابل قبول بود.

افزایش عملیات ادغام (Merge): با کاهش اندازه هر گرانول ، تعداد فایل‌هایی که باید پشت صحنه مرج و ادغام میشد افزایش یافت که خود فشار مضاعفی به دیسک و بخش ورودی/خروجی سیستم عامل وارد میکرد.

برای مدیریت این چالش‌ها، تیم مهندسی سولارویندز تصمیم گرفت تا pread_threadpool را حذف کند. این اقدام به سیستم اجازه داد تا مستقیماً از قابلیت‌های SSD استفاده کند، یعنی حذف واسطه‌های نرم‌افزاری که زمانی برای بهینه سازی کار با دیسک‌های قدیمی طراحی شده بودند و امروزه خود باعث بوجود آمدن وقفه و گلوگاه در سیستم شده بودند.

این تجربه نشان می‌دهد که چگونه تغییرات دقیق در تنظیمات یک سیستم پایگاه داده می‌تواند تأثیرات قابل‌توجهی بر عملکرد داشته باشد که البته مثل همه تغییرات، با مدیریت مناسب، هزینه‌های جانبی آن قابل کنترل است.
#clickhouse #کلیک‌هوس #بهینه‌سازی_دیتابیس
👍8
This media is not supported in your browser
VIEW IN TELEGRAM
اگر پایپ لاین های مبتنی بر داده خود را با ایرفلو طراحی کرده‌اید اما وسوسه شده‌اید که از امکانات حرفه‌ای دگستر برای اجرای خودکار فرآیندهای متوالی پردازش داده(پایپ لاین) استفاده کنید، Airlift دقیقا این لیفت! را برای شما انجام میدهد.

https://www.linkedin.com/posts/dagsterlabs_airlift-is-a-powerful-new-tookit-that-makes-activity-7305287043285200897-Ze_f
👍2
نگاهی به خرید HyperDX‌ توسط کلیک‌هوس

🔍 Observability
دیگر یک انتخاب نیست، بلکه یک ضرورت است!


امروزه شرکت‌ها بخصوص تیم‌های مهندسی داده و دوستان دواپس نیاز مبرمی به یک پلتفرم یکپارچه نظارت (Observability) دارند که لاگ‌ها، تریس‌ها، خطاها و متریک‌ها را در یک محیط مجتمع گرد هم بیاورد. اما چیزی که امروزه علاوه بر این نیازمندی‌ها می‌تواند برای ما جذاب باشد، یک استک جدید و بهینه است که علاوه بر سرعت بالای جستجو و مصرف کم منابع، امکانات پیشرفته‌ای مثل بازاجرای خطاها (Session Replay) را نیز فراهم کند.

خرید HyperDX توسط ClickHouse دقیقاً در همین راستاست!

با استفاده از قدرت پردازشی ClickHouse در بک‌اند، حالا می‌توان یک پلتفرم نظارت متن‌باز، سریع و بهینه برای مهندسان داده و دواپس داشت که نه‌تنها هزینه‌ها را کاهش می‌دهد، بلکه تجربه توسعه‌دهندگان را نیز بهبود می‌بخشد.

https://clickhouse.com/blog/clickhouse-acquires-hyperdx-the-future-of-open-source-observability

#Observability #ClickHouse #HyperDX #DataEngineering
Forwarded from عکس نگار
همزمان با فرا رسیدن سال جدید شمسی، نسخه Apache Kafka 4.0 منتشر شد و جامعه توسعه‌دهندگان بالاخره شاهد نهایی شدن یکی از بزرگ‌ترین تغییرات این پلتفرم یعنی حذف زوکیپر هستند. این نسخه جدید تغییرات مهمی را به همراه دارد که تأثیر زیادی بر نحوه استفاده از کافکا در پروژه‌های مختلف خواهد داشت. در ادامه، به بررسی ویژگی‌های کلیدی این نسخه می‌پردازیم و توضیح می‌دهیم که چرا این تغییرات برای توسعه‌دهندگان و تیم‌های مهندسی داده حیاتی هستند.

۱. حذف نهایی زوکیپر از کافکا
فرآیند حذف ZooKeeper از کافکا از نسخه ۲٫۸ آغاز شد، و اکنون در نسخه ۴ به‌طور کامل به پایان رسیده است. حذف زوکیپر به معنای تغییر اساسی در معماری مدیریت متادیتای کافکا است.

چرا این تغییر مهم است؟

کاهش پیچیدگی زیرساخت: قبلاً برای راه‌اندازی یک کلاستر کافکا، نیاز به راه‌اندازی زوکیپر جداگانه‌ای بود که نگهداری و مدیریت آن، هزینه‌بر و پیچیده بود. با این تغییر، مدیریت کافکا ساده‌تر می‌شود.
افزایش پایداری و عملکرد: زوکیپر مشکلات مقیاس‌پذیری و پایداری خاص خود را داشت که باعث می‌شد در برخی شرایط، کلاسترهای کافکا دچار ناپایداری شوند. حذف آن باعث بهبود مدیریت متادیتا و افزایش مقیاس‌پذیری افقی (Horizontal Scalability) کافکا شده است.
بهینه‌سازی عملیات در DevOps: از آنجایی که دیگر نیازی به تنظیم و نگهداری زوکیپر نیست، تیم‌های DevOps و SRE می‌توانند مدیریت کلاسترهای کافکا را ساده‌تر کنند.
جایگزین زوکیپر چیست؟
آپاچی کافکا از مکانیزم جدیدی به نام KRaft (Kafka Raft) Metadata Mode برای مدیریت متادیتا استفاده می‌کند. این معماری بر پایه Raft Consensus Algorithm بنا شده که به طور ذاتی در خود کافکا تعبیه شده است.

۲. امکان Shared Partition در Apache Kafka 4.0: صف به سبک کافکا!
با انتشار Apache Kafka 4.0، یکی از مهم‌ترین ویژگی‌هایی که به این نسخه اضافه شده، امکان Shared Partition است. این قابلیت، به Kafka اجازه می‌دهد تا نقش یک صف پیام (Queue) را با انعطاف‌پذیری و قابلیت‌های خاص خودش ایفا کند.

تا پیش از این، کافکا بیشتر به عنوان یک پلتفرم استریمینگ شناخته می‌شد تا یک سیستم صف پیام (Message Queue). اما بسیاری از توسعه‌دهندگان نیاز داشتند که داده‌ها به همان ترتیبی که وارد می‌شوند، پردازش شوند.

چرا Shared Partition ضروری بود؟
تا پیش از این، در معماری Kafka، هر پارتیشن فقط به یک Consumer در داخل یک Consumer Group اختصاص داده می‌شد. این طراحی باعث ایجاد محدودیت‌هایی برای توسعه‌دهندگان می‌شد:

اگر تعداد پارتیشن‌ها کمتر از تعداد Consumerها بود، برخی از Consumerها بی‌کار می‌ماندند.
برای افزایش مقیاس‌پذیری و مصرف هم‌زمان داده‌ها، توسعه‌دهندگان مجبور بودند تعداد پارتیشن‌ها را بیش از نیاز واقعی افزایش دهند که به آن Over-Partitioning می‌گویند.
پیاده‌سازی سناریوهای صف (Queue) که در آن پیام‌ها می‌توانند توسط چندین پردازشگر مستقل مصرف شوند، چالش‌برانگیز بود.
Shared Partition چیست و چگونه کار می‌کند؟
در Kafka 4.0، با معرفی Share Groups، محدودیت مصرف‌کنندگان در ارتباط با پارتیشن‌ها برداشته شده است. اکنون:

یک پارتیشن می‌تواند به چندین Consumer تخصیص داده شود.
مصرف‌کنندگان می‌توانند رکوردهای موجود را به صورت اشتراکی پردازش کنند.
هر رکورد به‌صورت جداگانه تأیید (ack) می‌شود، نه کل پارتیشن!
اگر یک رکورد پردازش نشود، پس از یک مدت مشخص، دوباره برای مصرف‌کننده‌های دیگر در دسترس قرار می‌گیرد.
امکان کنترل تعداد دفعات تلاش برای پردازش هر رکورد وجود دارد.

مثالی عملی از Shared Partition
فرض کنید یک سیستم پردازش سفارشات را توسعه داده‌اید که نیاز دارد درخواست‌های مشتریان را با بیشترین سرعت ممکن پردازش کند. در معماری قبلی Kafka، برای اطمینان از پردازش موازی، مجبور بودید تعداد زیادی پارتیشن ایجاد کنید، درحالی‌که این کار هزینه مدیریت و پیچیدگی را بالا می‌برد.

اما با Shared Partition، می‌توان تنها یک پارتیشن داشت و چندین پردازشگر (Consumer) به‌صورت هم‌زمان روی آن کار کنند. هر پردازشگر، پیام‌هایی را دریافت کرده و پردازش می‌کند. اگر پردازش موفقیت‌آمیز باشد، پیام تأیید (acknowledge) می‌شود، اما اگر مشکلی وجود داشته باشد، پیام دوباره در اختیار دیگر پردازشگرها قرار می‌گیرد.
👍5
Forwarded from عکس نگار
چگونه Uber با ترکیب Apache Spark و Ray، عملکرد سیستم خود را بهبود داد؟🚖

در دنیای مدیریت داده بخصوص در بخش زیرساخت‌های پردازشی، بررسی راهکارهای شرکت‌های بزرگ می‌تواند دید مناسبی در انتخاب ابزارهای مناسب به ما بدهد. هرچند ممکن است این راهکارها دقیقاً برای همه کسب‌وکارها قابل استفاده نباشند—زیرا شرکت‌های بزرگ معمولاً وابستگی‌های عمیقی به فناوری‌های قدیمی دارند که ممکن است برای ما یک محدودیت نباشد—اما بررسی و آشنایی با آن‌ها به شناخت بهتر ابزارهابخصوص یافتن نقاط قوت و ضعف آن‌ها کمک شایانی می‌کند.

در این نوشتار، به بررسی رویکرد Uber در بهینه‌سازی بخشی از خطوط پردازش داده خود می‌پردازیم؛ جایی که ترکیب Apache Spark و Ray، سرعت اجرای یکی از فرآیندهای کلیدی را ۴۰ برابر افزایش داد!

مقاله اصلی را که در ژانویه ۲۰۲۵ منتشر شده است، از لینک زیر می‌توانید مطالعه کنید :
https://www.uber.com/en-IN/blog/how-uber-uses-ray-to-optimize-the-rides-business/

🚖 مشکل چه بود؟


Uber برای تنظیم بودجه تخفیف مسافران و مشوق‌های رانندگان، نیاز به انجام محاسبات پیچیده‌ای داشت. این محاسبات باید هر هفته انجام می‌شد و پارامترهای آنها به ازای هر شهر متفاوت بود. هر محاسبه سبک و سریع بود (حدود ۱-۲ ثانیه برای هر شهر)، اما وقتی این کار باید برای هزاران شهر انجام می‌شد، سیستم موجود که بر اساس آپاچی اسپارک ایجاد شده بود، به شدت کند عمل می‌کرد.

دلیل اصلی کندی سیستم:

-اسپارک برای اجرای توابع سبک و پرتکرار بهینه نبود؛ این ابزار برای پردازش‌های حجیم طراحی شده است و سربار بالایی برای وظایف کوچک ایجاد می‌کرد.


اوبر در ابتدا برای رفع این مشکل، سه گزینه را بررسی کرد:

۱- ادامه استفاده از Apache Spark: از آنجا که Spark اجرای توابع Python را به‌صورت موازی (بدون استفاده از APIهای مخصوص Spark) پشتیبانی نمی‌کند، تمام این توابع بهینه‌سازی برای شهرهای مختلف فقط روی نود اصلی Spark (Driver Node) و به‌صورت سریالی اجرا شوند، که باعث کاهش کارایی می‌شد.

۲- استفاده از Pandas UDF در Spark: این روش تا حدی سرعت اجرای عملیات روی DataFrameهای Pandas را افزایش می‌داد، اما بهبود عملکرد چشمگیر نبود. علاوه بر این، Pandas UDF نمی‌تواند کدهای عمومی Python را به‌صورت موازی اجرا کند، که محدودیت بزرگی محسوب می‌شد.

۳- اجرای یک Job مستقل برای هر شهر: این روش مستلزم اجرای یک کانتینر Docker برای هر شهر بود. اما این راهکار به دلیل سربار راه‌اندازی بالا و مصرف نامتناسب منابع محاسباتی، کارآمد نبود.


⚡️ چرا Uber از Ray در کنار Spark استفاده کرد؟

برای حل این مشکل، Uber تصمیم گرفت از یک راه‌حل ترکیبی استفاده کند. برای اتخاذ این تصمیم، اوبر این دو نکته را در نظر گرفت :

✔️ آپاچی اسپارک برای پردازش‌های حجیم (ETL، تبدیل داده‌ها، ذخیره‌سازی در HDFS) عالی است، اما برای اجرای وظایف کوچک با فرکانس بالا، عملکرد مناسبی ندارد.

✔️ پروژه Ray در اجرای موازی وظایف سبک و کوتاه‌مدت فوق‌العاده است، زیرا:
- امکان موازی‌سازی کدهای Python را بدون نیاز به تغییرات پیچیده فراهم می‌کند. (یک مثال ساده از Ray‌ را در انتهای این نوشته می‌بینید)
- مدیریت منابع را برای وظایف سبک و پرتکرار بهینه می‌کند.
- اجرای سریع‌تر را بدون نیاز به Docker و تغییر ساختار کد تسهیل می‌کند.

🔀 راه‌حل Uber: ترکیب Spark و Ray
🚀 اسپارک همچنان برای پردازش‌های حجیم داده‌ها و خواندن/نوشتن در HDFS استفاده شد.
⚡️ پروژه Ray برای اجرای سریع توابع Python، مدل‌های یادگیری ماشین و محاسبات بهینه‌سازی به کار گرفته شد.

نتیجه:

۴۰ برابر افزایش سرعت در اجرای فرآیند بهینه‌سازی

سادگی توسعه؛ دانشمندان داده می‌توانند مستقیماً در Notebookها با Pandas کار کنند

کاهش سربار پردازشی بدون نیاز به تغییرات گسترده در کدهای موجود

💡آموخته‌ها

ابزارها را متناسب با نیاز انتخاب کنید! Apache Spark و Ray هرکدام در زمینه‌ی خود قوی هستند، اما ترکیب آن‌ها می‌تواند بسیاری از محدودیت‌ها را برطرف کند.

نوسازی کامل همیشه راه‌حل نیست. Uber به‌جای بازنویسی کل سیستم، فقط بخشی از پردازش‌ها را که نیاز به بهینه‌سازی داشتند با Ray اجرا کرد. این یعنی بهینه‌سازی هوشمندانه، بدون تحمیل هزینه‌های سنگین به سازمان.

ریشه‌ی مشکل را درست شناسایی کنید. در این مثال، مشکل اصلی کندی Spark نبود، بلکه ماهیت وظایف کوچک و پرتکرار بود که در Ray بهتر مدیریت شدند.

📌 نتیجه: به‌جای تغییر کل فناوری، روی بهینه‌سازی بخش‌هایی که نیاز دارند تمرکز کنید. 🚀
👍4👏3
Forwarded from عکس نگار
🚀 آیا Apache Spark در حال نابودی است؟ بیایید با هم صحبت کنیم!

در دنیای مهندسی داده، هر چند وقت یک‌بار یک ابزار جدید ظاهر می‌شود و ادعا می‌کند که بهتر، سریع‌تر و کارآمدتر از گزینه‌های قبلی است. این روزها برخی معتقدند که Apache Spark دیگر گزینه‌ی مناسبی برای پردازش داده‌های حجیم نیست و باید جای خود را به فناوری‌های جدید بدهد. اما آیا واقعاً این‌طور است؟ بیاییدمقاله ای که در مارس 2025 در مدیوم با عنوان «Is Apache Spark Really Dying? Let’s Talk» منتشر شده است را با هم مرور کنیم

https://medium.com/@afroinfotech/is-apache-spark-really-dying-lets-talk-9b104b20b5e9

⚡️ چرا برخی به دنبال جایگزین Spark هستند؟
🔴 مشکلات عملکردی: سربار JVM و مدیریت حافظه باعث کاهش کارایی در برخی پردازش‌ها می‌شود.
🔴 ضعف در یادگیری ماشین و تحلیل سریع: Spark MLlib در برابر TensorFlow و PyTorch حرفی برای گفتن ندارد. همچنین، برای کوئری‌های سریع و سبک، ابزارهایی مثل DuckDB و Polars گزینه‌های بهتری هستند.
🔴 پیچیدگی در تنظیمات، راه‌اندازی و دیباگینگ: پیام‌های خطای نامفهوم و نیاز به تنظیمات دقیق برای بهینه‌سازی عملکرد.

🔥 اما چرا Spark همچنان محبوب است؟

🟢 قدرت در پردازش‌های ETL حجیم، مناسب برای پردازش ترابایت‌ها و پتابایت‌های داده.
🟢 مقیاس‌پذیری بالا و پردازش توزیع‌شده، مناسب برای خوشه‌های بزرگ داده‌ای.
🟢 یکپارچگی عالی با ابزارهای داده‌ای مثل Delta Lake، Apache Iceberg و Hudi و سرویس‌های ابری AWS، Azure و GCP.
🟢 پذیرش گسترده در صنعت و جامعه‌ی متخصصان بزرگ، یافتن مهندسان Spark بسیار آسان‌تر از فناوری‌های جدیدی مانند Ray یا Polars است.


🤔 آیا وقت آن رسیده که Spark را کنار بگذاریم؟
اگر پردازش‌های سنگین و توزیع‌شده دارید، Spark همچنان یکی از بهترین گزینه‌هاست.
⚡️ اما اگر به سرعت بالاتر روی یک سیستم واحد، پردازش یادگیری ماشین یا تحلیل بلادرنگ نیاز دارید، ابزارهایی مثل Flink، Polars، Ray و DuckDB انتخاب‌های بهتری هستند.

🔮 آینده‌ی Spark: نابودی یا تکامل؟
واقعیت این است که اسپارک به پایان راه نرسیده هر چند آن چیرگی چندسال پیش خود را در اکوسیستم داده ندارد و ابزارهای متنوع و سبک‌تری برای پردازش داده‌ها امروزه در دسترس ما قراردارند اما اسپارک علاوه بر بلوغ مناسب برای پروژه‌های پردازش داده حجیم، امروزه در حال سازگار کردن خودش با دنیای جدید داده است! 🚀💡

⚖️ انتخاب ابزار مناسب: کاهش پیچیدگی، افزایش بهره‌وری

امروزه گزینه‌های بسیار متنوعی برای پردازش داده‌های حجیم در دسترس ماست، و این وظیفه‌ی مهندسین داده است که تا حد امکان پیچیدگی اضافه به سیستم تحمیل نکنند. انتخاب ابزار مناسب باید بر اساس مصرف بهینه‌ی منابع، سادگی و مقیاس‌پذیری باشد.

به عنوان مثال، اخیراً دیپ‌سیک که یک موج جدید در دنیای مدل‌های زبانی ایجاد کرده، به جای استفاده از Spark از ترکیب DuckDB، یک سیستم فایل جدید و Ray استفاده کرده است. این ترکیب که توسط یک تیم چندنفره توسعه یافته، موفق شده است ۱۰۰ ترابایت داده را در کمتر از ۳۰ دقیقه با استفاده از ۵۰ نود محاسباتی پردازش کند—یک رکورد شگفت‌انگیز!


همچنین، مقاله‌ی چند ماه پیش علیرضا صادقی با عنوان The Rise of Single-Node Processing: Challenging the Distributed-First Mindset به همین موضوع اشاره دارد که برای بیش از ۹۰٪ کاربردهای امروزی، گزینه‌های بسیار بهینه‌تری از ابزارهای کلاسیک پردازش داده مانند Spark وجود دارد.

🔍 نتیجه: تکنولوژی‌هایی مانند Spark همچنان جایگاه خود را دارند، اما مهندسین داده باید فراتر از ابزارهای سنتی فکر کنند و به دنبال راهکارهایی باشند که هم سریع‌تر، هم ساده‌تر و هم کم‌هزینه‌تر باشند.

#ApacheSpark #BigData #مهندسی_داده #ETL #پردازش_داده #یادگیری_ماشین #SingleNodeProcessing
👍4
نوروز ۱۴۰۴ مبارک! 🌸🌿

امیدوارم امسال برای همه‌ی ما سالی بهتر از سال‌های گذشته باشد. سالی که کمی از استرس‌های زندگی، مخصوصاً در ایران، فاصله بگیریم و لحظات آرام‌تری را تجربه کنیم. 🌱

یکی از فصلنامه‌هایی که مدتی است مشترک آن هستم و همیشه با اشتیاق می‌خوانم، ترجمان است که شامل ترجمه‌ی مقالات عمیق و تحلیلی از منابع معتبر خارجی در حوزه علوم انسانی و مباحث فکری و فرهنگی است.

شماره‌ی جدید آن با عنوان «دیگر چیزی برای تماشا نمانده است» منتشر شده و این بار به بحران‌های محیط‌زیستی و اقلیمی پرداخته است. 📖🌍

آدرس وب سایت ترجمان : https://tarjomaan.com

اگر در این روزهای زیبای بهاری، عازم سفر و طبیعت‌گردی هستید، ردپای حضورتان را تنها در خاطره‌ها بگذارید، نه بر تن خسته‌ی زمین… مبادا که ترک بردارد آغوش سبز طبیعت. 🍃
نوروزتان سبز، دلتان آرام و سالتان پر از مهر و معنا. 🌸💙
معمولاً سعی می‌کنم چیزهایی را منتشر کنم که مفید باشد و وقتتان را نگیرد اما وقتی به اوضاع محیط‌زیست نگاه می‌کنم، می‌ترسم که این عنوان، نه یک هشدار، که یک واقعیتِ آینده‌ی نزدیک باشد… خواستم این دغدغه را هم با شما در میان بگذارم. 🍂💭
😁31
Forwarded from عکس نگار
چگونه پی‌پال با ۸ ماشین مجازی، روزانه ۱.۲ میلیارد تراکنش را پردازش می‌کند؟🚀
با کاهش ۹۰٪ هزینه نسبت به ۱۰۰۰ ماشین مجازی؟
در این نوشتار به صورت مختصر این معماری فوق‌العاده را با هم بررسی می‌کنیم
1️⃣ پی‌پال چگونه مسیر خود را پیدا کرد؟
پی‌پال در سال ۱۹۹۸ به‌عنوان یک شرکت امنیتی شروع به کار کرد، اما مدل کسب‌وکار اولیه‌اش موفق نبود. پس از یک تغییر استراتژیک (پیوت)، به سرویس پرداخت آنلاین تبدیل شد و نام PayPal را برگزید.
با افزایش سریع کاربران، نیاز به سخت‌افزار قدرتمندتر احساس شد، اما این تنها آغاز چالش‌های مقیاس‌پذیری بود.
2️⃣ رشد نمایی و محدودیت‌های سخت‌افزاری
در کمتر از دو سال، پی‌پال به بیش از ۱ میلیون تراکنش روزانه رسید. اما قانون مور (Moore’s Law) که پیش‌بینی می‌کرد هر دو سال تعداد ترانزیستورها دو برابر شود، به کندی گرایید.
افزایش عملکرد پردازنده‌های سینگل‌ترد متوقف شد، و صرفاً ارتقای سخت‌افزار دیگر پاسخگوی نیاز نبود.
3️⃣ راه‌حل اولیه: مقیاس‌پذیری افقی (Horizontal Scaling)
پی‌پال برای حل این مشکل، سرویس‌های خود را روی بیش از ۱۰۰۰ ماشین مجازی اجرا کرد. این کار مشکل را موقتاً حل کرد، اما چالش‌های جدیدی به وجود آمد:
🔸 افزایش لتنسی شبکه
🔸 هزینه‌های زیرساختی بالا
🔸 پیچیدگی مدیریت سیستم‌ها
🔸 مصرف ناکارآمد منابع (CPU کم‌بار)
4️⃣ راه‌حل نهایی: مدل اکتور (Actor Model)
پی‌پال به دنبال سیستمی ساده، مقیاس‌پذیر و کم‌هزینه بود. در نهایت، معماری خود را بر پایه مدل اکتور طراحی کرد و به فریم‌ورک Akka (یک ابزار قوی بر پایه JVM و Java) مهاجرت کرد.
🔹 مدل اکتور چیست؟
اکتورها واحدهای فوق‌سبک پردازشی هستند که به‌جای استفاده از تردها، از پیام‌های غیرقابل‌تغییر (Immutable Messages) برای ارتباط استفاده می‌کنند.
این تغییر به پی‌پال اجازه داد میلیون‌ها اکتور را در سیستم مدیریت کند و به سطح جدیدی از کارایی دست یابد.

5️⃣ مزایای مدل اکتور برای پی‌پال
استفاده بهینه از منابع
اکتورها فقط در لحظه پردازش پیام یک ترد دریافت می‌کنند. تعداد تردها محدود به تعداد هسته‌های CPU است، و با Dynamic Thread Pooling هزاران اکتور به‌طور همزمان اجرا می‌شوند.
مدیریت بهینه State
اکتورها ایزوله و بدون حافظه مشترک هستند. هر اکتور یک Mailbox دارد که پیام‌ها را به‌صورت FIFO ذخیره می‌کند.
این معماری نیاز به کش‌های توزیع‌شده یا دیتابیس اضافی را کاهش داده و با ذخیره‌سازی محلی، لتنسی را به حداقل می‌رساند.
کانکارنسی بالا بدون بلاک شدن
هر اکتور پیام‌های خود را به‌صورت ترتیبی پردازش می‌کند، اما چندین اکتور می‌توانند همزمان و غیرهمزمان اجرا شوند.
این معماری از بلاک شدن پردازش‌ها جلوگیری می‌کند و با استفاده از برنامه‌نویسی Functional، ساید افکت‌ها را حذف می‌کند.
🎯 نتیجه؟
با این تغییر معماری، پی‌پال توانست با فقط ۸ ماشین مجازی، روزانه ۱.۲ میلیارد تراکنش را پردازش کند، درحالی‌که هزینه‌های زیرساختی را ۹۰٪ کاهش داد!
مرجع :
https://newsletter.systemdesign.one/p/actor-model
آشنایی با مدل اکتور به زبان فارسی :
https://virgool.io/@sadeghhp/-tyizn4ij09v7
👏4🔥21👍1
Forwarded from عکس نگار
تا چند سال پیش، اگر تغییرات یک پایگاه داده را می‌خواستید رصد کنید، احتمالاً یا مجبور بودید کلی کد سفارشی بنویسید، یا از روش‌های دست و پاگیری مثل پولینگ دوره‌ای استفاده کنید که هم کارایی پایینی داشت و نیازهای بلادرنگ را پیشتیبانی نمی‌کرد، هم ممکن بود تغییراتی را از دست بدهید. اما حالا در دنیای مهندسی داده، CDC یک مفهوم کاملا جاافتاده است!

📌 CDC (Change Data Capture) چیه؟

یک تکنیک هوشمند برای ردگیری تغییرات دیتابیس به‌صورت بلادرنگ است. یعنی هر اضافه، حذف یا ویرایش روی یک جدول دیتابیس، بلافاصله شناسایی شده و می‌تواند برای پردازش‌های بعدی ارسال شود. منظور از هوشمندی تکنیک هم این است که این روش با بررسی تغییرات لحظه‌ای فایل لاگ دیتابیس، بدون اینکه باراضافه ای به دیتابیس تحمیل کند، تغییرات انجام شده را استخراج و آنها را به مقاصدی مانند کافکا ارسال می‌کند.


🔹 بیایید چند مثال بزنیم که چرا CDC این‌قدر پرطرفدار شده:

سرویس‌های پیامکی و ایمیلی
فرض کنید یک فروشگاه آنلاین دارید و می‌خواهید به محض ثبت‌نام کاربر جدید، یک ایمیل خوشامدگویی یا کد تخفیف برایش ارسال کنید. با CDC می‌توانید این تغییرات را شناسایی و به سیستم پیام‌رسانی خود ارسال کنید، بدون اینکه نیازی به تغییر در کدهای بک‌اند داشته باشید.

به‌روزرسانی داشبوردهای تحلیلی
اگر یک دیتابیس فروش دارید و می‌خواهید هم‌زمان در یک انبار داده (Data Warehouse) مثل BigQuery یا ClickHouse هم اطلاعات را به‌روز کنید، CDC اجازه می‌دهد هر سفارش جدید را بلافاصله دریافت و پردازش کنید. (معمولا این تغییرات در کافکا یا یک پیام‌رسان واسط ذخیره میشوند و سپس دیتابیسی مانند کلیک‌هوس آنها را به صورت خودکار از آنها برمی دارد)

مانیتورینگ تراکنش‌های بانکی
در سیستم‌های بانکی، لازم است هر تراکنش مشکوک بلافاصله بررسی شود. CDC این امکان را می‌دهد که تغییرات حساب‌ها را ردیابی کنید و به محض شناسایی فعالیت غیرعادی، به سرویس تحلیل تقلب ارسال کنید.

سنکرون‌سازی دیتابیس‌ها
اگر یک اپلیکیشن دارید که از PostgreSQL استفاده می‌کند و حالا می‌خواهید یک نسخه از داده‌ها را در Elasticsearch هم داشته باشید (مثلاً برای جستجوی سریع‌تر)، CDC می‌تواند این داده‌ها را در لحظه همگام‌سازی کند.

🔥 چرا در سال‌های اخیر CDC این‌قدر محبوب شده؟
🔸 تا چند سال پیش، اگر می‌خواستید یک پردازش بلادرنگ روی تغییرات دیتابیس انجام دهید، گزینه‌های زیادی نداشتید. بیشتر شرکت‌ها مجبور بودند یا پولینگ مداوم انجام دهند (یعنی هر چند ثانیه یک‌بار دیتابیس را اسکن کنند) یا تغییرات را از طریق APIهای پیچیده مدیریت کنند.


🔸 اما حالا با رشد ابزارهایی مثل Debezium، Maxwell، و Estuary Flow، پیاده‌سازی CDC بسیار ساده‌تر و کارآمدتر شده است. شرکت‌های بزرگ مثل Netflix، Airbnb و Uber به‌شدت از CDC برای پردازش‌های بلادرنگ استفاده می‌کنند.

🔸 همچنین، با ظهور معماری‌های مدرن داده مثل Lakehouse، بسیاری از شرکت‌ها به دنبال انتقال داده‌ها از دیتابیس‌های عملیاتی به دیتابیس‌های تحلیلی در لحظه هستند. CDC دقیقاً همین کار را انجام می‌دهد!

بیایید ببینیم امروزه برای دریافت لحظه‌ای تغییرات پایگاه‌های داده مطرح دنیا چه گزینه‌هایی در دسترس داریم .

مدل‌های مختلف CDC
ابزارهای CDC با روش‌های مختلفی داده‌ها را رهگیری و منتقل می‌کنند. پنج مدل اصلی در این زمینه عبارت‌اند از:

🎯 CDC مبتنی بر لاگ (Log-based CDC)
📌 تغییرات را از لاگ تراکنش‌های دیتابیس استخراج می‌کند.
💡 ایده‌آل برای حجم‌های بالا بدون تأثیر بر عملکرد دیتابیس.
🎯 مناسب برای سازمان‌های بزرگ و محیط‌های Enterprise.

🎯 CDC مبتنی بر تریگر (Trigger-based CDC)
📌 از تریگرهای دیتابیس برای ثبت تغییرات استفاده می‌کند.
امکان کنترل دقیق تغییرات.
⚠️ در محیط‌های پرتراکنش باعث کاهش کارایی دیتابیس می‌شود.

🎯 CDC مبتنی بر Query
📌 با اسکن دوره‌ای دیتابیس، تغییرات را شناسایی می‌کند.
پیاده‌سازی ساده و بدون وابستگی به لاگ تراکنش.
⚠️ برای داده‌های حجیم، کارایی پایینی دارد.

🎯 CDC مبتنی بر Timestamp

📌 تغییرات را با بررسی زمان آخرین بروزرسانی رهگیری می‌کند.
پیاده‌سازی آسان، اما ممکن است برخی تغییرات از دست بروند.

🎯 CDC ترکیبی (Hybrid CDC)
📌 ترکیبی از روش‌های بالا برای افزایش دقت و کارایی.
انعطاف‌پذیر برای نیازهای خاص هر سازمان.

معرفی ابزارهای برتر CDC در سال ۲۰۲۵

در این بخش، هر ابزار CDC را به‌همراه دسته‌بندی آن توضیح می‌دهیم تا بدانید کدام ابزار برای نیاز شما مناسب‌تر است.
👌3
Forwarded from عکس نگار
🌟 دبزیوم : Debezium 🔥 (پادشاه محبوب و سنگین‌وزن CDC)
📌 مدل CDC: مبتنی بر لاگ (Log-based CDC)
🎯 ویژگی‌ها:
یک استاندارد صنعتی برای CDC، طراحی‌شده برای Kafka
پشتیبانی از PostgreSQL, MySQL, SQL Server, Oracle, MongoDB
قابلیت Snapshot اولیه و تبدیل پایگاه داده‌های قدیمی به بلادرنگ
⚠️ چالش: پیچیدگی در تنظیمات و نیازمند منابع بالا



🌟 راهکاری مدرن با پشتیبانی از NATS DBConvert Streams ⚡️
📌 مدل CDC: مبتنی بر لاگ (Log-based CDC)
🎯 ویژگی‌ها:
سازگار با PostgreSQL و MySQL
داده‌ها را به Kafka، NATS و سایر سیستم‌ها ارسال می‌کند
سبکتر از Debezium
⚠️ چالش: تنوع دیتابیس‌های پشتیبانی‌شده کمتر از Debezium است


🌟 مکسول: Maxwell Daemon 🏃 (گزینه‌ای سبک برای MySQL)
📌 مدل CDC: مبتنی بر لاگ (Log-based CDC)
🎯 ویژگی‌ها:
طراحی شده برای MySQL (فقط)
سبک‌تر و ساده‌تر از Debezium
خروجی JSON به Kafka، Redis، Kinesis و Google Pub/Sub
⚠️ چالش: پشتیبانی از دیتابیس‌های دیگر را ندارد



🌟 یک ابزار مبتنی بر تریگر
: Sequin 🛡 (انتقال داده‌ها به APIها، بدون از دست دادن داده‌ها!)
📌 مدل CDC: مبتنی بر تریگر (Trigger-based CDC)
🎯 ویژگی‌ها:
برای PostgreSQL طراحی شده است
تحویل داده‌ها ۱۰۰٪ تضمین‌شده
داده‌ها را به REST APIها و Webhooks ارسال می‌کند
⚠️ چالش: وابستگی به تریگرها که می‌تواند روی عملکرد دیتابیس تأثیر بگذارد



🌟 دیتالیک‌هوس : OLake 🌊 (پل CDC به دنیای Data Lakehouse!)
📌 مدل CDC: ترکیبی (Hybrid CDC)
🎯 ویژگی‌ها:
طراحی‌شده برای Apache Iceberg و Data Lakehouse
داده‌ها را مستقیم از پایگاه داده‌های رابطه‌ای به Lakehouse منتقل می‌کند
عملکرد بهینه برای تحلیل داده‌های حجیم
⚠️ چالش: وابستگی زیاد به معماری Data Lakehouse



🌟ابزاری برای اتصال بلادرنگ
Estuary Flow 🔄 (اتصال بلادرنگ دیتابیس‌ها به Data Warehouse!)
📌 مدل CDC: مبتنی بر لاگ (Log-based CDC)
🎯 ویژگی‌ها:
انتقال Real-time داده‌ها از PostgreSQL, MySQL و SQL Server
قابلیت همگام‌سازی با BigQuery، Snowflake، و Redshift
دارای رابط کاربری ساده و بدون نیاز به مدیریت Kafka
⚠️ چالش: کمتر شناخته شده در مقایسه با ابزارهای جاافتاده



🌟 پریزما - ابزاری برای توسعه دهندگان Prisma Pulse 💡
📌 مدل CDC: مبتنی بر تریگر (Trigger-based CDC)
🎯 ویژگی‌ها:
یک ابزار جدید از Prisma، مخصوص PostgreSQL
ساده و سبک، بدون نیاز به Kafka
مناسب برای اپلیکیشن‌های کوچک و متوسط
⚠️ چالش: برای مقیاس‌های بزرگ مناسب نیست



🌟 محصول نتفلیکس DBLog 🎬 (انتقال بلادرنگ داده‌ها در مقیاس Netflix!)
📌 مدل CDC: مبتنی بر لاگ (Log-based CDC)
🎯 ویژگی‌ها:
توسعه‌یافته توسط Netflix برای PostgreSQL
طراحی‌شده برای مقیاس‌های بزرگ و استریم داده با کارایی بالا
بهینه برای تحلیل داده‌های کلان
⚠️ چالش: ابزار جدیدی است و هنوز به‌اندازه Debezium تست نشده است



🌟 ردپاندا کانکت - Redpanda Connect
📌 مدل CDC: مبتنی بر لاگ (Log-based CDC)
🎯 ویژگی‌ها:
ارائه‌ی کانکتورهای قدرتمند برای پایگاه‌های داده محبوب مانند PostgreSQL، MySQL و MongoDB
جایگزینی مقیاس‌پذیر و انعطاف‌پذیر برای Kafka Connect
تسهیل در یکپارچه‌سازی سیستم‌های داده‌ی مختلف

بسیار سریع و اکوسیستم رو به رشد و افزوده شدن سایر دیتابیس ها در آینده نزدیک
⚠️چالش‌: وابستگی به کافکا (ردپاندا)

🔥 جمع‌بندی و انتخاب ابزار مناسب

اگر به Kafka نیاز دارید: Debezium، Maxwell Daemon یا DBConvert Streams
اگر به BigQuery یا Snowflake نیاز دارید: Estuary Flow
اگر به یک راهکار سبک برای PostgreSQL می‌خواهید: Prisma Pulse یا Sequin
اگر داده‌ها را به Data Lakehouse ارسال می‌کنید: OLake
اگر یک ابزار در سطح Netflix می‌خواهید: DBLog (Netflix) / RedPanda Connect

🔥 جمع‌بندی
امروزه، ابزارهای CDC به بخش مهمی از معماری داده مدرن تبدیل شده‌اند. با ظهور گزینه‌های جدید، کسب‌وکارها می‌توانند بسته به نیاز خود، بهترین ابزار را برای پردازش تغییرات بلادرنگ در پایگاه داده‌هایشان انتخاب کنند.

💡 در سال‌های اخیر، حرکت از Batch Processing به سمت Real-time Data Processing سرعت گرفته است. هر روز شرکت‌های بیشتری CDC را جایگزین روش‌های قدیمی برای انتقال داده می‌کنند.
Reference: https://asrathore08.medium.com/change-data-capture-tools-c0e4ee4434ac
👍7👌1
Fundamentals_of_Data_Engineering_Reis,_JoeHousley,_Matt_Z_Library.pdf
8.4 MB
Fundamentals of Data Engineering (Reis, JoeHousley, Matt) (Z-Library).pdf
8
Forwarded from عکس نگار
تا سال ۲۰۳۰، نزدیک به ۵۹٪ از نیروی کار جهانی نیازمند یادگیری مهارت‌های جدید خواهند بود—اما همه به این فرصت دسترسی نخواهند داشت!

این یکی از پیام‌های کلیدی گزارش تازه مجمع جهانی اقتصاد – آینده مشاغل ۲۰۲۵ است.

لینک آنلاین گزارش (که بسیار کامل و خواندنی است) :

https://www.weforum.org/publications/the-future-of-jobs-report-2025/in-full/introduction-the-global-labour-market-landscape-in-2025/


این گزارش که با تحلیل داده‌های بیش از ۱۰۰۰ شرکت، ۲۶ صنعت و ۱۴ میلیون کارگر تهیه شده، روندهای پیش روی بازار کار را بررسی می‌کند.

📌 نتیجه روشن است: هوش مصنوعی با سرعتی فراتر از پیش‌بینی‌ها، آینده مشاغل را دگرگون خواهد کرد.


🔹 آیا هوش مصنوعی، انقلاب صنعتی جدید است؟


شواهد نشان می‌دهند که در ۲ تا ۳ سال آینده، تأثیر هوش مصنوعی بر کسب‌وکارها و بازار کار، به‌اندازه تحول موتور بخار در قرن نوزدهم عمیق خواهد بود.

🏆 ۱۰ مهارت کلیدی برای سال ۲۰۳۰:


1️⃣ هوش مصنوعی و کلان‌داده

2️⃣ سواد دیجیتال

3️⃣ تفکر خلاقانه

4️⃣ انعطاف‌پذیری و چابکی

5️⃣ تحلیل‌گری و حل مسئله

6️⃣ رهبری و نفوذ اجتماعی

7️⃣ خودانگیختگی و شناخت فردی

8️⃣ تفکر سیستمی

9️⃣ مدیریت استعدادها

🔟 کنجکاوی و یادگیری مادام‌العمر

🚀 موضوع فقط یادگیری فناوری نیست—بلکه پرورش مهارت‌های انسانی مانند خلاقیت، انطباق‌پذیری و تفکر سیستمی است که ماشین‌ها قادر به تقلید آن نیستند.

📌 نکات کلیدی گزارش:

تا سال ۲۰۳۰، ۱۷۰ میلیون شغل جدید ایجاد خواهد شد، اما ۹۲ میلیون شغل از بین می‌رود.

۳۹٪ از مهارت‌های کنونی دیگر کاربرد نخواهند داشت.

هوش مصنوعی هم یک چالش جدی است و هم یک فرصت بی‌نظیر.

فاکتورهای اصلی این تغییرات: پیشرفت فناوری، اهداف زیست‌محیطی، ESG و تحولات جمعیتی.


🔹 حقیقت این است که مهارت‌آموزی دیگر یک گزینه نیست—بلکه یک ضرورت است.

🔹 یا خود را برای آینده آماده می‌کنید، یا از قافله عقب خواهید ماند!

🛠 چگونه با این تغییرات همراه شویم؟

📌 همین امروز یادگیری هوش مصنوعی را آغاز کنید!

🔹 مفاهیم پایه را بیاموزید.

🔹 ابزارهای هوش مصنوعی را در حوزه کاری خود به کار ببرید.

🔹 یادگیری را متوقف نکنید—زیرا دنیای فناوری هر روز در حال تغییر است!


در این مسیر، کلان‌داده نقش کلیدی ایفا می‌کند. هوش مصنوعی برای یادگیری، بهینه‌سازی و تصمیم‌گیری نیازمند حجم عظیمی از داده‌های باکیفیت است. ابزارهای مرتبط با کلان‌داده، از پردازش لحظه‌ای گرفته تا تحلیل‌های پیشرفته، بنیان اصلی این تحول دیجیتال هستند.
بدون زیرساخت داده‌ای قوی، حتی پیشرفته‌ترین الگوریتم‌های هوش مصنوعی نیز نمی‌توانند به پتانسیل واقعی خود برسند! 🚀


پ.ن:

این متن ترجمه ای است از این پست در لینکدین : yun.ir/r1x9ef
👍4