مهندسی داده
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
چرا UUID7 و ULID گزینه‌های بهتری برای کلیدهای اصلی در پایگاه داده هستند؟
در طراحی پایگاه‌های داده، انتخاب نوع شناسه (ID) یکی از تصمیم‌های کلیدی است که می‌تواند تأثیر زیادی بر عملکرد، مقیاس‌پذیری و امنیت سیستم داشته باشد.
در سناریوهایی مثل سیستم‌های توزیع‌شده، APIهای پرترافیک یا صفحات محصول در وب‌سایت‌ها که نیاز به درج سریع داده و جلوگیری از افشای الگوی رکوردها وجود دارد، استفاده از کلیدهای auto-increment معمولاً گزینه مناسبی نیست. چون:
⛔️باعث قفل شدن جدول در شرایط همزمانی بالا می‌شود،
⛔️امکان حدس زدن تعداد یا ترتیب رکوردها را فراهم می‌کند.

💡 راه‌حل سنتی چیست؟
استفاده از UUID (نسخه ۴) به‌عنوان کلید اصلی مزایای خوبی دارد: یکتایی جهانی بدون نیاز به هماهنگی بین سرورها، مناسب برای محیط‌های توزیع‌شده، و جلوگیری از افشای الگوهای داده. اما یک مشکل جدی دارد.
🔍 چرا UUID تصادفی (مثلاً UUIDv4) در دیتابیس‌ها عملکرد خوبی ندارد؟
اکثر پایگاه‌های داده رابطه‌ای مانند PostgreSQL، MySQL و SQL Server برای ایندکس‌گذاری — مخصوصاً روی کلید اصلی — از ساختاری به‌نام B-Tree (Balanced Tree) استفاده می‌کنند.
این ساختار کمک می‌کند:
✳️جستجوی کلیدها با پیچیدگی O(log n) انجام شود (سریع و مقیاس‌پذیر)،
✳️داده‌ها به‌صورت مرتب نگه داشته شوند،
✳️ و درج، حذف یا به‌روزرسانی به‌شکل کارآمد مدیریت شود.
اما مشکل از جایی شروع می‌شود که کلیدهایی با ترتیب تصادفی (مثل UUIDv4) در جدول وارد می‌شوند.

📉 چه اتفاقی می‌افتد؟
وقتی داده‌های زیادی با کلید تصادفی وارد جدول می‌شوند:
⛔️ دیتابیس نمی‌تواند آن‌ها را در انتهای ساختار درختی اضافه کند (مثل auto-increment IDs)،
⛔️ باید آن‌ها را بین صفحات مختلف B-Tree پراکنده کند،
⛔️ این پراکندگی باعث عملیات مکرر Page Split (شکستن صفحات)، جابه‌جایی نودها و بازچینش ساختار درختی می‌شود.


🧨 نتیجه؟
🧱کند شدن محسوس عملیات درج (INSERT)،
🧱 مصرف بالای I/O و حافظه،
🧱 کاهش عملکرد کلی سیستم در سناریوهای پرترافیک.

راه‌حل‌های مدرن: UUID7 و ULID
برای رفع این مشکلات، دو استاندارد جدید معرفی شده‌اند:
🔹 استاندارد ULID (Lexicographically sortable): ترکیبی از timestamp و داده تصادفی
🔹 استاندارد UUIDv7: نسخه‌ای از UUID با ترتیب زمانی، سازگار با استاندارد UUID

مزیت اصلی این دو چیست؟

🔸 با حفظ یکتایی و امنیت، کلیدها به‌صورت ترتیبی در ایندکس درج می‌شوند.
🔸 این یعنی:
کاهش شدید Page Split و پراکندگی
بهبود درج‌های پرترافیک
جست‌وجوی سریع‌تر بر اساس بازه‌های زمانی

📊 چه زمانی از هرکدام استفاده کنیم؟
اگر خوانایی و طول کوتاه‌تر مهم است → ULID
اگر سازگاری با UUID استاندارد اهمیت دارد → UUIDv7

📐 قالب ULID
قالب ULID یک رشته ۲۶ نویسه‌ای است که با Crockford’s Base32 کدگذاری می‌شود (حروف I, L, O, U حذف شده‌اند تا اشتباه نشوند).
→ طول: ۲۶ نویسه - کاراکترهای ابتدایی مهرزمان هستند.
→ مثال: 01AN4Z07BY79KA1307SR9X4MV3

📐 قالب UUIDv7
→ نمایش به‌صورت استاندارد UUID در مبنای ۱۶ (hex) با خط تیره
→ طول شامل خط تیره: ۳۶ نویسه - کاراکترهای ابتدایی مهرزمان هستند.
→ قالب: 8-4-4-4-12
→ مثال: 017f45e0-7e1a-7a3f-8bbc-4dbf7e6d9c3a
→ طول بدون خط تیره: ۳۲ نویسه hex

بنابراین UUID7 طول بیشتری نسبت به ULID دارد اما چون با استاندارد UUID سازگاراست، برای سیستم‌های موجود گزینه بهتری است.

#Database #Backend #DistributedSystems #UUID #ULID #PostgreSQL #SystemDesign #Performance #مهندسی_داده
👍81
Doordash.pdf
984.9 KB
شرکت DoorDash چگونه پلتفرم پردازش بلادرنگ خود را با Iceberg متحول کرد؟

شرکت DoorDash برای پردازش رویدادهای بلادرنگ خودش، یک پلتفرم استریم داخلی توسعه داده که امکان تصمیم‌گیری سریع و هوشمند را برای تیم‌های تجاری فراهم می‌کند.
در ساعات اوج فعالیت، این پلتفرم با حجم بالایی از داده روبه‌رو می‌شود — بیش از ۳۰ میلیون پیام در هر ثانیه، معادل حدود ۵ گیگابایت داده در ثانیه که از سمت مشتریان، رانندگان (Dashers)، فروشندگان و اپلیکیشن‌های داخلی DoorDash ارسال می‌شود.

ساختار اولیه به این صورت بود:
🧱دریافت و بافر داده‌ها با Kafka
🧱پردازش با Apache Flink
🧱ذخیره در Amazon S3
🧱 در نهایت، انتقال داده‌ها به Snowflake از طریق یک پایپ‌لاین به نام Snowpie

اما این معماری در عمل با چند مشکل جدی مواجه شد:
⛔️هزینه‌های بالای Snowflake
⛔️دوبار نوشتن داده‌ها (هم در S3 و هم در Snowflake)
⛔️وابستگی به یک فروشنده خاص ( Snowflake)

برای حل این چالش‌ها، DoorDash تصمیم گرفت به سراغ Apache Iceberg برود تا زیرساخت داده‌ای بلادرنگ خود را بازطراحی کند؛ راه‌حلی متن‌باز، مقیاس‌پذیر و مستقل از فروشنده.
خلاصه آنرا در PDF الصاق شده مشاهده کنید👆
👍5
اوج بلوغ تیم‌های مهندسی داده: محیط Staging و چک‌لیست تغییرات دیتابیس 🔴

وقتی یه دستور ساده می‌تونه کل سیستم رو بخوابونه!

چند روز پیش یکی از دوستان تماس گرفت و گفت روی یک جدول بزرگ در ClickHouse دستور OPTIMIZE FINAL زده. جدول مربوط به دیتای اصلی سیستمشون بوده و چند میلیارد رکورد داشته. نتیجه؟ تمام CPUها پر شدن، کوئری‌های عادی از کار افتادن و سیستم عملاً فلج شده. 🧨

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

🧑‍💻 ما باید عادت کنیم مثل مهندسان نرم‌افزار، محیط‌های جدا برای تست و اجرا داشته باشیم.

🚫 داده‌های حساس و عملیاتی هیچ‌وقت نباید محل آزمایش باشن.


اینا چند تا نکته‌ کلیدی هستن که هر مهندس داده باید رعایت کنه:

🔹 محیط staging جداگانه داشته باشیم که شبیه production باشه (نه لزوماً با همون حجم دیتا)

🔹 دیتا رو نمونه‌گیری (sample) کنیم و روی کپی‌ها تست کنیم، نه روی دیتای اصلی

🔹 دستورات سنگین مثل OPTIMIZE, VACUUM, یا REINDEX رو اول روی محیط تست اجرا کنیم

🔹 حتماً از ابزارهای مانیتورینگ، لاگ‌گیری و EXPLAIN استفاده کنیم قبل از اجرای کوئری‌های پرهزینه 📊




جادوی چک‌لیست 📝

قبل از اجرای هر عملیات دیتابیسی سنگین، باید یه چک‌لیست ساده ولی جدی داشته باشیم:

تست انجام شده؟

دیتای درگیر چقدره؟

منابع مورد نیاز؟

توقف اضطراری یا rollback چطوریه؟

مانیتور فعال هست؟

روی staging امتحان شده؟

چک‌لیست‌ها نه فقط جلوی اشتباهات انسانی رو می‌گیرن، بلکه فرهنگ مسئولیت‌پذیری، نظم و آرامش به تیم می‌دن. 🧠

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

چک‌لیست‌ها تو مهندسی داده جادو می‌کنن.

#مهندسی_داده #DataEngineering #ClickHouse #StagingMatters #ChecklistMagic #DatabaseOps #ProductionReady
👍2
شرکت OpenAI چگونه کلاستر های کافکای خود را پایدار کرد و توان عملیاتی خود را ۲۰ برابر کرد؟ 🚀

در یک سال گذشته، OpenAI توان عملیاتی Kafka را در بیش از ۳۰ خوشه، بیست برابر افزایش داد و به پایداری خیره‌کننده ۹۹.۹۹۹٪ (پنج ۹) دست یافت.  در ادامه، به سه بخش کلیدی این تحول می‌پردازیم:

🟩 ۱. گروه‌بندی خوشه‌ها (Cluster Groups)

چالش: با بیش از ۳۰ خوشه Kafka در محیط‌های متفاوت (هر کدام با تنظیمات مخصوص، احراز هویت‌های پراکنده و قوانین فایروال خاص خود)، استفاده از سیستم بسیار پیچیده شده بود. کاربران نمی‌دانستند برای ذخیره یا خواندن داده باید به کدام خوشه متصل شوند و سؤالات مکرری مثل «تاپیک X کجاست؟» زمان توسعه را تلف می‌کرد. اگر یکی از خوشه‌ها از کار می‌افتاد، کاربران باید به‌صورت دستی به خوشه دیگری مهاجرت می‌کردند، که هم وقت‌گیر بود و هم مستعد خطا.

راه‌حل: OpenAI خوشه‌ها را به شکل گروه‌های خوشه‌ای درآورد؛ یعنی مجموعه‌ای از خوشه‌ها که در یک منطقه جغرافیایی قرار دارند (مثلاً آمریکا یا اروپا) و با هم یک گروه منطقی را تشکیل می‌دهند. کاربران حالا با «تاپیک‌های منطقی» کار می‌کنند که به‌صورت خودکار به تاپیک‌های فیزیکی در خوشه‌های مختلف همان گروه متصل می‌شوند. این ساختار، زیرساخت پیچیده را از دید کاربران پنهان می‌کند و در صورت خرابی یک خوشه، خوشه‌های دیگر گروه جایگزین می‌شوند.

🟨 ۲. پراکسی تولیدکننده : Prism

چالش: پیش از این، هر اپلیکیشنی که داده تولید می‌کرد، مستقیماً به Kafka متصل می‌شد. این مدل باعث ایجاد تا ۵۰ هزار اتصال همزمان به هر بروکر می‌شد که منجر به مصرف شدید حافظه و کاهش پایداری می‌گردید. همچنین، توسعه‌دهندگان باید تنظیمات پیچیده‌ای مانند لیست بروکرها، پورت‌ها، و احراز هویت را به‌صورت دستی انجام می‌دادند. اگر یک خوشه از دسترس خارج می‌شد، برنامه‌ها باید دستی به خوشه دیگری متصل می‌شدند، که منجر به خطا و قطعی می‌شد.

راه‌حل: OpenAI یک پراکسی به نام Prism ایجاد کرد که با استفاده از gRPC به‌عنوان واسط ارتباطی، پیچیدگی Kafka را از کاربران پنهان می‌سازد. برنامه‌ها فقط داده را به Prism می‌فرستند و Prism مسئول هدایت آن به بروکرهای مناسب است. در صورت خرابی یک خوشه، داده‌ها به‌طور خودکار به خوشه‌های دیگر گروه ارسال می‌شود.

🟧 ۳. پراکسی مصرف‌کننده : uForwarder

چالش: مصرف‌کنندگان Kafka هم با مشکلاتی مشابه روبه‌رو بودند. برنامه‌ها باید به‌صورت دستی تنظیمات Kafka، انتخاب خوشه، مدیریت offset و احراز هویت را انجام می‌دادند. این فرآیند زمان‌بر و مستعد خطا بود. از طرف دیگر، مدل pull سنتی Kafka برای خواندن داده‌ها، موجب تأخیر و محدودیت در مصرف همزمان می‌شد. در صورت خرابی خوشه‌ها، اتصال مجدد مصرف‌کنندگان به صورت دستی نیاز بود، که کارآمد نبود.

راه‌حل: OpenAI از uForwarder (یک پروژه متن‌باز از Uber) بهره گرفت که مدل مصرف را از pull به push تغییر می‌دهد. در این مدل، uForwarder خودش داده‌ها را از Kafka دریافت کرده و به اپلیکیشن‌ها تحویل می‌دهد. این پراکسی ویژگی‌های پیشرفته‌ای دارد مثل: بازارسال خودکار، صف پیام‌های ناموفق (DLQ)، مصرف همزمان از چند خوشه، و موازی‌سازی پیشرفته. همچنین از مشکلاتی مثل Head-of-Line Blocking جلوگیری می‌کند.

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

منبع:
https://lnkd.in/dVpS5ZaD
👏2👍1
https://virgool.io/divarengineering/-bhwoaodprld6
سفر تکامل نقشه‌ی دیوار: داستان مهندسی پشت نمایش هوشمند میلیون‌ها آگهی
وقتی به دنبال خانه یا ملک می‌گردید، «کجا بودن» آن شاید اولین و مهم‌ترین سؤالی باشد که به ذهنتان می‌رسد. در پلتفرمی مثل دیوار که روزانه هزاران آگهی املاک در آن ثبت می‌شود، نمایش این حجم از اطلاعات مکانی به شکلی کارآمد و قابل فهم، یک چالش بزرگ است. ما در دیوار مسیری پر فراز و نشیب را برای بهبود نمایش آگهی‌ها روی نقشه طی کرده‌ایم؛ از نمایش ساده‌ی نقطه‌ای تا سیستم‌های هوشمند کلاستربندی داینامیک. این مقاله داستان این تکامل فنی و تصمیم‌هایی است که در این راه گرفته‌ایم. هدف ما نه تنها ارائه‌ی یک تجربه‌ی کاربری روان، بلکه ساخت زیرساختی پایدار و مقیاس‌پذیر برای آینده‌ی نقشه‌ی دیوار بوده است.
——-
این مقاله خواندنی را از آدرس بالا مطالعه کنید .
2👍2
معرفی افزونه رسمی PostgreSQL برای Visual Studio Code — توسط مایکروسافت 🐘
🔔 مناسب برای توسعه‌دهندگان، مهندسان داده، و همه‌ی علاقه‌مندان به PostgreSQL

مایکروسافت به‌تازگی نسخه‌ی پیش‌نمایش افزونه رسمی PostgreSQL برای VS Code را منتشر کرده است. این افزونه با هدف ساده‌سازی تجربه کار با PostgreSQL در محیط VS Code طراحی شده و تلاش می‌کند فرایندهایی مانند نوشتن، اجرای کوئری، مشاهده ساختار دیتابیس، و حتی رفع باگ را برای کاربران ساده‌تر، هوشمندتر و سریع‌تر کند.


📊 زمینه‌سازی و ضرورت این ابزار:
بر اساس نظرسنجی‌های توسعه‌دهندگان (StackOverflow، GitHub، Stripe Atlas Reports)، بیش از نیمی از زمان کاری توسعه‌دهندگان صرف کارهای تکراری یا تغییر کانتکست بین ابزارهای مختلف (IDE، PgAdmin، ترمینال، ابزارهای مانیتورینگ و...) می‌شود. افزونه جدید PostgreSQL با هدف رفع این چالش‌ها، یک محیط یکپارچه و هوشمند در خود VS Code فراهم می‌کند.

🎯 قابلیت‌های کلیدی این افزونه:

1. 🧠 پشتیبانی از GitHub Copilot با دستور @pgsql
افزونه به‌صورت کامل با GitHub Copilot مجتمع شده است و از دستورات مخصوص @pgsql پشتیبانی می‌کند:
نوشتن و بازنویسی کوئری‌های SQL با زبان طبیعی (انگلیسی)
دریافت پیشنهادات بهینه‌سازی کوئری
توضیح عملکرد کوئری‌های پیچیده
تولید کوئری‌های چندمرحله‌ای: مثلاً "یک دیتابیس بساز، جدول بساز، PostGIS فعال کن، داده درج کن"
استفاده از حالت "Chat Agent" برای تعامل طبیعی‌تر با Copilot به‌صورت گفت‌وگویی

2. 📜 تاریخچه کامل کوئری‌ها (Query History)
یکی از ویژگی‌های بسیار مفید این افزونه، ثبت خودکار تاریخچه تمام کوئری‌های اجراشده است. می‌توانید به‌راحتی کوئری‌های قبلی را مرور، ویرایش، یا دوباره اجرا کنید. حتی پس از بستن و باز کردن مجدد VS Code، تاریخچه کوئری‌ها حفظ می‌شود.

3. 🧭 مرورگر دیتابیس (Database Explorer)
این قابلیت به شما اجازه می‌دهد ساختار دیتابیس (جداول، ویوها، ایندکس‌ها، توابع و ...) را به‌صورت گرافیکی مرور کرده و بدون نیاز به نوشتن کوئری، عملیات‌هایی مانند ایجاد، ویرایش یا حذف انجام دهید.

4. 🧾 هوش مصنوعی در نوشتن SQL (SQL IntelliSense)
تکمیل خودکار اسامی جداول و ستون‌ها
نمایش خطاهای سینتکسی حین نوشتن
فرمت خودکار کوئری‌ها (با قابلیت شخصی‌سازی)
پشتیبانی از توضیح خط به خط کوئری‌ها با استفاده از Copilot

5. 🗺 نمایش گرافیکی جداول
با یک کلیک می‌توانید ساختار دیتابیس را به‌صورت گرافیکی (ERD) مشاهده کرده و روابط بین جداول را تحلیل کنید.

6. 🔐 احراز هویت ایمن
اگر از Azure Database for PostgreSQL استفاده می‌کنید، امکان احراز هویت با Azure Entra ID (بدون نیاز به ذخیره پسورد) فراهم شده است — مناسب برای سازمان‌هایی با الزامات امنیتی خاص.

7. 🔄 مدیریت چندین اتصال (Multi-Profile)
می‌توانید چندین پروفایل اتصال (مثلاً PostgreSQL روی لوکال، Docker، Cloud) تعریف کرده و به‌راحتی بین آن‌ها سوییچ کنید. حتی امکان اتصال مستقیم به دیتابیس‌های Azure از طریق "Browse Azure" نیز فراهم است.

📦 نحوه نصب افزونه :

افزونه PostgreSQL را سرچ کرده، افزونه آبی رنگ و مدرنی که متعلق به مایکروسافت هست را نصب کنید.

افزونه GitHub Copilot را نیز فعال کنید تا از ویژگی‌های @pgsql بهره ببرید


📘 مستندات کامل: https://techcommunity.microsoft.com/blog/adforpostgresql/announcing-a-new-ide-for-postgresql-in-vs-code-from-microsoft/4414648
👍4
معرفی DuckLake: ساده‌سازی Lakehouse با قدرت SQL

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

🧠 این همان فلسفه‌ی #Lakehouse است:

ترکیب بهترین ویژگی‌های Data Lake (انعطاف و مقیاس‌پذیری) و Data #Warehouse (ساختارمندی و قابلیت تحلیل)

اما واقعیت این است که #Lakehouse ها در عمل با پیچیدگی‌هایی همراه هستند:
برای هر جدول، باید اطلاعاتی مانند schema، نسخه‌ها، تغییرات، پارتیشن‌بندی و ... در فراداده‌ها نگه داشته شود. این یعنی نیاز به سیستم‌های اضافی کاتالوگ‌ها، متادیتا‌ها و گاهی سرویس‌‌های اضافی برای مدیریت نسخه‌ها

اما : چرا وقتی به هر حال به یک دیتابیس نیاز داریم (برای کاتالوگ)، از ابتدا همه چیز را در SQL مدیریت نکنیم؟


📢 امروز #DuckDB با معرفی #DuckLake، پاسخی جسورانه و منطقی به این سوال داده است.

اما سوال اصلی : DuckLake چیست؟


استاندارد DuckLake یک فرمت Open Table جدید برای معماری Lakehouse است که:

داده‌ها را در قالب‌های باز مانند Parquet در Blob Storage ذخیره می‌کند؛

اما تمام فراداده‌ها (metadata)، snapshotها، schemaها و آمار را در یک پایگاه داده SQL ساده (مثل PostgreSQL یا خود DuckDB) مدیریت می‌کند.

🔍 چرا DuckLake یک تغییر بنیادین است؟

1. سادگی واقعی

برخلاف Iceberg و Delta که برای یک append ساده، باید چندین فایل JSON و Avro ایجاد یا به‌روز کرد، در DuckLake همه چیز فقط چند query ساده SQL است.
نیازی به لایه‌ی اضافه‌ی catalog server یا فایل‌های اضافی نیست. فقط یک دیتابیس و فایل‌های Parquet.

2. مدیریت تراکنش‌پذیر (ACID) واقعی

تغییرات در جدول‌ها، snapshotها و آمار ستون‌ها در یک تراکنش واحد SQL انجام می‌شود. این یعنی:
📌atomic commitها؛
📌پشتیبانی از تغییرات پیچیده و multi-table؛
📌 بدون ترس از ناسازگاری فایل‌ها در blob storage.

3. سازگاری، مقیاس‌پذیری و سرعت
می‌توانید DuckLake را با DuckDB روی لپ‌تاپ اجرا کنید یا با PostgreSQL روی کلاود.
برخلاف ساختارهای فایل‌محور، پردازش‌ها سریع‌تر، قابل کش‌شدن و قابل مشاهده‌اند.
محدود به هیچ vendor خاصی نیستید؛ جابه‌جایی آسان است.

🏗 یک نگاه به معماری DuckLake:

📁 داده‌ها → Parquet روی S3 یا هر blob store

📚 فراداده → SQL Tables روی DuckDB/PostgreSQL/...

🔁 عملیات → فقط SQL transactions ساده با DuckDB

🧠 چرا مهم است؟

در حالی که بسیاری از معماری‌های داده در مسیر «Lakehouse» پیچیدگی‌های جدیدی اضافه می‌کنند، DuckLake مسیر را به عقب برمی‌گرداند و از یک حقیقت ساده دفاع می‌کند:

وقتی که به هر حال از یک دیتابیس استفاده می‌کنیم، چرا بقیه‌ی بخش‌ها را هم در همان قالب SQL مدیریت نکنیم؟

📌 نتیجه‌گیری

استاندارد DuckLake نه فقط یک فرمت جدید، بلکه بازاندیشی دوباره‌ای است در طراحی Lakehouse — مبتنی بر اصل «سادگی، مقیاس‌پذیری، سرعت». اگر به دنبال آینده‌ای پایدارتر، قابل نگهداری‌تر و بدون vendor lock-in برای lakehouse هستید، DuckLake را جدی بگیرید.

📎 مطالعه‌ی کامل مقاله: https://duckdb.org/2025/05/27/ducklake.html

#DuckDB #DuckLake #DataEngineering #Lakehouse #OpenFormats #SQL #Parquet #PostgreSQL
4👍1👌1
معرفی Supabase: فراتر از یک پایگاه داده؛ جعبه‌ابزاری کامل برای توسعه اپلیکیشن‌ها

در یکی دو سال اخیر، نام Supabase بارها به گوشم خورده بود.

در ابتدا تصور می‌کردم با یک سرویس آنلاین برای میزبانی #PostgreSQL طرف هستیم؛ یک دیتابیس ساده و کاربردی برای مدیریت داده.

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

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


📦 همین جامع‌بودن و سادگی استفاده، مخصوصاً برای تیم‌های کوچک یا استارتاپ‌هایی که در حال تبدیل ایده به محصول هستند، باعث شد تصمیم بگیرم تجربه‌ام را از کشف این ابزار و همچنین داستان شکل‌گیری آن، با شما به اشتراک بگذارم—به‌ویژه حالا که #Supabase با جذب ۲۰۰ میلیون دلار سرمایه در آوریل ۲۰۲۵، به ارزش‌گذاری ۲ میلیارد دلاری رسیده است.



💡 نقطه شروع: وقتی یک ایده جذاب دارید...

فرض کنید یک ایده خلاقانه برای اپلیکیشن در ذهن دارید.

با کمک ابزارهای طراحی یا همکاری با یک توسعه‌دهنده فرانت‌اند، رابط کاربری را به‌سرعت می‌سازید.

اما به‌محض اینکه به بخش بک‌اند می‌رسید، چالش‌های واقعی آغاز می‌شوند:


🚫 طراحی دیتابیس، نوشتن APIها، پیاده‌سازی احراز هویت، مدیریت فایل‌ها و...

⚙️ در این شرایط، #Supabase مانند یک راه‌حل آماده و قابل‌اعتماد و سریع وارد میدان می‌شود.

اصلا شعار این پلتفرم هم همین است : «در یک آخر هفته بساز؛ برای میلیون‌ها کاربر آماده شو.»



🧬 سوپابیس چگونه متولد شد؟

سوپابیس در سال ۲۰۲۰ توسط Paul Copplestone و Ant Wilson تأسیس شد؛

دو توسعه‌دهنده که از ساخت مکرر بک‌اندهای تکراری و زمان‌بر خسته شده بودند.

🔥 در آن زمان Firebase محصول مطرحی بود، اما به دلیل ساختار بسته‌اش، گزینه جذابی برای جامعه متن‌باز محسوب نمی‌شد.

🔓 ایده Supabase: نسخه‌ای متن‌باز از Firebase، با تکیه بر قدرت PostgreSQL 💪



🛠 چه امکاناتی Supabase را متمایز می‌کند؟


Supabase یک جعبه‌ابزار کامل برای توسعه‌ی بک‌اند است، شامل:

پستگرس قدرتمند (با JSONB، جست‌وجوی متنی و اکستنشن‌ها)

داشتن APIهای خودکار (REST و GraphQL)

سیستم احراز هویت یکپارچه (ورود با Google، GitHub و...)

فضای ذخیره‌سازی فایل امن و مقیاس‌پذیر

پشتیبانی از داده‌های بلادرنگ (Realtime)

رابط گرافیکی برای مدیریت داده‌ها

توابع لبه Edge Functions و replication در مقیاس جهانی

کاملاً متن‌باز و قابل‌نصب روی هر سروری



🌍 چرا Supabase تا این حد محبوب شده است؟

📊 بیش از ۲ میلیون توسعه‌دهنده در حال استفاده

📦 بیش از ۳.۵ میلیون دیتابیس فعال

🏢 استفاده توسط شرکت‌هایی مثل Mozilla، GitHub، OpenAI



دلایل محبوبیت:

⚡️ راه‌اندازی سریع

🌱 جامعه بزرگ متن‌باز (۸۰K+ ستاره در GitHub)

🧠 سازگاری با نیازهای AI و داده‌های برداری

💸 حمایت سرمایه‌گذاران معتبر (Y Combinator, Accel و...)



🤖 سوپابیس و آینده هوش مصنوعی

سوپابیس در حال آماده‌سازی زیرساختی مناسب برای نسل بعدی اپلیکیشن‌های AI است:

🧠 توابع لبه - Edge Functions

🕒 زمان‌بندی با Cron

🧭 جست‌وجوی برداری


🧩 سخن آخر : قدرت متن‌باز در برابر غول‌ها

💥 رسیدن به ارزش ۲ میلیارد دلاری فقط در چند سال نشان می‌دهد که قدرت جامعه و ابزارهای بازمتن در حال شکل‌دادن به آینده توسعه بک‌اند هستند.

مخزن کد پروژه : https://lnkd.in/gpdbXFWv
👍2
The Story of Supabase (1).pdf
476 KB
مرتبط با پست بالا 👆👆👆
چگونه با ClickHouse زیرساخت کمپین بازاریابی شخصی‌سازی‌شده اسنپ! مارکت را طراحی کردیم؟ 🎯

این مقاله ترجمه ای است از :

https://medium.com/@prmbas/clickhouse-in-the-wild-an-odyssey-through-our-data-driven-marketing-campaign-in-q-commerce-93c2a2404a39

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

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

📦 کمپین سوپرسنج: شخصیت خرید شما چیست؟

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

اجزای اصلی کمپین:

🧑‍💼 پروفایل شخصی: آمارهایی مثل تاریخ اولین سفارش، مجموع کوپن‌های استفاده‌شده و مسافت طی‌شده توسط پیک‌ها

🧠 تست شخصیت خرید: تخصیص تیپ‌های شخصیتی بر اساس رفتار خرید (مثلاً «تنقلاتی راحت‌طلب» یا «قهوه‌دوست اقتصادی»)

🤖 محتوای طنز با هوش مصنوعی: تولید دیالوگ و داستان کوتاه بر اساس داده‌های مشتری، با استفاده از LLMها


🔧 ساختار فنی: معماری چندلایه پردازش داده

برای پشتیبانی از چنین تجربه‌ای، ما لایه‌های مختلفی از پردازش داده را در نظر گرفتیم:

🟫 لایه برنز : داده‌های خام شامل سفارش‌ها، اطلاعات کاربران، و متادیتاهای مربوط به محصولات در بازه‌ای چهارساله

🟪 لایه نقره: پردازش‌های تحلیلی میانی با استفاده از SQL و Python، ذخیره‌شده به‌شکل فایل‌های Parquet

🟨 لایه طلا : خروجی نهایی شامل برچسب‌های شخصیتی، آمار اختصاصی، و JSONهایی که به مدل‌های زبانی برای تولید متن تزریق می‌شد

⚠️ چالش فنی: جوین‌های سنگین و مصرف بالای حافظه

در مراحل اولیه، از الگوریتم پیش‌فرض Join در ClickHouse استفاده کردیم. اما با رشد داده‌ها و افزایش پیچیدگی کوئری‌ها، مصرف حافظه سر به فلک کشید و در مواردی منجر به کرش شد.

برای حل این مشکل، با بررسی دقیق مستندات ClickHouse و رفتارهای کوئری، به الگوریتم partial_merge مهاجرت کردیم.

‍‍‍-- changing join algorithm in the current CLI session
SET join_algortim = 'partial_merge';

-- data easlity stored in a parquet file
-- default path: /var/lib/clickhouse/user_files
INSERT INTO FUNCTION file('temp_data.parquet', Parquet)
SELECT *
FROM [db1].[table1] AS t1
LEFT JOIN [db2].[table2] AS t2 ON t1.[column1] = t2.[column2];


نتیجه:

💥پایداری بیشتر در کوئری‌های سنگین

💥کاهش چشمگیر استفاده از RAM

💥حذف نیاز به ایجاد جداول staging برای ترکیب داده‌ها


🚀 قابلیت‌های ویژه ClickHouse که بهره‌برداری کردیم:

🌱 خواندن مستقیم فایل‌های Parquet از مسیرهای محلی و شبکه‌ای

🌱 توابع تحلیلی سطح بالا مانند argMax, groupArray, corr, toStartOfInterval

🌱 پشتیبانی بومی از JSON و آرایه‌ها برای ذخیره داده‌های ساخت‌یافته در فرمت نیمه‌ساخت‌یافته

🌱 اتصال Real-time به داشبورد Grafana برای مشاهده نتایج و رفتار کمپین در زمان اجرا

📈 نتیجه نهایی


کمپین سوپرسنج با مشارکت بیش از ۱۰۰ هزار کاربر در مدتی کوتاه، به‌عنوان یکی از موفق‌ترین کمپین‌های داده‌محور در صنعت تجارت الکترونیک ایران شناخته شد. این موفقیت تنها به دلیل طراحی خلاقانه و محتوای طنز نبود؛ بلکه به لطف یک زیرساخت داده‌ای دقیق، سریع، و بومی‌سازی‌شده به دست آمد — زیرساختی که علی‌رغم نبود زیرساخت‌های ابری بین‌المللی، بر پایه ابزارهای متن‌باز مانند ClickHouse توسعه یافت و در مقیاس وسیع به‌کار گرفته شد.
2👍1
اگر #SQLite با فضای ابری ترکیب می‌شد چه می‌شد؟

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

خب طبیعتاً در مراحل اولیه، هیچ‌کس نمی‌خواهد دردسر راه‌اندازی پایگاه داده سنگین مثل PostgreSQL، MongoDB یا مدیریت یک REST API کامل را به جان بخرد. ترجیح می‌دهید همه‌چیز ساده باشد؛ دقیقاً مثل تجربه کار با #SQLite: یک فایل دیتابیس کنار برنامه، بدون نیاز به سرور، بدون کانفیگ پیچیده.

اما یک مشکل هست: اگر بخواهید چند برنامه (مثل یک crawler، یک سرویس API ساده، و یک رابط کاربری React) همزمان از همان دیتابیس استفاده کنند، دیگر فایل لوکال #SQLite کافی نیست. چون این فایل فقط در یک جاست — روی دیسک محلی. پس یا باید سرور راه بیندازید، یا دنبال راهی باشید که این فایل دیتابیس لوکال، روی فضای ابری باشد و همه‌ اپ‌ها انگار از همان فایل مشترک می‌خوانند.

🎯 اینجاست که #SlateDB وارد می‌شود.

📦 دیتابیس #SlateDB: دیتابیس تعبیه‌شده بدون دیسک، نوشته‌شده با Rust . این دیتابیس مثل SQLite ساده و سبک است، اما با یک تفاوت مهم:

📂 به جای نوشتن روی دیسک، همه‌چیز مستقیماً روی فضای ابری مثل Amazon S3 یا سرویس‌های داخلی مثل پارس‌پک، آروان‌کلاد یا ستون ذخیره می‌شود.

💡 یعنی برنامه شما همچنان مثل SQLite ساده و سریع است، ولی انگار همه‌ اپ‌ها به یک دیتابیس مشترک روی ابر وصل‌اند.

🔍 برگردیم به مثال: تحلیل قیمت گوشی‌ها در بازار ایران - با SlateDB:

نیازی به پایگاه‌داده مرکزی ندارید.

کراولر فقط داده‌ها را در #SlateDB ذخیره می‌کند.

همه اپ‌ها همزمان از همان #SlateDB - یعنی همان فضای استوریج، داده‌ها را می‌خوانند.

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

بدون نیاز به تعریف API پیچیده یا سرور مرکزی.


🚀 چرا SlateDB انتخاب خوبی است؟

سادگی: مثل SQLite، می‌توانید آن را مستقیماً داخل برنامه (embed) کنید.

📦 مقیاس‌پذیری: با تکیه بر #ObjectStorage، نیاز به شارد یا ریپلیکیشن ندارید؛ خود فضا مقیاس‌پذیر است.

🧩 بدون نیاز به سرور: دیگر لازم نیست دیتابیس جداگانه راه‌اندازی و مدیریت کنید.

👥 پشتیبانی از خوانندگان متعدد: چند اپ یا سرویس می‌توانند همزمان بدون مشکل داده‌ها را بخوانند.


💡 معماری بدون دیسک: آینده دیتابیس‌های سبک و ابری


در الگوی #ZeroDiskArchitecture، برنامه‌ها دیگر نیازی به دیسک محلی ندارند و مستقیماً داده‌ها را روی فضاهای ابری مانند S3 می‌نویسند. این رویکرد با حذف پیچیدگی سرورها، راهی ساده، مقیاس‌پذیر و مقرون‌به‌صرفه برای ساخت اپ‌های serverless، edge-based، و مخصوصاً crawlerهای توزیع‌شده و IoT ارائه می‌دهد.


🎯 دیتابیس#SlateDB نمونه‌ای عملی از این ترند است — دیتابیسی سبک و بدون سرور که مانند SQLite در برنامه embed می‌شود، اما داده‌ها را روی فضای ابری نگه می‌دارد.

⚠️ محدودیت‌های SlateDB

🖊 تک‌نویسنده: فقط یک نویسنده همزمان مجاز است؛ برای نوشتارهای موازی، باید از صف پیام یا پارتیشن‌بندی استفاده شود.

🐢 تأخیر نوشتن: latency نوشتن به دلیل استفاده از Object Storage بین ۵۰ تا ۱۰۰ میلی‌ثانیه است.

🔒 نبود تراکنش (فعلاً): قابلیت‌هایی مثل snapshot isolation هنوز در حال توسعه هستند.
👍4
پستگرس در عصر هوش مصنوعی: از انتخاب استارتاپ‌ها تا تمرکز غول‌های فناوری


در نیمه اول ۲۰۲۵، #PostgreSQL بار دیگر نشان داد که فقط یک پایگاه‌داده نیست؛ بلکه قلب تپنده‌ی تحول در زیرساخت‌های داده و هوش مصنوعی است. خبرهای مهم، سرمایه‌گذاری‌های سنگین، و توسعه سریع اکوسیستمش، گویای یک واقعیت جدید هستند:

🧠 #پستگرس حالا یکی از بازیگران اصلی در عصر AI است.




🔹 📣 خبر داغ: #Snowflake + Crunchy Data = Snowflake Postgres

در کنفرانس Snowflake Summit 2025 اعلام شد:


💼 غول دنیای انباره‌های داده ابری یعنی Snowflake شرکت Crunchy Data رو با ارزش ۲۵۰ میلیون دلار خرید.

🎯 هدف: توسعه یک نسخه سازمانی و تقویت‌شده از #PostgreSQL با تمرکز روی نیازهای AI و بارهای کاری حساس.

این خرید نشان‌دهنده تغییری بزرگ در استراتژی #Snowflake است؛ شرکتی که تا امروز بیشتر با انبار داده اختصاصی‌اش شناخته می‌شد.

🔹 سرمایه‌گذاری‌های بزرگ دیگر:

💰 شرکت #Databricks، یکی از بازیگران اصلی حوزه #Lakehouse، استارتاپ #Neon رو با حدود ۱ میلیارد دلار خرید.

🌱 ابزار محبوب #Supabase، محبوب‌ترین پلتفرم متن‌باز #PostgreSQL، در سری D مبلغ ۲۰۰ میلیون دلار جذب کرد (ارزش‌گذاری: ۲ میلیارد دلار).

📌 این‌ها نشون می‌دهند که #PostgreSQL از یک دیتابیس محبوب برای پروژه‌های کوچک، به زیرساخت اصلی پلتفرم‌های داده نسل بعدی تبدیل شده.


🔹 چرا PostgreSQL این‌قدر مهم شده؟

انعطاف‌پذیر و چندمنظوره: از SQL استاندارد تا JSON و جستجوی متنی

قابل توسعه: اکستنشن‌هایی مثل pgvector برای داده‌های برداری (AI/LLM)

مقیاس‌پذیر: ابزارهایی مثل Citus و TimescaleDBبرای بارهای سنگین

امن و متن‌باز: بدون vendor lock-in، با اکوسیستم غنی


📈 در دو سال اخیر:


🔹چندین افزونه برای جستجوی برداری

🔹ابزارهای اتصال PostgreSQL به LLMها

🔹و حتی ساخت لِیک‌هوس با PostgreSQL

منتشر شده‌اند. این یعنی PostgreSQL آماده‌ی دنیای AI-first است.

اما یک نکته مهم دیگر وجود دارد :

🔹 از MVP تا Enterprise: مسیری طبیعی برای استارتاپ‌ها

بیشتر استارتاپ‌ها با PostgreSQL شروع می‌کنن چون:

👶 سریع، ساده، بدون هزینه لایسنس

🧪 ابزارهای کامل توسعه و تست

📚 مستندات و جامعه فعال

اما با رشد محصول و پیچیده‌تر شدن نیازها، معمولاً به نسخه‌های Managed و Enterprise مهاجرت می‌کنن:


☁️ Azure Database for PostgreSQL

🧱 Crunchy Bridge

🏢 EDB Postgres Advanced

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

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

🎯 جمع‌بندی:

پستگرس حالا دیگر فقط "پایگاه‌داده موردعلاقه دولوپرها" نیست. بلکه تبدیل شده به زبان مشترک زیرساخت‌های داده در عصر AI — از گاراژ استارتاپ‌ها تا دیتاسنتر غول‌ها.

#PostgreSQL #AI #DataInfra #DataEngineering #pgvector #StartupTools #EnterpriseTech #Snowflake #Databricks #Supabase #OpenSource #PostgresAI #DatabaseTrends #Lakehouse #MLOps
👍6
مهندسی داده
Uber Data Infra.pdf
معماری داده شرکت اوبر
ساخت ETL با SQL؛ ساده، سریع و بدون وابستگی به زیرساخت سنگین

در دنیای مهندسی داده، ساخت یک فرآیند ETL معمولاً نیازمند زیرساخت‌هایی پیچیده، ابزارهایی سنگین و دانش فنی نسبتاً بالا بود. اما اکنون، با ظهور ابزارهای سبک و ماژولار مانند DuckDB، می‌توان همین فرآیند را با چند خط SQL ساده انجام داد؛ بدون نیاز به نصب پلتفرم‌های حجیم یا نوشتن کدهای پیچیده.

🎬 فرض کنیم با داده‌های جریانی سروکار دارید
کافکا یکی از متداول‌ترین ابزارها برای مدیریت داده‌های جریانی (streaming data) است. معمولاً برای خواندن این داده‌ها و انجام پردازش، به ابزارهایی مانند Apache Flink، Spark Streaming یا سیستم‌های مدیریت جریان نیاز داریم.

اما حالا با افزونه‌ای به نام Tributary برای DuckDB، می‌توان مستقیماً از Kafka داده‌ها را خواند، پردازش کرد و به مقصد موردنظر نوشت – تماماً با SQL.


🧩 افزونه Tributary چه کاری انجام می‌دهد؟
افزونه Tributary یک افزونه رسمی برای DuckDB است که امکان اتصال مستقیم به Kafka را فراهم می‌کند. این افزونه با تابع tributary_scan_topic پیام‌های Kafka را به‌صورت یک جدول قابل خواندن در اختیار شما می‌گذارد:

SELECT * FROM tributary_scan_topic('clicks_topic', "bootstrap.servers" := 'localhost:9092');

در اینجا، داده‌های Kafka به‌صورت real-time به DuckDB وارد می‌شوند و آماده تحلیل، فیلتر یا انتقال به سیستم‌های دیگر هستند.

🧩 اما خود DuckDB چیست؟
در دنیای مهندسی داده و تحلیل، ابزارهای سبک و مستقل نقش پررنگ‌تری پیدا کرده‌اند. یکی از مهم‌ترین این ابزارها، DuckDB است٫ یک پایگاه داده تحلیلی درون‌فرایندی (in-process analytical database) که می‌توان آن را مشابه SQLite اما مخصوص تحلیل‌های ستونی و پیچیده دانست.

در حالی‌که SQLite برای تراکنش‌های کوچک در موبایل و نرم‌افزارهای تعبیه‌شده طراحی شده، DuckDB برای تحلیل‌های ستونی، پردازش سریع فایل‌های Parquet و اجرای کوئری‌های تحلیلی سنگین ساخته شده است — آن هم بدون نیاز به سرور یا نصب پیچیده..

💡 کاربردهای عملی این رویکرد چیست؟

تحلیل سریع روی پیام‌های Kafka بدون نیاز به سیستم‌های تحلیلی سنگین.

ساخت pipelineهای سبک ETL با استفاده از SQL.

انتقال داده‌ها از Kafka به فایل‌های Parquet، PostgreSQL، یا حتی ارسال مجدد به Kafka (با افزونه‌های مکمل مانند duckdb_kafka_sink).

⚙️ نحوه استفاده و راه‌اندازی
نصب و راه‌اندازی Tributary در DuckDB بسیار ساده است:

INSTALL tributary FROM community;
LOAD tributary;


سپس تنها با چند خط SQL، به Kafka متصل می‌شوید و داده‌های جریانی را پردازش می‌کنید.

🚀 یک گام به سوی آینده‌ی ساده‌تر در مهندسی داده
ابزارهایی مانند DuckDB به همراه افزونه‌هایی مانند Tributary، نمایانگر جهتی هستند که دنیای داده به آن حرکت می‌کند: سادگی، ماژولار بودن، و استفاده حداکثری از زبان استاندارد SQL.

دیگر لازم نیست برای پیاده‌سازی یک ETL ساده، سیستم‌های بزرگ و پیچیده مستقر شود. گاهی یک فایل SQL کافی‌ست.

در صورتی که علاقه‌مند به ساخت ETL سبک‌وزن با SQL هستید یا به دنبال راه‌حلی ساده برای تحلیل جریان داده‌ها در Kafka می‌گردید، پیشنهاد می‌کنم حتماً نگاهی به افزونه Tributary بیندازید.

https://query.farm/duckdb_extension_tributary.html
پ.ن. عکس و ایده اصلی پست از مطلب زیر در لینکدین گرفته شده است:
https://www.linkedin.com/posts/rusty-conover_kafka-duckdb-streamingdata-activity-7339109125852676096-3QWs
استک داده‌های مدرن: راهکاری برای آینده یا زباله‌دانی پرزرق‌وبرق؟🔥

📌 این پست ترجمه و تلخیص‌شده‌ای است از مقاله‌ای در Medium به قلم Timo de Vos

📄 لینک مقاله اصلی: The Modern Data Stack Is a Dumpster Fire

https://medium.com/@tfmv/the-modern-data-stack-is-a-dumpster-fire-b1aa81316d94

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

اما سؤال اساسی که بسیاری از سازمان‌ها در میانه راه با آن مواجه می‌شوند این است:

آیا کسب‌وکار ما واقعاً به این سطح از پیچیدگی نیاز دارد؟


⚠️ چالش‌های پنهان در استک‌های به‌ظاهر مدرن

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

❗️ هزینه‌های عملیاتی پیش‌بینی‌نشده به همراه دارند (مثل صورت‌حساب‌های ابری چند ده هزار دلاری)

❗️ زمان راه‌اندازی و نگهداری بالا دارند (افزودن یک منبع داده = هفته‌ها هماهنگی)

❗️ اتکای بیش‌ازحد به ابزارهای AI باعث بروز خطاهای غیرقابل ردیابی می‌شود (مثلاً Copilotهایی که پیشنهادهای اشتباه JOIN می‌دهند)

📉 یک مثال واقعی: تیمی «مدرن» که برای ساخت سه داشبورد ساده، بالغ بر ۴۰۰,۰۰۰ دلار هزینه کرد؛ در حالی‌که رقیب‌شان، با DuckDB و یک اسکریپت پایتون ساده، در کمتر از یک روز همان نتایج را به‌دست آورد.



رویکرد ساده و مؤثر Watershed

شرکت Watershed، ارائه‌دهنده پلتفرم داده‌ برای ارزیابی و مدیریت پایداری سازمانی، یک مثال موفق از حرکت خلاف جریان است.

ویژگی‌های معماری داده Watershed:

🟢 استفاده از ادغام‌های ساده و آماده با سیستم‌های رایج مانند Salesforce، NetSuite و...

🟢 پردازش داده‌ها با ابزارهای سبک و محلی‌محور مانند DuckDB و Polars

🟢 حذف کامل نیاز به پایگاه داده‌های عظیم یا پایپلاین‌های پیچیده

🟢 تحویل گزارش‌های حسابرسی‌پذیر سریع و دقیق به مشتریان بزرگ مانند Airbnb، Spotify و Visa

نتیجه؟ کاهش هزینه‌ها، افزایش شفافیت، و حفظ کنترل کامل بر داده‌ها.


🧭 راهکارهایی برای طراحی استک داده ساده، مؤثر و پایدار

بر اساس تجربیات واقعی مانند Watershed و تحلیل دقیق مقاله، مسیر موفقیت در ساده‌سازی معماری داده شامل موارد زیر است:

1️⃣ سادگی ساختاری


معماری باید به‌قدری ساده باشد که در کمتر از یک ساعت برای عضو جدید تیم قابل توضیح باشد.

2️⃣ پیچیدگی بر اساس نیاز


بیشتر سازمان‌ها داده‌های «واقعاً بزرگ» ندارند. پردازش صدها میلیون ردیف داده، روی یک لپ‌تاپ مدرن با DuckDB یا Polars کاملاً امکان‌پذیر است.

3️⃣ مهاجرت تدریجی و کم‌هزینه

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

4️⃣ استفاده کنترل‌شده از هوش مصنوعی

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

5️⃣ حذف ابزارهای بدون ارزش واقعی

اگر ابزاری ارزش افزوده ملموس ندارد، کنار گذاشته شود. سادگی = بهره‌وری بیشتر.

نتیجه‌گیری

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

🔹 گاهی یک اسکریپت ساده در Python به همراه DuckDB روی لپ‌تاپ، کارآمدتر از یک کلاستر پیچیده و پرهزینه عمل می‌کند.

🔹 آینده معماری داده، در سادگی، شفافیت و سرعت پاسخ‌گویی به نیاز کسب‌وکار نهفته است.
1
https://x.com/hejazizo/status/1939250468699423088?t=mnyhQdoIOgTowag3fhwz-g&s=19
آقا بهترین کورس ماشین‌لرنینگی که میشد رو دارم کامل آپلود می‌کنم روی یوتیوب. اینقدر این دوره کامل و ترکیبی از تئوری و مباحث practical شد خودم خیلی کیف کردم. خلاصه که اگه می‌خواین یاد بگیرین همه چیز رو توی این دوره گفتم
7
کافکا رفت و انقلاب شد! در ویدئو جدید درباره Kafka Raft صحبت میکنیم تا باهم ببینیم کافکا چطوری به این تحمل خطای بالا رسیده است.
اگر دوست دارین بدونید KRaft چطوری کار میکنه این ویدئو ببینید 💣

00:55 مروری بر Raft
11:50 نقش Zookeeper چیست؟
18:08 در کافکا Control Plan و Data Plan چیست؟
19:45 بررسی چند سناریو failover در zookeeper
26:38 بهبود های Raft در Kafka
32:30 ساختار متفاوت KRaft به نسبت Raft
36:30 سناریو failover در KRaft
46:10 رشد دیتا در کافکا بینهایت است؟

لینک ویدئو: https://lnkd.in/e_zcfRc5
پلی لیست: Kafka Like a Pro (https://lnkd.in/e9KghDuD)
مدت ویدئو: 48 دقیقه
https://www.youtube.com/watch?v=ZT2V4d4lxAo&ab_channel=CodeWithHSN
👍31
آینده مهندسی داده از نگاه نتفلیکس، Airbnb و Databricks 🚀

📌 اوایل خرداد، نتفلیکس در رویداد سالانه‌ی خود یعنی Data Engineering Open Forum 2025، پنلی جذاب با عنوان «آینده مهندسی داده» برگزار کرد که در آن سه متخصص از غول‌های فناوری دیدگاه‌های‌شان را درباره آینده این حوزه به اشتراک گذاشتند.

🔸 Tikica (مدیر پنل – مهندس ارشد نتفلیکس)

🔸 Ryan Blue (هم‌بنیان‌گذار Databricks و سازنده Iceberg)

🔸 Jerry (مهندس ارشد Airbnb)

🔸 Ena (مهندس داده در نتفلیکس)

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

🎥 ویدئوی ۲۰ دقیقه‌ای این پنل: https://www.youtube.com/watch?v=VVWjdsuNrwE&ab_channel=NetflixEngineering

🔮 ۱. هوش‌مصنوعی؛ دستیار قدرتمند، نه تهدید

💬 برخلاف تصور رایج، #GenAI شغل مهندس داده را تهدید نمی‌کند، بلکه ابزار توانمندی برای کمک در کارهای پیچیده و تکراری‌ست:

بازنویسی کوئری و کمک در مهاجرت

بهبود مستندسازی و تسهیل پلتفرم

تمرکز بیشتر بر حل مسائل کسب‌وکار

ارتقاء کیفیت کد

🔍 اما این تحولات، نیاز به داده‌ی باکیفیت، مستند و شفاف را دوچندان می‌کند.

⚠️۲. چالش‌های فعلی در #مهندسی_داده

مهندسی داده دیگر فقط ساختن چند جدول و اجرای ETL نیست.

با رشد داده‌ها، ابزارها و انتظارات، چالش‌ها هم رشد کرده‌اند:

🚨 بررسی مشکلات کیفی در داده‌هایی که وارد مدل‌های LLM می‌شوند بسیار سخت‌تر است. برخلاف داشبورد یا A/B تست‌ها، این مدل‌ها شفاف نیستند.

🌐 اتصال بین انباره‌های داده آفلاین، آنلاین و اپلیکیشن‌های واقعی محصول‌محور، باعث شده دیتاپایپ‌لاین‌ها بسیار پیچیده‌تر شوند.

🛡 نگرانی‌های جدیدی درباره‌ی حریم خصوصی، لو رفتن اطلاعات حساس و نحوه‌ی کنترل داده‌های تولیدشده توسط LLMها شکل گرفته است.

🎥 مهاجرت به داده‌های چندرسانه‌ای (متن، تصویر، ویدیو) نیاز به مهارت و ابزارهایی دارد که خیلی از ما هنوز با آنها آشنا نیستیم.


🧠 ۳. مهارت‌های کلیدی برای آینده

پنلیست‌ها تاکید کردند که مسیر موفقیت همچنان از «پایه‌های مهندسی قوی» می‌گذرد:

📌 مدل‌سازی دقیق داده

📌 درک ساختارها

📌 تعهد به کیفیت


اما برای آینده، باید مهارت‌های زیر را نیز توسعه داد:

🔹 پردازش real-time و event-driven

🔹 آشنایی با جستجوی معنایی و vector DBها

🔹 توانایی پردازش داده‌های multimodal

🔹 یادگیری ابزارهای مدرن مانند
#DBT، #DuckDB، #PyIceberg و...


🧭 ۴. تشخیص ابزار مفید از ترندهای هیجانی

چطور بین ابزارهای واقعی و ترندهای زودگذر فرق بگذاریم؟

پنل نکات خوبی درباره‌ی انتخاب تکنولوژی مناسب داشت:

آیا این ابزار واقعاً کار ما را ساده‌تر می‌کند؟

فقط نحوه‌ی استفاده‌اش را بلدم یا می‌دانم چرا و چطور کار می‌کند؟

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

آیا به نیاز واقعی بیزینس پاسخ می‌دهد؟


📌 جمع‌بندی:

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

اگر هوشمند انتخاب کنیم و یاد بگیریم، GenAI حامی ماست، نه جایگزین ما.


#مهندسی_داده #GenAI #LLM #DataEngineering #Netflix #Airbnb #Databricks #DataQuality #AItools #OpenSource #TechTrends #آینده_شغلی
👍52