مهندسی داده
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
معرفی سایت DataNerd.tech؛ مرجعی برای تحلیل مهارت‌ها و حقوق مشاغل داده‌ای

سایت DataNerd.tech به عنوان یک مرجع تحلیلی📊، با هدف کمک به متخصصان داده ایجاد شده است تا بتوانند با آگاهی بیشتر، مسیر شغلی خود را انتخاب کنند.

این پلتفرم با جمع‌آوری روزانه حدود ۶۵۰۰ آگهی شغلی از نتایج جستجوی گوگل و تحلیل آن‌ها از طریق پردازش زبان طبیعی (NLP)، پرطرفدارترین مهارت‌ها و متوسط حقوق هر موقعیت شغلی را ارائه می‌دهد.

آدرس سایت : https://datanerd.tech

در بخش مربوط به مهندسین داده، مهارت‌هایی مانند #SQL، #Python، #AWS، #Azure و #Spark جزو پرجستجوترین مهارت‌ها هستند. این داده‌ها به کاربران کمک می‌کند تا بدانند چه مهارت‌هایی در بازار کار بیشتر مورد توجه قرار دارند و بر چه زمینه‌هایی تمرکز بیشتری داشته باشند. همچنین سایت دارای بخشی برای مشاهده روند تغییرات محبوبیت مهارت‌ها در طول زمان است که تصویری دقیق‌تر از تحولات بازار ارائه می‌دهد. 📈

بر اساس تحلیل‌های ارائه‌شده در DataNerd.tech، پردرآمدترین مشاغل 💵 به ترتیب شامل مهندس نرم‌افزار، مهندس یادگیری ماشین و مهندس داده هستند.

از سوی دیگر، گران‌ترین مهارت‌های 💎 بازار عبارتند از #Scala، #Spark، #Snowflake، #Java و #Python که توجه به آن‌ها می‌تواند در افزایش فرصت‌های شغلی و درآمد تأثیر قابل توجهی داشته باشد.

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


یک حقیقت تلخ : دنیا امروز به مهارت‌های کلاد نیاز بیشتری دارد، اما در ایران، به دلیل محدودیت‌ها، ما بیشتر مجبوریم روی پروژه‌های اپن سورس که امکان اجرا روی سرورهای خودمان را دارند، کار کنیم.


#مهندسی_داده #تحلیل_داده #علم_داده #بازار_کار_داده #هوش_مصنوعی #Data_Engineering #Data_Science #Data_Analytics #Machine_Learning #Career_Growth
👍2
چطور از هوش مصنوعی در برنامه‌نویسی حرفه‌ای‌تر استفاده کنیم؟
در دنیای امروز، ابزارهای هوش مصنوعی مثل Cursor و Copilot باعث شده‌اند فکر کنیم ساخت هر پروژه‌ای ساده‌تر از همیشه شده‌ است.
اما خیلی زود با یک واقعیت روبرو می‌شویم: اگر بدون طراحی درست و مدیریت دقیق از AI کمک بگیریم، خیلی راحت در چرخه‌ی فرساینده‌ی خطاها و آشفتگی گم می‌شویم.
🔁 این چرخه‌ی آزاردهنده معمولا اینطور شروع می‌شود:

از عامل هوشمند می‌خواهیم مشکلی را حل کند.

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

دوباره درخواست می‌کنیم،
#AI قول می‌دهد بهتر شده، ولی مشکل جدیدی ظاهر می‌شود.

خطای جدید رفع می‌شود، ولی خطای قبلی برمی‌گردد!

در نهایت حتی یادمان می‌رود دقیقا چه چیزی می‌خواستیم بسازیم...


برای بهبود این تجربه‌ی فرساینده و جلوگیری از این چرخه‌ی غیرحرفه‌ای، امروز خلاصه‌ای از پست آموزنده‌ی آقای Peter Wooldridge در لینکدین را با هم مرور می‌کنیم و ادامه متن الهام گرفته از پست ایشان است:
https://www.linkedin.com/feed/update/urn:li:activity:7321534312430854146/

✏️ برای جلوگیری از این مسیر فرسایشی و ساختن یک تجربه‌ی حرفه‌ای‌تر، چند اصل ساده ولی حیاتی وجود دارد:

🔁 قبل از هر کاری طراحی واضح انجام بده: دقیقا مشخص کن چه چیزی می‌خواهی و چه بخش‌هایی در پروژه وجود دارد.

به جای اینکه مستقیم درخواست کدنویسی بدهی، سوالات روشن و هدفمند بپرس. مثلا: "بهترین روش برای مدیریت خطاهای API چیست؟"

📜 اگر از Cursor استفاده می‌کنی، حتما یک فایل .cursorrules بساز تا هوش مصنوعی بداند کی باید فکر کند و کی باید کدنویسی کند.

( از آدرس زیر قوانین cursor‌ را بردارید و آنرا به بخش قوانین در تنظیمات cursor اضافه کنید :https://x.com/0xDesigner/status/1915152801761812783 )

🌐 برای دسترسی سریع به مستندات، از دستور @web استفاده کن.

🛠 هنگام دیباگ کردن، به جای فرمان دادن، با سوال پیش برو. هدایت کردن بهتر از تحمیل کردن است.


اگر تغییرات بد پیش رفت، ریورت کن، به عقب برگرد، و برنامه را ساده‌تر بچین.

🔁 در صورت نیاز، بدون ترس پروژه را بازطراحی کن و با یک طرح ساده‌تر دوباره شروع کن.

توضیحات فوق به همراه شکل‌های مورد نیاز از تنظمیات cursor در این آدرس از توئیتر قابل مشاهده است :
https://x.com/0xDesigner/status/1915152801761812783

🧠 در مورد Copilot هم بهتر است بدانیم:
دستیار Copilot برای پاسخ‌های سریع و تولید اولیه‌ی کد فوق‌العاده است.
اما استفاده‌ی بدون مدیریت از حالت Agent آن می‌تواند خیلی سریع پروژه را وارد آشفتگی کند.
🎯 توصیه‌ی کاربردی: بیشتر از بخش Ask استفاده کن، و تنها زمانی سراغ حالت Agent برو که طراحی، تقسیم وظایف و هدف هر بخش را از قبل مشخص کرده باشی.

پس یادت باشد:
اول خوب طراحی کن → سوال دقیق بپرس → بعد از قدرت AI برای ساختن استفاده کن.
وگرنه به راحتی در یک حلقه‌ی بی‌پایان از خطاها و دوباره‌کاری گیر می‌کنی!
👍5
چرا دریافت نتایج کوئری گاهی اینقدر طول می‌کشد؟

با پیشرفت روزافزون فناوری دیتابیس‌ها، ضروری است که روش‌ها و پروتکل‌های انتقال داده نیز به‌روزرسانی شوند تا بتوان از تمامی ظرفیت و توان پردازشی این سیستم‌ها به‌طور مؤثر بهره‌برداری کرد.

فرض کنید به عنوان یک تحلیلگر داده، با استفاده از درایور ODBC به ClickHouse متصل شده‌اید و دستوری برای بازیابی ۱۰ هزار رکورد خاص اجرا کرده‌اید. دستور را ارسال می‌کنید و منتظر نتایج می‌مانید، اما متوجه می‌شوید که زمان دریافت نتایج به طرز معناداری بیشتر از زمانی است که همان دستور را مستقیماً در خط فرمان ClickHouse اجرا کرده‌اید. 😕 این تفاوت زمانی از کجا می‌آید و چرا برای کاربرانی مثل شما که با داده‌های بزرگ کار می‌کنید، مهم است؟

دلیل اصلی این کندی، به نحوه عملکرد درایورهای سنتی مانند ODBC برمی‌گردد. ClickHouse یک دیتابیس تحلیلی است که از ذخیره‌سازی ستونی استفاده می‌کند—ساختاری که برای پردازش سریع داده‌های حجیم بهینه شده است. اما درایورهای ODBC برای دیتابیس‌های ردیفی طراحی شده‌اند و مجبورند داده‌های ستونی را به فرمت ردیفی تبدیل کنند. این تبدیل، هم زمان‌بر است و هم منابع زیادی مصرف می‌کند، که نتیجه‌اش کاهش عملکرد و تأخیر در دریافت داده‌هاست. برای تحلیلگران داده، مهندسین داده و دانشمندان داده که به سرعت و کارایی وابسته هستند، این یک چالش جدی است.

🚀 فرمت Arrow: استانداردی برای پردازش سریع داده‌های تحلیلی
سال‌هاست که Apache Arrow به عنوان یک فرمت درون حافظه برای کار با داده‌های ستونی، به یک استاندارد رایج برای پردازش سریع و بهینه داده‌های تحلیلی تبدیل شده است. Arrow با طراحی خاص خود، سربار ناشی از تبدیل داده‌ها بین فرمت‌های مختلف را حذف می‌کند و امکان پردازش موازی را فراهم می‌آورد. این یعنی شما می‌توانید داده‌های بزرگ را با سرعت بیشتری تحلیل کنید. 📊 این فرمت با ابزارهای محبوبی مثل Pandas، Apache Spark و Dask سازگار است و به همین دلیل، برای جامعه داده به یک انتخاب ایده‌آل تبدیل شده است.

حالا تصور کنید اگر بتوانید همین سرعت و کارایی را مستقیماً در ارتباط با دیتابیس‌ داشته باشید. ADBC دقیقا با همین هدف و توسط پروژه محبوب Arrow توسعه داده شد.

🌟 کتابخانه ADBC: راهکاری مدرن برای ارتباط سریع با دیتابیس‌ها
اینجاست که ADBC (Arrow Database Connectivity) وارد می‌شود! ADBC یک رابط برنامه‌نویسی کاربردی (API) مدرن است که به شما اجازه می‌دهد داده‌ها را به صورت مستقیم و در فرمت ستونی از دیتابیس‌هایی مثل ClickHouse یا حتی پستگرس دریافت کنید. با ADBC، دیگر نیازی به تبدیل‌های وقت‌گیر به فرمت ردیفی نیست—داده‌ها با همان ساختار ستونی که برای تحلیل بهینه است، به اپلیکیشن شما منتقل می‌شوند. 🚄

🎯 مزایای ADBC برای تحلیلگران و مهندسین داده
- سرعت بیشتر: حذف تبدیل‌های ردیفی، زمان دریافت داده‌ها را به شدت کاهش می‌دهد.
- پشتیبانی از استریمینگ: داده‌ها به صورت پیوسته و بدون وقفه منتقل می‌شوند.
- انعطاف‌پذیری: با دیتابیس‌های مختلف، از ClickHouse تا PostgreSQL، کار می‌کند.
- اکوسیستم کامل: یک API یکپارچه با ابزارهایی مثل Flight SQL که کار توسعه و کاربرد آنرا ساده‌تر می‌کنند.

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

#DataEngineering #Database #ADBC #ApacheArrow #BigData #PerformanceOptimization #DuckDB #PostgreSQL


منبع : https://arrow.apache.org/blog/2025/02/28/data-wants-to-be-free/
👍61
چالش‌های مهندسان داده در دنیای ذخیره‌سازی داده‌ها 🌐

فرض کنید شما در تیم مهندسی داده یک پروژه هستید و با چالش‌های مختلفی در حوزه ذخیره‌ داده‌ها مواجهید. مثلا :

💭 انتخاب بین سرویس‌های ذخیره‌سازی مختلف : باید تصمیم بگیرید داده‌ها را در AWS S3، GCS یا Azure Blob Storage ذخیره کنید، اما هر سرویس API خاص خودش را دارد. تغییر بین این سرویس‌ها یا مهاجرت به سرویس جدید، نیازمند بازنویسی بخش زیادی از کدهاست و زمان و منابع تیم را هدر می‌دهد.

🔄ذخیره‌سازی همزمان در فضای ابری و محلی : می‌خواهید داده‌ها را هم در فضای ابری (برای مقیاس‌پذیری) و هم در سرورهای محلی (برای بازیابی سریع) ذخیره کنید. اما هماهنگ‌سازی این دو بدون پیچیدگی و تغییرات گسترده در کدها، تقریباً غیرممکن به نظر می‌رسد.

🌍 دسترسی یکپارچه به منابع داده متنوع : داده‌های شما در سیستم‌های مختلفی مثل یک پایگاه داده کلیدمقدار مانند RocksDB، یک وب‌درایو، فضای ابری و فایل‌سیستم محلی پراکنده‌اند. (شکل را با دقت نگاه کنید) مدیریت این منابع با APIهای متفاوت، زمان توسعه را افزایش می‌دهد و پیچیدگی پروژه را بیشتر می‌کند.

🛠 کتابخانه OpenDAL چگونه این چالش‌ها را حل می‌کند؟

کتابخانه OpenDAL یک لایه دسترسی داده متن‌باز است که با ارائه یک API یکپارچه، این چالش‌ها را به حداقل می‌رساند. با OpenDAL می‌توانید به‌راحتی به سیستم‌های ذخیره‌سازی مختلف متصل شوید، بدون اینکه نیاز به بازنویسی کد یا مدیریت پیچیدگی‌های APIهای متفاوت داشته باشید.

نکته : کد ساده پایتون موجود در شکل را حتما چک کنید .

🔹 مزایای OpenDAL برای مهندسان داده:

یکپارچگی در دسترسی به داده‌ها: با OpenDAL شما می‌توانید به منابع ذخیره‌سازی مختلف دسترسی داشته باشید، چه آن‌ها در فضای ابری باشند و چه روی سرورهای محلی.

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

پشتیبانی از چندین سرویس ذخیره‌سازی: از AWS S3، Azure Blob Storage، GCS و حتی HDFS پشتیبانی می‌کند، بنابراین هیچ محدودیتی از این بابت نخواهید داشت.

ارتقاء مقیاس‌پذیری و انعطاف‌پذیری سیستم‌های ذخیره‌سازی: OpenDAL به شما این امکان را می‌دهد که ذخیره‌سازی داده‌ها را به راحتی در سیستم‌های توزیع‌شده گسترش دهید.

🌟 آهسته و پیوسته، مهرش به دل نشسته : باز هم Rust

یکی از ویژگی‌های برجسته OpenDAL، استفاده از زبان برنامه‌نویسی Rust در توسعه آن است. در دنیای داده‌ها، جایی که پردازش حجم عظیمی از اطلاعات و اطمینان از عملکرد بهینه اهمیت دارد، Rust به‌تدریج جای خود را باز کرده است. پروژه‌هایی مانند Apache Arrow، Polars و DataFusion از Rust استفاده می‌کنند و OpenDAL نیز با بهره‌گیری از این زبان، توانسته است یک لایه دسترسی داده با کارایی بالا و قابل اعتماد ارائه دهد. Rust نه‌تنها به توسعه‌دهندگان امکان می‌دهد که ابزارهایی مقیاس‌پذیر و کارآمد بسازند، بلکه به دلیل جامعه رو به رشد و ابزارهای مدرن خود، به یکی از انتخاب‌های اصلی برای پروژه‌های متن‌باز تبدیل شده است. تا Rust که را خواهد و میلش به که باشد ...


🌟 نتیجه‌گیری:

کتابخانه OpenDAL با API یکپارچه و قابلیت‌های گسترده‌ای که ارائه می‌دهد، پیچیدگی‌های دسترسی به داده‌ها را کاهش می‌دهد و به مهندسان داده امکان می‌دهد با سرعت و کارایی بیشتری پروژه‌های خود را پیش ببرند. این ابزار، با پشتیبانی بنیاد آپاچی، آینده‌ای روشن در مهندسی داده دارد. 🌐🚀
👍5
در مورد پست بالا . نمونه کد پایتون موجود در عکس را حتما چک کنید که متوجه بشید این کتابخانه ارزشمند دقیقا چقدر می تونه ساده اما موثر باشه .
👍6
چرا Discord بخش‌هایی از زیرساخت خود را از Go به Rust منتقل کرده است؟🦀

در سال‌های اخیر، Rust به یکی از محبوب‌ترین زبان‌های برنامه‌نویسی در میان مهندسان ارشد نرم‌افزار و معماران سیستم تبدیل شده است. در حالی که Go به دلیل سادگی و سرعت توسعه همچنان طرفداران خود را دارد، Rust با ایمنی حافظه بی‌نظیر، عملکرد قابل پیش‌بینی و اکوسیستم پویا، به‌ویژه در سیستم‌های حساس و پرترافیک، به گزینه‌ای برتر تبدیل شده است. نمونه بارز این تغییر رویکرد، تصمیم دیسکورد برای بازنویسی سرویس کلیدی "Read States" از Go به Rust است که در مقاله‌ای توسط جسی هووارث در سال 2020 شرح داده شده است. در این پست، دلایل این مهاجرت، مزایای Rust و روند روبه‌رشد پذیرش آن در صنعت بررسی می‌شود.

لینک مقاله اصلی :
https://discord.com/blog/why-discord-is-switching-from-go-to-rust

چرا Rust؟ روند روبه‌رشد در میان مهندسان ارشد

Rust به دلیل ویژگی‌های منحصربه‌فردش به‌سرعت در حال جایگزینی Go در پروژه‌های پیچیده است. مهندسان ارشد به دلایل زیر به این زبان روی می‌آورند:

ایمنی حافظه و هم‌زمانی در زمان کامپایل: Rust با سیستم مالکیت (Ownership) و Borrow Checker، خطاهایی مانند استفاده پس از آزادسازی (Use-After-Free) یا شرایط رقابتی (Data Races) را در زمان کامپایل حذف می‌کند. این ویژگی برای پروژه‌های حساس مانند runtime امن IoT تیم Azure مایکروسافت حیاتی بود، جایی که وقفه‌های ناشی از GC یا باگ‌های هم‌زمانی قابل‌تحمل نبودند.
عملکرد پایدار و بدون افت: بدون نیاز به جمع‌آوری زباله (GC)، Rust باینری‌های Native تولید می‌کند که عملکردی قابل پیش‌بینی دارند. این ویژگی در سرویس‌های پرترافیک مانند Read States دیسکورد، تاخیرهای لحظه‌ای را حذف کرد.
نگه‌داری بلندمدت: ابزارهایی مانند Cargo، پیام‌های خطای دقیق و استانداردهای کدنویسی قوی، کدهای Rust را خوانا و پایدار نگه می‌دارند، که در پروژه‌های طولانی‌مدت ارزشمند است.
اکوسیستم پویا: crates.io با رشد بیش از 2.1 برابر در سال و بیش از 430 میلیون دانلود در یک روز در سال 2024، نشان‌دهنده بلوغ کتابخانه‌های Rust در حوزه‌هایی مانند WebAssembly، بلاک‌چین و سیستم‌های ابری است.
پذیرش گسترده در صنعت: پروژه‌هایی مانند Firecracker (آمازون)، Solana (بلاک‌چین) و سیستم‌های IoT مایکروسافت، Rust را به دلیل ایمنی و کنترل دقیق انتخاب کرده‌اند.

سرویس Read States دیسکورد: چالش‌های Go

سرویس Read States در دیسکورد وظیفه ردیابی وضعیت خوانده شدن پیام‌ها و کانال‌ها را بر عهده دارد. این سرویس در هر اتصال، ارسال یا خواندن پیام فعال می‌شود و باید تاخیری بسیار پایین داشته باشد تا تجربه کاربری روان بماند. نسخه Go این سرویس در اکثر مواقع سریع بود، اما هر چند دقیقه با تاخیرهای ناگهانی (Latency Spikes) مواجه می‌شد که به مدل حافظه و GC مربوط بود.

مشکلات Go:
ساختار داده و مقیاس: Read States شامل میلیاردها شیء است که برای هر کاربر و کانال یک نمونه دارند. این اشیاء در یک کش LRU با میلیون‌ها نمونه ذخیره می‌شوند و صدها هزار به‌روزرسانی در ثانیه دارند.
جمع‌آوری زباله: در Go، حافظه پس از اخراج از کش بلافاصله آزاد نمی‌شود. GC هر 2 دقیقه یک‌بار اجرا می‌شود و کل کش را اسکن می‌کند، که باعث تاخیرهای قابل‌توجه می‌شد.
تلاش‌های بهینه‌سازی: تنظیم درصد GC بی‌اثر بود، زیرا تخصیص حافظه به اندازه کافی سریع نبود. کاهش اندازه کش LRU تاخیرهای GC را کم کرد، اما به دلیل افزایش بارگذاری از پایگاه داده Cassandra، تاخیرهای 99th Percentile افزایش یافت.
با وجود بهینه‌سازی‌های متعدد، عملکرد Go همچنان ناکافی بود. دیسکورد که پیش‌تر از Rust در بخش‌هایی مانند کدگذاری ویدئو (Go Live) و NIF‌های Elixir استفاده کرده بود، تصمیم گرفت این سرویس را به Rust منتقل کند.

✴️ ورود Rust به صحنه

تیم Discord پیش‌تر در بخش‌هایی مثل رمزنگاری و پردازش ویدئو از Rust استفاده کرده بود، و تصمیم گرفت یک نسخه‌ی کامل از Read States را با Rust بازنویسی کند.

📊 نتایج شگفت‌انگیز بودند:

بدون GC → مدیریت حافظه در زمان کامپایل (مدل Ownership)

تأخیر یکنواخت‌تر → حذف spikes ناشی از GC

ایمنی حافظه در زمان کامپایل → بدون نیاز به چک‌های runtime

پشتیبانی قوی از async → با استفاده از tokio و async/await




📈 نتایج نهایی:

بهبود چشمگیر درصدهای ۹۹٪ و ۹۹.۹٪ در زمان پاسخ‌دهی

تاخیر: تاخیرهای دوره‌ای حذف شدند، میانگین زمان پاسخ به میکروثانیه و حداکثر زمان برای @mentions به میلی‌ثانیه رسید.

منابع: مصرف CPU و حافظه به‌طور چشمگیری کاهش یافت.

افزایش ظرفیت کش: برخلاف Go، افزایش ظرفیت کش LRU به 8 میلیون Read State عملکرد را بهبود داد، زیرا Rust نیازی به GC نداشت.


🧠 جمع‌بندی برای مهندسین نرم‌افزار/داده:
👍3
ادامه از پست قبل :

زبان Rust به‌دلایل زیر به انتخاب مهمی برای سیستم‌های mission-critical تبدیل شده است:

🔹 مدیریت حافظه بدون GC

🔹 پرفورمنس بالا و قابل پیش‌بینی

🔹 ایمنی حافظه و هم‌زمانی در زمان کامپایل

🔹 اکوسیستم async در حال رشد (tokio، actix و...)


🏢 شرکت‌هایی مثل AWS، Microsoft، Discord با مهاجرت به Rust، این مسیر را هم فنی و هم راهبردی می‌دانند.



💡 اما باید واقع‌بین بود:

⚠️ اکوسیستم Rust هنوز به بلوغ کامل نرسیده

⚠️ منحنی یادگیری بالا دارد

⚠️ توسعه آن نسبت به Go و Python سخت تر است.



اما در حوزه‌هایی مثل:

🚀 طراحی زیرساخت داده

🔁 پایپ‌لاین‌های پردازش مقیاس‌پذیر

💡 سامانه‌های real-time و سنگین


زبان Rust یک انتخاب اجتناب ناپذیر شده است.

در صنعت نیز، Rust در پروژه‌هایی مانند Firecracker، Solana و سیستم‌های IoT مایکروسافت به دلیل ایمنی و عملکرد بالا پذیرفته شده است. به گفته یکی از متخصصان:

«نبوغ Go در داشتن GC است. نبوغ Rust در این است که به آن نیازی ندارد.»

مهاجرت سرویس Read States از Go به Rust نمونه‌ای موفق از پذیرش فناوری‌های نوظهور برای حل مشکلات عملکرد است. Rust با حذف تاخیرهای GC، بهبود عملکرد و ارائه ایمنی حافظه، تجربه کاربری بهتری برای دیسکورد فراهم کرد. در دنیایی که امنیت، عملکرد و قابلیت اطمینان اهمیت روزافزونی دارند، Rust نه‌تنها یک انتخاب خاص، بلکه استانداردی جدید در معماری نرم‌افزار است. در دنیای مهندسی داده، که سرعت، پایداری و کنترل منابع اهمیت بالایی دارد، Rust می‌تواند مزایای چشم‌گیری ارائه دهد. این زبان در حال تبدیل شدن به یکی از اجزای کلیدی زیرساخت‌های داده‌ای نسل جدید است — نه فقط به‌عنوان زبان سیستم‌نویسی، بلکه به‌عنوان پلتفرمی برای ساخت سامانه‌های سریع، ایمن و مقیاس‌پذیر.
👍4
کتاب تجزیه و تحلیل داده پیشرفته با PySpark
آدرس خرید:
yun.ir/km851f
👍3
چرا مایکروسافت برای Clarity, دیتابیس تحلیلی کلیک‌هوس را برگزید؟

این پست ترجمه‌ای است از پست رسمی تیم ClickHouse درباره انتخاب این پایگاه داده قدرتمند توسط مایکروسافت.
پست اصلی :
https://www.linkedin.com/posts/clickhouseinc_when-microsoft-made-clarity-free-for-everyone-activity-7325580280390451200-fV_M

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


برای چنین زیرساختی، انتخاب موتور تحلیلی بسیار مهم بود.
مایکروسافت پس از ارزیابی گزینه‌هایی مانند Elasticsearch و Apache Spark، در نهایت با تحقیقاتی گسترده و تست‌های متعدد، ClickHouse را برگزید.

چرا ClickHouse؟

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

دلایل اصلی:

📥 عملکرد بارگذاری (Ingestion): موتور MergeTree در ClickHouse، نرخ ورودی بسیار بالایی را پشتیبانی می‌کند که کاملاً با نیاز بار عظیم Clarity هم‌خوانی دارد.
عملکرد کوئری: پرس‌وجو روی میلیاردها ردیف در کسری از ثانیه، با کارایی فوق‌العاده. این عملکرد سریع، نیاز به منابع پردازشی بیشتر را حذف و هزینه‌ها را کاهش می‌دهد.
💾 بهره‌وری در ذخیره‌سازی: ساختار ستونی و فشرده‌سازی پیشرفته، موجب صرفه‌جویی چشم‌گیر در فضای دیسک می‌شود. امکان تعریف دیسک‌های گرم و سرد نیز برای کاهش بیشتر هزینه‌ها فراهم است.
📈 مقیاس‌پذیری افقی: ClickHouse به‌صورت master-master توزیع شده و از replication پشتیبانی می‌کند. این یعنی مقیاس‌پذیری روان و آسان هنگام افزایش ترافیک.
🤝 جامعه‌ی متن‌باز و فعال: انتشار منظم نسخه‌ها، پاسخ‌گویی سریع در GitHub و تلگرام، و پشتیبانی قدرتمند. جالب‌تر اینکه تیم مایکروسافت نیز به پروژه کمک کرده و نام خود را در جدول system.contributors ثبت کرده‌اند!

و در نهایت، همان‌طور که در گزارش رسمی مایکروسافت آمده است:

> Compared to our POC system, ClickHouse outperformed Elastic Search and Spark in every aspect. Heat map generation became an instantaneous task to do, and it was even orders of magnitude cheaper to run. This is the reason why many products have migrated from Elastic Search to ClickHouse, experiencing significant enhancements in their services as a result.

آدرس مقاله اصلی مایکروسافت :
https://clarity-blogs-hbh0gkgebxgwfkgd.westus2-01.azurewebsites.net/why-microsoft-clarity-chose-clickhouse/

#ClickHouse #Microsoft #Clarity #داده_های_انبوه #تحلیل_داده #پایگاه_داده #BigData #DataEngineering #ElasticSearch #Spark #CloudArchitecture #OpenSource #مقیاس‌پذیری #StorageOptimization #DatabasePerformance #DistributedSystems
3🔥1
معرفی یک پروژه متن‌باز آموزشی : پایپ‌لاین بلادرنگ داده‌های رمزارز
پروژه‌ای ارزشمند و با اهداف آموزشی توسط آقای عارف فرزانه توسعه داده شده است؛ یک پایپ‌لاین داده‌ای مقیاس‌پذیر و بلادرنگ برای دریافت، پردازش و تحلیل قیمت رمزارزها در زمان واقعی.
این پروژه با هدف آموزش و توسعه ابزارهای تحلیل بلادرنگ طراحی شده و به‌صورت متن‌باز در اختیار علاقه‌مندان قرار گرفته است.

ویژگی‌های فنی پروژه:
استفاده از Quix Streams در پایتون برای پردازش جریان داده‌ها

بهره‌گیری از Redpanda (سازگار با Kafka) برای انتقال داده با کارایی بالا

استفاده از Docker جهت کانتینرسازی و اجرای ماژولار

محاسبه تحلیل‌های بلادرنگ مانند میانگین متحرک

دریافت زنده قیمت رمزارزها از API سرویس CoinLore

معماری مقاوم در برابر خطا با قابلیت بازیابی خودکار

طراحی ماژولار و آماده برای توسعه‌هایی نظیر هشدارهای معاملاتی و داشبوردهای بصری

دسترسی به مخزن پروژه:
github.com/ArefFarzaneh/crypto_data_pipeline
این پروژه می‌تواند مرجع مناسبی برای علاقه‌مندان به شروع پردازش داده‌های بلادرنگ، تحلیل بازار رمزارزها، و توسعه سیستم‌های معاملاتی باشد.
👍21
کلیک‌هوس عالیه... ولی همیشه بهترین انتخاب نیست!🌟

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

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

📈 در همین راستا، پروژه‌هایی مثل Apache Doris و StarRocks (که از Doris منشعب شده‌ است) در حال رشد و جلب توجه هستند. Doris به‌ویژه با اضافه‌کردن قابلیت‌هایی مثل Inverted Index برای جستجوی سریع‌تر در لاگ‌ها و پشتیبانی بومی از Joinهای چندجدولی، موفق شده نظر بسیاری از تیم‌ها را به خود جلب کند — حتی برخی از تیم‌هایی که قبلاً از Elasticsearch استفاده می‌کردند!



🛠 کلیک‌هوس ذاتاً برای پردازش‌های تک‌جدولی طراحی شده و برای پشتیبانی از کوئری‌های چندجدولی یا Joinهای پیچیده، معمولاً به راهکارهای جانبی مثل Data Virtualization نیاز دارد. این در حالی است که Doris چنین سناریوهایی را به‌صورت بومی و بهینه پشتیبانی می‌کند.

🎧 تجربه واقعی: مهاجرت Tencent Music Entertainment از ClickHouse به Apache Doris

شرکت Tencent Music Entertainment (TME) با بیش از ۸۰۰ میلیون کاربر فعال ماهانه، تصمیم گرفت معماری داده خود را بازطراحی کند. تیم مهندسی داده‌ی این شرکت با مشکلاتی مثل:

⚠️هزینه بالای ذخیره‌سازی در ClickHouse

⚠️عدم پشتیبانی از به‌روزرسانی جزئی (Partial Update)

⚠️پیچیدگی در اجرای کوئری‌های فدره بین ClickHouse و Elasticsearch

رو‌به‌رو بود.

🧭 نتیجه؟ مهاجرت به Doris

مزایای به‌دست‌آمده در این مهاجرت استراتژیک:

کاهش ۴۲٪ در هزینه ذخیره‌سازی

کاهش ۴۰٪ در هزینه توسعه

تعریف یک لایه معنایی (Semantic Layer) برای مدیریت یکپارچه KPIها و تگ‌ها

یکپارچگی‌ بیشتر با Kafka و Flink

کاهش تأخیر در دسترسی به داده‌ها

استفاده از Doris Light Schema Change برای تغییرات ساختاری سریع و کم‌هزینه



🔬 مقایسه عملکردی Doris و ClickHouse در تست‌های واقعی:

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

📌 در ۱۰ کوئری از ۱۶ کوئری، Doris تا ۳۰ برابر سریع‌تر از ClickHouse بود!

🔹 ۴ میلیارد ردیف (Join کامل و فیلترشده): Doris بین ۲ تا ۵ برابر سریع‌تر بود؛ ClickHouse با مشکلات حافظه مواجه شد.

🔹 ۲۵ میلیارد ردیف: Doris کوئری‌ها را در چند ثانیه اجرا کرد؛ ClickHouse چند دقیقه زمان برد یا حتی در جداول بزرگ (بالای ۵۰ میلیون ردیف) اجرا نشد.

🔹 ۹۶ میلیارد ردیف: Doris به‌راحتی همه کوئری‌ها را اجرا کرد؛ ClickHouse از عهده‌ی این حجم داده برنیامد.



🔍 آیا Doris سهم ClickHouse را خواهد گرفت؟

با توجه به تجربه‌ی سازمان‌هایی مثل TME و قابلیت‌های جدید Doris، این پایگاه داده در حال تبدیل شدن به گزینه‌ای جدی برای تیم‌هایی‌ست که به استاندارد بودن SQL، ادغام ساده، و عملکرد بالا در مقیاس بزرگ نیاز دارند.

در مقابل، ClickHouse با وجود سرعت بالا، در سناریوهای واقعی با محدودیت‌هایی مثل ضعف در Joinهای پیچیده، ناتوانی در اجرای کوئری بین چند منبع داده مختلف بدون انتقال داده، و انعطاف‌پذیری پایین در تغییر ساختار جداول روبروست. اگر ClickHouse در این زمینه‌ها به‌روزرسانی نشود، ممکن است بخشی از جایگاه خود را در بازار سازمانی از دست بدهد.

منابع :
- https://www.pracdata.io/p/state-of-open-source-read-time-olap-2025
- https://doris.apache.org/blog/migrating-from-clickhouse-to-apache-doris-what-happened
- https://doris.apache.org/blog/Tencent-Data-Engineers-Why-We-Went-from-ClickHouse-to-Apache-Doris
👍6👎1
فرمت‌های ستونی نوین Lance: راه‌حلی برای دنیای متن‌باز هوش مصنوعی

در دنیای داده‌های بزرگ ، یکی از گرایش‌های پرطرفدار اخیر، ایجاد زیرساخت‌های ذخیره و پردازش داده به صورت متن‌باز و بدون وابستگی به دیتابیس‌های خاص است. این رویکرد با ذخیره داده‌ها در قالب فایل‌های خام مانند #Parquet و ساختاردهی به این فایل‌ها با استفاده از تکنولوژی‌هایی مثل #ApacheIceberg ، به سرعت در حال گسترش است. مفهوم #LakeHouse و پشتیبانی دیتابیس‌های تحلیلی از این ایده در محصولات تجاری 📊، نشان از پذیرش این روش دارد.

با این حال، باید توجه داشت که فرمت پارکت به طور ویژه برای دسترسی Full Scan طراحی شده است و از پیشرفت‌های اخیر دیسک‌های جدید به‌طور کامل بهره نمی‌برد. همچنین برای ورک‌لودهای هوش مصنوعی 🤖 که نیاز به دسترسی تصادفی دارند، این فرمت چندان بهینه نیست. بنابراین، اگر قصد گسترش این ایده در دنیای هوش مصنوعی را داریم، به نگاه و استانداردهای جدید نیازمندیم.

📄 در مقاله‌ای که اخیراً تیم LanceDB منتشر کرده، فرمت جدیدی به نام Lance معرفی شده که به‌طور خاص برای ورک‌لودهای هوش مصنوعی طراحی شده است. این فرمت در مقایسه با پارکت، عملکرد دسترسی تصادفی را تا ۶۰ برابر سریع‌تر 🚀 ارائه می‌دهد و به‌ویژه برای تحلیل‌های پیچیده و ذخیره‌سازی داده‌های بزرگ، انتخاب مناسبی به‌نظر می‌رسد. خلاصه مقاله را در ادامه با هم مرور می‌کنیم.
آدرس مقاله : https://arxiv.org/pdf/2504.15247 - آوریل ۲۰۲۵

قالب نوین Lance از LanceDb
فرمت Lance که توسط LanceDB معرفی شده، برای حل مشکلات فرمت‌های سنتی مانند Parquet طراحی شده است. ویژگی‌های برجسته این فرمت عبارتند از:

ساختار انکودینگ متفاوت: Lance با دو نوع انکودینگ، دسترسی تصادفی را سریع‌تر ⚡️ و اسکن کامل را بهینه‌تر 📊 می‌کند.
این انکودینگ‌ها شامل:
🛠 انکودینگ مبتنی بر عرض داده برای دسترسی تصادفی سریع‌تر 🔍
🛠 انکودینگ ساختاری برای داده‌های پیچیده مانند لیست‌ها و بردارها 📚
🛠 بهینه‌سازی برای NVMe: لنس از پهنای باند NVMe به‌طور بهینه استفاده می‌کند و عملکردی تا ۶۰ برابر بهتر از Parquet در دسترسی تصادفی دارد ⚡️.
تعادل بین دسترسی تصادفی و اسکن کامل: برخلاف Parquet که برای اسکن کامل بهینه شده، Lance تعادلی را برای دسترسی سریع به داده‌های خاص و همچنین اسکن کل ستون فراهم می‌کند .
پشتیبانی از ورک‌لودهای هوش مصنوعی: Lance به‌ویژه برای جستجوهای تمام‌متن 📑، جستجوهای برداری 📍 و آموزش مدل‌های یادگیری ماشین بهینه‌سازی شده است 🤖.

نتایج کلیدی:
عملکرد دسترسی تصادفی: تا ۶۰ برابر سریع‌تر از Parquet ⚡️.
مصرف RAM: به‌طور چشمگیری کاهش یافته که برای دیتاست‌های بزرگ 🏋️‍♂️ مهم است.
مقایسه با NVMe: عملکرد بهینه با استفاده از سخت‌افزار مدرن 💻.

جمع‌بندی:
فرمت Lance یک راه‌حل قدرتمند برای ورک‌لودهای مدرن در حوزه ایجاد ساختارهای ذخیره و بازیابی داده‌ها با فرمت باز و بدون وابستگی به ابزارها و دیتابیس‌ها، به‌ویژه در حوزه هوش مصنوعی است 🤖. با بهینه‌سازی برای دسترسی تصادفی و پشتیبانی از داده‌های پیچیده 🔗، Lance می‌تواند جایگزینی عالی برای Parquet در این حوزه باشد، به‌خصوص در کاربردهایی که سرعت و کارایی اهمیت دارند 🚀.
ایده این نوشتار از این پست لینکدین گرفته شده است : https://www.linkedin.com/posts/dipankar-mazumdar_lakehouse-dataengineering-softwareengineering-activity-7326626194622197761-hrHy/
👍3
👆👆👆
3
خرید پروژه‌ی متن‌باز Arroyo توسط Cloudflare 🔥

شرکت Cloudflare به‌تازگی اعلام کرده که پروژه‌ی Arroyo، یکی از نوآورانه‌ترین موتورهای پردازش جریان داده، را به مجموعه‌ی خود افزوده است. این پروژه که در سال ۲۰۲۲ با زبان #Rust 🦀 و توسط دو بنیان‌گذار راه‌اندازی شد، بر تجربه‌ای بی‌نیاز از مدیریت زیرساخت، عملکرد بالا و سادگی در توسعه متمرکز بوده است.

منبع خبر : https://www.arroyo.dev/blog/arroyo-is-joining-cloudflare


این خرید از دو جهت برای من مهم است:

🧠 کلودفلیر با افزودن قابلیت پردازش جریان با SQL 📊 به سرویس‌هایی مثل R2 ، Workers ⚙️ و Queues ، یک گام مهم به‌سوی ساخت پلتفرم ابری کامل، مقیاس‌پذیر و بی‌نیاز از مدیریت زیرساخت برداشته است—رقابتی جدی برای
#AWS و #GoogleCloud.

🧠 پروژه‌ی متن‌باز Arroyo تنها با تلاش دو نفر در ۲۰۲۲ آغاز شد و امروز توسط یکی از بزرگ‌ترین شرکت‌های اینترنتی خریداری شده است؛ نمونه‌ای الهام‌بخش از اینکه تیم‌های کوچک هم می‌توانند به موفقیت‌های بزرگ برسند. 🚀

جزییات این خبر و این پروژه را با هم کمی مرور می‌کنیم.


🔍 کتابخانه Arroyo : ساده‌سازی پردازش جریان بلادرنگ برای همه ⚙️

پروژه Arroyo یک موتور پردازش جریان (#StreamProcessing) مدرن و متن‌باز است که با هدفی روشن توسعه یافته:

💡 «تبدیل پردازش جریان از یک فناوری پیچیده و لوکس به ابزاری ساده و در دسترس، شبیه نوشتن یک کوئری SQL معمولی برای یک جدول پایگاه‌داده.»


این پروژه با هدف ساده‌سازی توسعه‌ی سیستم‌های پردازش آنی و حذف پیچیدگی‌های زیرساختی ایجاد شده ⚡️ و از فناوری‌های مدرنی مانند Apache Arrow 🏹 و DataFusion 🔗 بهره می‌برد تا عملکرد بالا و کارایی حافظه را تضمین کند.



مهم‌ترین قابلیت‌های Arroyo:

پشتیبانی کامل از SQL با بیش از ۳۰۰ تابع توکار برای تحلیل‌های زمانی، پنجره‌ای و آماری

دقت بالا با Exactly-Once Semantics حتی در صورت بروز خطا یا دریافت داده‌های نامرتب

پشتیبانی از انواع پنجره‌ها (گروه‌بندی زمانی رخدادها): sliding، tumbling و session ⏱️

اتصال به منابع متنوع مانند #Kafka 🧩، #Redis 🔴، #RabbitMQ 🐰 و CDC

مقیاس‌پذیری برای پردازش میلیون‌ها رویداد در ثانیه ⚡️

پشتیبانی از UDF با #Python 🐍، پروتکل Protobuf و مدیریت TTL در وضعیت‌ها

امکان ساخت lookup tables برای داده‌های جریانی 🧷


📸 برای اینکه دقیقا متوجه شوید منظور از پردازش جریان با Arroyo آنهم فقط به کمک SQL‌ چیست، می‌توانید به عکس‌های پایین این پست دقت کنید.


اکنون با پیوستن Arroyo به زیرساخت گسترده‌ی Cloudflare، کاربران می‌توانند از مزایای ترکیب پردازش آنی SQL (به کمک Arroyo)، ذخیره‌سازی ابری (R2)، صف‌های توزیع‌شده (Queues) و اجرای بدون سرور (Workers) در قالب یک پلتفرم یکپارچه و مقیاس‌پذیر بهره‌مند شوند.


🔓کتابخانه Arroyo همچنان متن‌باز و قابل میزبانی مستقل باقی خواهد ماند، و با حمایت Cloudflare از توسعه‌ی پایدار، افزایش کارایی و رشد جامعه‌ی کاربران خود بهره‌مند خواهد شد.

🚀 برای مهندسان داده، استارتاپ‌ها، مدیران محصول، تحلیل‌گران داده و تیم‌هایی که به‌دنبال جایگزینی سریع‌تر و ساده‌تر برای #ApacheFlink یا سایر ابزارهای پردازش جریان هستند، Arroyo اکنون نه‌تنها یک انتخاب هوشمندانه، بلکه یک بستر قدرتمند برای آینده است.

🦀 همچنین Arroyo نمونه‌ای از موج نوین پروژه‌های مبتنی بر زبان برنامه‌نویسی Rust است؛ زبانی که با امنیت بالا و مدیریت حافظه‌ی بسیار دقیق، در حال گشودن مرزهای تازه‌ای در دنیای زیرساخت‌های داده و پردازش بلادرنگ است.
عکس ها مرتبط با پست بالا هستند. 👆👆👆
👍1