آیا دوران دیتابیسهای خودتولیدشونده رسیده است؟
نگاهی به خرید Neon توسط Databricks و شروع عصر جدید معماریهای AI-first
چند روز پیش خبری منتشر شد که در ظاهر، فقط یکی دیگر از خریدهای میلیاردی دنیای دیتا بود:
شرکت Databricks شرکت Neon را خرید.
منبع : https://www.databricks.com/blog/databricks-neon
اما پشت این خبر، نشانههایی از یک تحول بنیادی در دنیای پایگاه داده و زیرساخت دادهای نهفته است:
🧠 تحول از چتباتها به ایجنتهای زیرساختساز
در چند سال اخیر، تمرکز اصلی اکوسیستم هوش مصنوعی بر تولید متن، تصویر یا کد بوده؛ اما حالا با رشد ایجنتهای هوشمند (AI Agents)، با نسل جدیدی از ابزارها روبهرو هستیم:
⛔️ فقط "چه چیزی را تحلیل کنیم؟"
✅ بلکه: "کجا ذخیره کنیم؟ چطور ساختار بدهیم؟ چه دیتابیسی بسازیم؟"
ایجنتها اکنون:
منطق کسبوکار را تحلیل میکنند،
ساختار دادهای را طراحی میکنند،
و در کمتر از یک ثانیه، دیتابیسی مبتنی بر PostgreSQL را بهصورت کامل میسازند.
📌 نئون چیست و چرا اینقدر مهم شد؟
نئون یک سرویس PostgreSQL کاملاً سرورلس، open-source و cloud-native است که با ویژگیهایی منحصربهفرد به محبوبیت بالایی رسید:
✅ساخت دیتابیس در کمتر از ۱ ثانیه
✅معماری تفکیکشدهی Storage/Compute
✅پشتیبانی از Branching/Forking برای دیتابیس (مثل Git)
✅مدل پرداخت بر اساس مصرف واقعی (usage-based billing)
✅کاملاً API-first و قابل استفاده در pipelineها و توسط ایجنتها
و نسبت به سرویس محبوب Supabase، زیرساخت جداگانهی Storage/Compute ارائه میدهد که آن را بهمراتب مقیاسپذیرتر و اقتصادیتر کرده است
🧠 چرا Databricks اینقدر به Neon علاقه داشت؟
دیتابریکز فقط بهدنبال یک پایگاه داده نبود — بلکه دنبال قطعهای گمشده برای زنجیرهی AI-first + Open-Source + Cloud-Native خودش بود.
📈 در ۳ سال گذشته، Databricks با خریدهای زیر این مسیر را بهوضوح ترسیم کرده:
MosaicML (۲۰۲۳) → برای مدلهای زبانی و آموزش اختصاصی (۱.۳ میلیارد دلار)
Tabular (۲۰۲۴) → برای تقویت آیسبرگ در تحلیلهای مدرن (بیش از ۱ میلیارد دلار)
Neon (۲۰۲۵) → لایهی عملیاتی و سبکوزن برای پایگاهداده (حدود ۱ میلیارد دلار)
🎯 نتیجه؟
یک معماری end-to-end برای AI که در آن:
📌 MosaicML → لایه مدل و آموزش
📌 Tabular → لایه تحلیل و ذخیرهسازی برداری (Data Lakehouse)
📌 Neon → لایه عملیات و دیتابیس سبک OLTP
و همه چیز open، قابلبرنامهریزی، و سازگار با ایجنتها
🔭 معماری آینده: Lance، Neon، و دیتابیسهایی برای ایجنتها
در این معماری نوین، جایگزینی فرمتهای قدیمی مانند Parquet با فرمتهای جدید مانند Lance برای تحلیل و ML کاملاً منطقیست:
نئون - Neon برای دادههای transaction و تنظیمات سریع ایجنتها
لنس - Lance برای ذخیره و پردازش برداری (embedding، RAG، ML training)
آیسبرگ - Delta/Iceberg برای versioning و تحلیلی سنگین
🧩 چرا این تغییر اهمیت دارد؟
چون ابزارهای آینده نهتنها باید مقیاسپذیر و سریع باشند، بلکه باید با هوش مصنوعی همصحبت شوند، ساختار بگیرند و بازطراحی شوند.
معماریهای آینده باید:
📌 مبتنی بر اصل API-first باشند
📌 برای تعامل با ایجنتها طراحی شده باشند
📌 بر پایهی open formats بنا شده باشند
📌 از مصرفکننده به معمار تغییر نقش داده شوند
برای مطالعه بیشتر :
https://www.linkedin.com/pulse/databricks-neon-deal-final-piece-ai-driven-enterprise-dmitriy-gerzon-orwic/
https://www-cnbc-com.cdn.ampproject.org/c/s/www.cnbc.com/amp/2025/05/14/databricks-is-buying-database-startup-neon-for-about-1-billion.html
https://www.linkedin.com/feed/update/urn:li:activity:7328542430599811072/
نگاهی به خرید Neon توسط Databricks و شروع عصر جدید معماریهای AI-first
چند روز پیش خبری منتشر شد که در ظاهر، فقط یکی دیگر از خریدهای میلیاردی دنیای دیتا بود:
شرکت Databricks شرکت Neon را خرید.
منبع : https://www.databricks.com/blog/databricks-neon
اما پشت این خبر، نشانههایی از یک تحول بنیادی در دنیای پایگاه داده و زیرساخت دادهای نهفته است:
بیش از ۸۰٪ از دیتابیسهای ساختهشده در Neon توسط ایجنتهای AI ساخته شدهاند، نه انسانها!
🧠 تحول از چتباتها به ایجنتهای زیرساختساز
در چند سال اخیر، تمرکز اصلی اکوسیستم هوش مصنوعی بر تولید متن، تصویر یا کد بوده؛ اما حالا با رشد ایجنتهای هوشمند (AI Agents)، با نسل جدیدی از ابزارها روبهرو هستیم:
⛔️ فقط "چه چیزی را تحلیل کنیم؟"
✅ بلکه: "کجا ذخیره کنیم؟ چطور ساختار بدهیم؟ چه دیتابیسی بسازیم؟"
ایجنتها اکنون:
منطق کسبوکار را تحلیل میکنند،
ساختار دادهای را طراحی میکنند،
و در کمتر از یک ثانیه، دیتابیسی مبتنی بر PostgreSQL را بهصورت کامل میسازند.
📌 نئون چیست و چرا اینقدر مهم شد؟
نئون یک سرویس PostgreSQL کاملاً سرورلس، open-source و cloud-native است که با ویژگیهایی منحصربهفرد به محبوبیت بالایی رسید:
✅ساخت دیتابیس در کمتر از ۱ ثانیه
✅معماری تفکیکشدهی Storage/Compute
✅پشتیبانی از Branching/Forking برای دیتابیس (مثل Git)
✅مدل پرداخت بر اساس مصرف واقعی (usage-based billing)
✅کاملاً API-first و قابل استفاده در pipelineها و توسط ایجنتها
و نسبت به سرویس محبوب Supabase، زیرساخت جداگانهی Storage/Compute ارائه میدهد که آن را بهمراتب مقیاسپذیرتر و اقتصادیتر کرده است
🧠 چرا Databricks اینقدر به Neon علاقه داشت؟
دیتابریکز فقط بهدنبال یک پایگاه داده نبود — بلکه دنبال قطعهای گمشده برای زنجیرهی AI-first + Open-Source + Cloud-Native خودش بود.
📈 در ۳ سال گذشته، Databricks با خریدهای زیر این مسیر را بهوضوح ترسیم کرده:
MosaicML (۲۰۲۳) → برای مدلهای زبانی و آموزش اختصاصی (۱.۳ میلیارد دلار)
Tabular (۲۰۲۴) → برای تقویت آیسبرگ در تحلیلهای مدرن (بیش از ۱ میلیارد دلار)
Neon (۲۰۲۵) → لایهی عملیاتی و سبکوزن برای پایگاهداده (حدود ۱ میلیارد دلار)
🎯 نتیجه؟
یک معماری end-to-end برای AI که در آن:
📌 MosaicML → لایه مدل و آموزش
📌 Tabular → لایه تحلیل و ذخیرهسازی برداری (Data Lakehouse)
📌 Neon → لایه عملیات و دیتابیس سبک OLTP
و همه چیز open، قابلبرنامهریزی، و سازگار با ایجنتها
🔭 معماری آینده: Lance، Neon، و دیتابیسهایی برای ایجنتها
در این معماری نوین، جایگزینی فرمتهای قدیمی مانند Parquet با فرمتهای جدید مانند Lance برای تحلیل و ML کاملاً منطقیست:
نئون - Neon برای دادههای transaction و تنظیمات سریع ایجنتها
لنس - Lance برای ذخیره و پردازش برداری (embedding، RAG، ML training)
آیسبرگ - Delta/Iceberg برای versioning و تحلیلی سنگین
🧩 چرا این تغییر اهمیت دارد؟
چون ابزارهای آینده نهتنها باید مقیاسپذیر و سریع باشند، بلکه باید با هوش مصنوعی همصحبت شوند، ساختار بگیرند و بازطراحی شوند.
معماریهای آینده باید:
📌 مبتنی بر اصل API-first باشند
📌 برای تعامل با ایجنتها طراحی شده باشند
📌 بر پایهی open formats بنا شده باشند
📌 از مصرفکننده به معمار تغییر نقش داده شوند
برای مطالعه بیشتر :
https://www.linkedin.com/pulse/databricks-neon-deal-final-piece-ai-driven-enterprise-dmitriy-gerzon-orwic/
https://www-cnbc-com.cdn.ampproject.org/c/s/www.cnbc.com/amp/2025/05/14/databricks-is-buying-database-startup-neon-for-about-1-billion.html
https://www.linkedin.com/feed/update/urn:li:activity:7328542430599811072/
👍5
با توجه به رواج و محبوبیت کافکا در میان اکثر سیستمهای اطلاعاتی نوین و ضرورت آشنایی عمیقتر با این سامانه توزیع پیام قدرتمند، تصمیم به ترجمه مقاله If you’re learning Kafka, this article is for you گرفتیم و تمامی عکس ها هم از این مقاله برگرفته شده است.
آدرس مقاله :
https://vutr.substack.com/p/if-youre-learning-kafka-this-article
ترجمه آن در وب سایت مهندسی داده :
https://www.bigdata.ir/1404/02/%d9%86%da%af%d8%a7%d9%87%db%8c-%d8%a7%d8%b2-%d9%86%d8%b2%d8%af%db%8c%da%a9-%d8%a8%d9%87-%da%a9%d8%a7%d9%81%da%a9%d8%a7/
آدرس مقاله :
https://vutr.substack.com/p/if-youre-learning-kafka-this-article
ترجمه آن در وب سایت مهندسی داده :
https://www.bigdata.ir/1404/02/%d9%86%da%af%d8%a7%d9%87%db%8c-%d8%a7%d8%b2-%d9%86%d8%b2%d8%af%db%8c%da%a9-%d8%a8%d9%87-%da%a9%d8%a7%d9%81%da%a9%d8%a7/
👍4
مهندسی داده
با توجه به رواج و محبوبیت کافکا در میان اکثر سیستمهای اطلاعاتی نوین و ضرورت آشنایی عمیقتر با این سامانه توزیع پیام قدرتمند، تصمیم به ترجمه مقاله If you’re learning Kafka, this article is for you گرفتیم و تمامی عکس ها هم از این مقاله برگرفته شده است. آدرس…
Kafka Deep Dive.pdf
3.6 MB
خلاصه مقاله فوق با تمامی شکل های استفاده شده در مقاله که مفاهیم اصلی کافکا و نحوه کارکرد داخلی آنرا توضیح میدهد.
👍2👏1
پروژه آموزشی : ساخت یک سامانه پردازش جریان به کمک ردپاندا، کلیکهوس و سوپرست
اخیرا پستی از یکی از دوستان در لینکدین مشاهده کردم که وظیفه خود دانستم آنرا برای علاقه مندان به انجام پروژه های عملی و کاربردی در دنیای مهندسی داده به اشتراک بگذارم.
آدرس پست اصلی : https://lnkd.in/d6i7Eiti
این پست گزارش یک پروژه انجام شده توسط سایه حجازی Saieh Hejazi است. در چند سال گذشته، سایه با پشتکار و علاقهای ستودنی، مسیر حرفهای خود را از حوزهی هوش تجاری (BI) بهسمت مهندسی داده گسترش داده است. من در طول این مسیر شاهد یادگیریهای عمیق، پیگیریهای فنی، و تلاشهای مستمر او بودهام.
بهتازگی، سایه یکی از پروژههای مهم و واقعی خود را منتشر کرده که واقعاً برای بسیاری از علاقهمندان به یادگیری پایپلاینهای دادهای real-time، الهامبخش است:
🎯 Build a Real-Time Data Pipeline with Redpanda, ClickHouse, and Superset
پروژهای کامل، کاربردی، و مبتنی بر ابزارهای مدرن و سریع.
🔧 فلوی اصلی پروژه به این صورت است:
📁 منبع دادهها بهشکل فایلهایی (مثلاً CSV یا JSON) است که در یک فولدر مشخص قرار میگیرند و از طریق FTP Server قابل دسترسی هستند.
🛠 ابزار Redpanda Connect که یک کتابخانه قدرتمند ingestion بدون کدنویسی است، بهصورت مداوم این پوشه را مانیتور میکند. بهمحض ورود فایل جدید، آن را میخواند و محتوای آن را بهصورت یک پیام (event) وارد Redpanda میکند.
🧠 اینجا، #Redis وارد عمل میشود: با استفاده از Redis، برای هر فایل ورودی یا رکورد، یک مکانیسم #deduplication پیادهسازی شده تا از ورود چندبارهی دادهها جلوگیری شود. این کار ریسک رکوردهای تکراری را از بین میبرد و کیفیت داده را در مرحلهی ingestion تضمین میکند. این کار البته توسط خود ردپاندا کانکت انجام می شود اما تنظیمات لازم برای این منظور باید انجام شود.
🚀 دادههایی که وارد Redpanda شدهاند، بهکمک Kafka engine در ClickHouse بهصورت real-time مصرف میشوند و مستقیماً وارد یک جدول تحلیلی میگردند.
📊 در نهایت، Apache Superset به این جدول در ClickHouse# متصل است و بهصورت بلادرنگ (real-time) داشبوردهایی از این دادهها ایجاد کرده که تحلیل سریع و قابل مشاهده برای کاربر نهایی را ممکن میسازد.
🧰 ابزارهای کلیدی مورد استفاده در این پروژه عبارتند از:
👉 #Redpanda: موتور سریع و سبک استریم داده (جایگزین Kafka)
👉 Redpanda Connect (Benthos سابق): ابزار ingestion بدون کدنویسی برای ارسال/دریافت داده با حجم بالا
👉 #Redis: برای deduplication و جلوگیری از ingest دوباره رکوردها
👉 #ClickHouse: پایگاهداده ستونی برای ذخیره و تحلیل سریع دادهها
👉 Superset: داشبورد تحلیلی متنباز برای نمایش دادههای real-time
📌 تمامی کدها، کانفیگها و مستندات راهاندازی در این ریپوی گیتهاب در دسترس هستند:
https://github.com/saiehhejazi/Project_2
برای سایه عزیز آرزوی موفقیت در آغاز یک دوره نوین تخصصی در دنیای مهندسی داده دارم. مطمئنم این پروژه تنها نقطهی شروع برای دستاوردهای بزرگتر و تأثیرگذارتر در آیندهی حرفهای او خواهد بود. 🌟
پ.ن:
سایر دوستان هم اگر پروژه هایی مشابه با این را انجام داده اند که بار آموزشی برای علاقه مندان به مهندسی داده دارد، ممنون میشوم آنرا برای ادمین کانال ارسال کنید تا با سایر علاقه مندان به این حوزه هم به اشتراک گذاشته شود.
اخیرا پستی از یکی از دوستان در لینکدین مشاهده کردم که وظیفه خود دانستم آنرا برای علاقه مندان به انجام پروژه های عملی و کاربردی در دنیای مهندسی داده به اشتراک بگذارم.
آدرس پست اصلی : https://lnkd.in/d6i7Eiti
این پست گزارش یک پروژه انجام شده توسط سایه حجازی Saieh Hejazi است. در چند سال گذشته، سایه با پشتکار و علاقهای ستودنی، مسیر حرفهای خود را از حوزهی هوش تجاری (BI) بهسمت مهندسی داده گسترش داده است. من در طول این مسیر شاهد یادگیریهای عمیق، پیگیریهای فنی، و تلاشهای مستمر او بودهام.
بهتازگی، سایه یکی از پروژههای مهم و واقعی خود را منتشر کرده که واقعاً برای بسیاری از علاقهمندان به یادگیری پایپلاینهای دادهای real-time، الهامبخش است:
🎯 Build a Real-Time Data Pipeline with Redpanda, ClickHouse, and Superset
پروژهای کامل، کاربردی، و مبتنی بر ابزارهای مدرن و سریع.
🔧 فلوی اصلی پروژه به این صورت است:
📁 منبع دادهها بهشکل فایلهایی (مثلاً CSV یا JSON) است که در یک فولدر مشخص قرار میگیرند و از طریق FTP Server قابل دسترسی هستند.
🛠 ابزار Redpanda Connect که یک کتابخانه قدرتمند ingestion بدون کدنویسی است، بهصورت مداوم این پوشه را مانیتور میکند. بهمحض ورود فایل جدید، آن را میخواند و محتوای آن را بهصورت یک پیام (event) وارد Redpanda میکند.
🧠 اینجا، #Redis وارد عمل میشود: با استفاده از Redis، برای هر فایل ورودی یا رکورد، یک مکانیسم #deduplication پیادهسازی شده تا از ورود چندبارهی دادهها جلوگیری شود. این کار ریسک رکوردهای تکراری را از بین میبرد و کیفیت داده را در مرحلهی ingestion تضمین میکند. این کار البته توسط خود ردپاندا کانکت انجام می شود اما تنظیمات لازم برای این منظور باید انجام شود.
🚀 دادههایی که وارد Redpanda شدهاند، بهکمک Kafka engine در ClickHouse بهصورت real-time مصرف میشوند و مستقیماً وارد یک جدول تحلیلی میگردند.
📊 در نهایت، Apache Superset به این جدول در ClickHouse# متصل است و بهصورت بلادرنگ (real-time) داشبوردهایی از این دادهها ایجاد کرده که تحلیل سریع و قابل مشاهده برای کاربر نهایی را ممکن میسازد.
🧰 ابزارهای کلیدی مورد استفاده در این پروژه عبارتند از:
👉 #Redpanda: موتور سریع و سبک استریم داده (جایگزین Kafka)
👉 Redpanda Connect (Benthos سابق): ابزار ingestion بدون کدنویسی برای ارسال/دریافت داده با حجم بالا
👉 #Redis: برای deduplication و جلوگیری از ingest دوباره رکوردها
👉 #ClickHouse: پایگاهداده ستونی برای ذخیره و تحلیل سریع دادهها
👉 Superset: داشبورد تحلیلی متنباز برای نمایش دادههای real-time
📌 تمامی کدها، کانفیگها و مستندات راهاندازی در این ریپوی گیتهاب در دسترس هستند:
https://github.com/saiehhejazi/Project_2
برای سایه عزیز آرزوی موفقیت در آغاز یک دوره نوین تخصصی در دنیای مهندسی داده دارم. مطمئنم این پروژه تنها نقطهی شروع برای دستاوردهای بزرگتر و تأثیرگذارتر در آیندهی حرفهای او خواهد بود. 🌟
پ.ن:
سایر دوستان هم اگر پروژه هایی مشابه با این را انجام داده اند که بار آموزشی برای علاقه مندان به مهندسی داده دارد، ممنون میشوم آنرا برای ادمین کانال ارسال کنید تا با سایر علاقه مندان به این حوزه هم به اشتراک گذاشته شود.
👍4
وقتی پای ۵۰۰هزار سیگنال در ثانیه وسط است ⚡️: انتخاب پایگاه داده برای دادههای سری زمانی
چند روز پیش یکی از دوستان که روی پروژههای #SCADA در صنایع زیرساختی کار میکند، سوال جالبی مطرح کرد که باعث شد بشینم و یه بررسی دقیقتر انجام بدم و نتیجه را با شما هم به اشتراک بذارم 👇
سری زمانی یعنی چی؟ 🕒
دادههای #TimeSeries معمولاً از سنسورها یا لاگ سیستمها میان و بر اساس زمان مرتب میشن. ذخیره و تحلیل این دادهها با پایگاهدادههای سنتی خیلی وقتا سخت یا ناکارآمده.
چالش مهم: کاردینالیتی بالا 🧠
در دیتابیسهای سری زمانی، ستونهایی مثل Tag یا Label ممکنه میلیونها مقدار یکتا داشته باشن (High Cardinality). مثلاً هر سنسور یا دستگاه یه شناسه خاص داره. دیتابیسهایی مثل #InfluxDB یا #Prometheus در این شرایط دچار مشکل میشن، چون ایندکسگذاری معکوس (Inverted Index) براشون گرونه.
بررسی گزینههای جدی برای ذخیره و تحلیل دادههای سری زمانی 🧪
✅ دیتابیس TimescaleDB
بر پایهی PostgreSQL، آشنا برای خیلی از تیمها، ولی مقیاسپذیری افقی محدود داره.
✅ دیتابیس InfluxDB
معروفترین دیتابیس سری زمانی، ولی در حجم و کاردینالیتی بالا ممکنه کم بیاره.
🔹 زبان اختصاصی Flux، نسخه Cloud و OSS
✅ دیتابیس QuestDB
سریع و سبک، با پشتیبانی از SQL و تحلیلهای ساده Real-time.
🔹 مناسب پروژههای سبک تا متوسط
دیتابیس جدید 🚀 Apache HoraeDB
طراحی شده با زبان Rust برای کار با دادههای سری زمانی با کاردینالیتی بالا.
از تکنیک scan+prune به جای inverted index استفاده میکنه.
🔹 سازگار با سیستم های ابری / Cloud-native و مقیاسپذیر
🔹 هنوز incubating ولی بسیار جذاب
🔹 معماری Zero-Disk و جداسازی بخش محاسبات و پردازش از بخش ذخیره سازی
گزینههای عمومی ولی قدرتمند برای تحلیل داده در مقیاس بالا 🔍
⚡️ دیتابیس ClickHouse
تحلیل سریع و فوقالعاده روی دادههای ستونی. اگر تحلیل پیچیده Real-time میخواید، عالیه.
🔹 مقیاسپذیر افقی
🔹 پشتیبانی از توابع Aggregation
🌀 دیتابیس ScyllaDB / Cassandra
طراحیشده برای نوشتن سریع با تأخیر کم.
اگر مدل دادهی خوبی طراحی کنید، خیلی خوب جواب میده.
🔹 دیتابیس ScyllaDB سریعتر از Cassandra و با مصرف منابع کمتر
✳️ جمعبندی برای شرایط صنعتی با دادههای حجیم:
اگر با سناریوهایی مثل ۵۰۰k در ثانیه، نیاز به واکشی سریع و تحلیل Real-time سروکار دارید، این سه گزینه بیشترین تطابق رو دارن:
🔹 Apache HoraeDB – طراحیشده برای مقیاس بالا + کاردینالیتی بالا
🔹 ClickHouse – برای تحلیل بلادرنگ در مقیاس بزرگ
🔹 ScyllaDB – اگر اولویت با نوشتن با نرخ بالا و توزیعپذیریه
🤝 دعوت به گفتگو
آیا تجربهای در انتخاب یا مهاجرت از پایگاهدادههای سنتی به TimeSeries DB داشتید؟
کدوم ابزار براتون بهتر جواب داده؟ چه چالشهایی داشتید؟👂 شاید این بحث به انتخاب بهتر برای پروژههای بعدی همه ما کمک کنه. نظراتتون را در بخش کامنت این پست می توانید با سایر دوستان به اشتراک بگذارید.
#SCADA #TimeSeriesDatabase #HoraeDB #ClickHouse #ScyllaDB #InfluxDB #QuestDB #DataEngineering #IoT #HighCardinality #RustLang
چند روز پیش یکی از دوستان که روی پروژههای #SCADA در صنایع زیرساختی کار میکند، سوال جالبی مطرح کرد که باعث شد بشینم و یه بررسی دقیقتر انجام بدم و نتیجه را با شما هم به اشتراک بذارم 👇
«ما دادههای سری زمانی داریم و فعلاً در پایگاهداده #Oracle ذخیره میشن. ولی در پروژههای جدید ممکنه نرخ داده به ۵۰۰ هزار سیگنال در ثانیه برسه. دنبال دیتابیسی هستیم که بتونه این حجم رو مدیریت کنه، تحلیل Real-time بده، و قابلیتهایی مثل میانگینگیری، Sampling، و Backfill رو پشتیبانی کنه.»
سری زمانی یعنی چی؟ 🕒
دادههای #TimeSeries معمولاً از سنسورها یا لاگ سیستمها میان و بر اساس زمان مرتب میشن. ذخیره و تحلیل این دادهها با پایگاهدادههای سنتی خیلی وقتا سخت یا ناکارآمده.
چالش مهم: کاردینالیتی بالا 🧠
در دیتابیسهای سری زمانی، ستونهایی مثل Tag یا Label ممکنه میلیونها مقدار یکتا داشته باشن (High Cardinality). مثلاً هر سنسور یا دستگاه یه شناسه خاص داره. دیتابیسهایی مثل #InfluxDB یا #Prometheus در این شرایط دچار مشکل میشن، چون ایندکسگذاری معکوس (Inverted Index) براشون گرونه.
بررسی گزینههای جدی برای ذخیره و تحلیل دادههای سری زمانی 🧪
✅ دیتابیس TimescaleDB
بر پایهی PostgreSQL، آشنا برای خیلی از تیمها، ولی مقیاسپذیری افقی محدود داره.
✅ دیتابیس InfluxDB
معروفترین دیتابیس سری زمانی، ولی در حجم و کاردینالیتی بالا ممکنه کم بیاره.
🔹 زبان اختصاصی Flux، نسخه Cloud و OSS
✅ دیتابیس QuestDB
سریع و سبک، با پشتیبانی از SQL و تحلیلهای ساده Real-time.
🔹 مناسب پروژههای سبک تا متوسط
دیتابیس جدید 🚀 Apache HoraeDB
طراحی شده با زبان Rust برای کار با دادههای سری زمانی با کاردینالیتی بالا.
از تکنیک scan+prune به جای inverted index استفاده میکنه.
🔹 سازگار با سیستم های ابری / Cloud-native و مقیاسپذیر
🔹 هنوز incubating ولی بسیار جذاب
🔹 معماری Zero-Disk و جداسازی بخش محاسبات و پردازش از بخش ذخیره سازی
گزینههای عمومی ولی قدرتمند برای تحلیل داده در مقیاس بالا 🔍
⚡️ دیتابیس ClickHouse
تحلیل سریع و فوقالعاده روی دادههای ستونی. اگر تحلیل پیچیده Real-time میخواید، عالیه.
🔹 مقیاسپذیر افقی
🔹 پشتیبانی از توابع Aggregation
🌀 دیتابیس ScyllaDB / Cassandra
طراحیشده برای نوشتن سریع با تأخیر کم.
اگر مدل دادهی خوبی طراحی کنید، خیلی خوب جواب میده.
🔹 دیتابیس ScyllaDB سریعتر از Cassandra و با مصرف منابع کمتر
✳️ جمعبندی برای شرایط صنعتی با دادههای حجیم:
اگر با سناریوهایی مثل ۵۰۰k در ثانیه، نیاز به واکشی سریع و تحلیل Real-time سروکار دارید، این سه گزینه بیشترین تطابق رو دارن:
🔹 Apache HoraeDB – طراحیشده برای مقیاس بالا + کاردینالیتی بالا
🔹 ClickHouse – برای تحلیل بلادرنگ در مقیاس بزرگ
🔹 ScyllaDB – اگر اولویت با نوشتن با نرخ بالا و توزیعپذیریه
🤝 دعوت به گفتگو
آیا تجربهای در انتخاب یا مهاجرت از پایگاهدادههای سنتی به TimeSeries DB داشتید؟
کدوم ابزار براتون بهتر جواب داده؟ چه چالشهایی داشتید؟👂 شاید این بحث به انتخاب بهتر برای پروژههای بعدی همه ما کمک کنه. نظراتتون را در بخش کامنت این پست می توانید با سایر دوستان به اشتراک بگذارید.
#SCADA #TimeSeriesDatabase #HoraeDB #ClickHouse #ScyllaDB #InfluxDB #QuestDB #DataEngineering #IoT #HighCardinality #RustLang
👍2👏1
مهندسین یا راهی خواهند یافت یا راهی خواهند ساخت — نمونهای واقعی به نام GlassFlow 👷♂️
✨ گلسفلو یکی از همین راهحلهای هوشمندانه است؛ یک ابزار ساده، سبک و تخصصی برای برطرف کردن مشکلات رایج در مسیر داده از Kafka به ClickHouse.
🚨 مشکل از کجا شروع میشود؟
کلیکهوس یکی از سریعترین پایگاههای داده ستونی در دنیاست، اما در دنیای real-time و Kafka ضعفهایی دارد (هر چند در نسخه های اخیر خود سعی کرده است که مشکل داده های تکراری در کافکا را با ذخیره آفست آخرین داده درج شده از هر تاپیک کافکا، به نحوی حل کند - البته باید این قابلیت را فعال کنید):
🔁 کافکا بدون deduplication است
→ حذف دادههای تکراری در Kafka نیاز به کانکتورهای سفارشی و مدیریت state دارد، که پیچیده و شکنندهاند.
🐢 عملیات FINAL در ClickHouse کند و پرهزینه است
→ اجرای FINAL برای پاکسازی دادهها منابع زیادی مصرف میکند و برای real-time قابل اتکا نیست.
⛔️ کلیکهوس برای Joinهای زنده طراحی نشده
→ دادههای دیررس پشتیبانی نمیشوند و اجرای join بهینه نیست.
🧱 فلینک یا Kafka Streams معماری سنگینی دارند
→ پیادهسازی و نگهداری آنها زمانبر است و نیاز به تیم فنی پیشرفته دارد، مخصوصاً وقتی بخواهیم به ClickHouse متصل شویم.
✅ گلسفلو چه راهی ساخته است؟
گلسفلو دقیقاً برای این محدودیتها ساخته شده و با راهکارهای ساده ولی عمیق، همهی این چالشها را حل کرده:
🔑 انجام Deduplication با یک کلیک!
→ فقط کلیدهای اولیه را مشخص کنید و GlassFlow بهصورت خودکار دادههای تکراری را در بازه ۷ روزه تشخیص داده و حذف میکند.
🔗 انجام Joinهای سادهشده
→ فقط فیلدهای لازم را مشخص کنید. GlassFlow تمام logic و state را خودش مدیریت میکند.
🕓 ورود داده زمانمحور، اندازهمحور یا خودکار
→ ingestion بر اساس زمان یا حجم انجام میشود؛ کاملاً قابل تنظیم.
🔌 کانکتور Kafka و ClickHouse مدیریتشده
→ توسط تیم GlassFlow توسعه داده شده و نیازی به تنظیمات خاص یا نگهداری ندارد.
📈 مقیاسپذیری خودکار با افزایش پارتیشنها
→ هرجا نیاز باشد، Workerهای جدید فعال میشوند.
🧠 پردازش حالتمند (Stateful) با حافظه کم
→ ذخیره و پردازش سریع در حافظه داخلی، بدون نیاز به معماری پیچیده.
🚀 اجرای سبک، معماری serverless
→ بدون Flink یا Kafka Streams هم میتوانید جریانهای پرحجم را دقیق و بدون دردسر پردازش کنید.
❤️ چرا باید GlassFlow را جدی گرفت؟
اگر با ClickHouse و Kafka کار میکنید، GlassFlow ابزاری است که:
✔️ دادهها را قبل از ورود، پاکسازی و join میکند
✔️ بار روی ClickHouse را کم میکند
✔️ نیاز به FINAL و JOINهای گران را حذف میکند
✔️ معماری شما را ساده و مقیاسپذیر نگه میدارد
✔️ و مهمتر از همه، در کمترین زمان قابل راهاندازی است 🧰⚡️
با Glassflow دادهای که وارد ClickHouse میشود، از قبل join و deduplicate شده، یعنی ClickHouse شما سبکتر، سریعتر و دقیقتر خواهد بود — بدون نیاز به ترفندهای پیچیده یا عملیات هزینهبر داخل پایگاه داده.
glassflow.dev
میگویند مهندسین یا راهی خواهند یافت یا راهی خواهند ساخت. پروژه GlassFlow دقیقاً مصداق همین جمله است. وقتی با محدودیتهایی در ابزارهایی مثل ClickHouse مواجه میشویم — ابزارهایی که با تمام قدرت و کاراییشان، در معماری و عملکردشان ضعفهایی دارند — بعضی از ما بهجای منتظر ماندن، خودمان دست به کار میشویم و راهحل میسازیم.
✨ گلسفلو یکی از همین راهحلهای هوشمندانه است؛ یک ابزار ساده، سبک و تخصصی برای برطرف کردن مشکلات رایج در مسیر داده از Kafka به ClickHouse.
🚨 مشکل از کجا شروع میشود؟
کلیکهوس یکی از سریعترین پایگاههای داده ستونی در دنیاست، اما در دنیای real-time و Kafka ضعفهایی دارد (هر چند در نسخه های اخیر خود سعی کرده است که مشکل داده های تکراری در کافکا را با ذخیره آفست آخرین داده درج شده از هر تاپیک کافکا، به نحوی حل کند - البته باید این قابلیت را فعال کنید):
🔁 کافکا بدون deduplication است
→ حذف دادههای تکراری در Kafka نیاز به کانکتورهای سفارشی و مدیریت state دارد، که پیچیده و شکنندهاند.
🐢 عملیات FINAL در ClickHouse کند و پرهزینه است
→ اجرای FINAL برای پاکسازی دادهها منابع زیادی مصرف میکند و برای real-time قابل اتکا نیست.
⛔️ کلیکهوس برای Joinهای زنده طراحی نشده
→ دادههای دیررس پشتیبانی نمیشوند و اجرای join بهینه نیست.
🧱 فلینک یا Kafka Streams معماری سنگینی دارند
→ پیادهسازی و نگهداری آنها زمانبر است و نیاز به تیم فنی پیشرفته دارد، مخصوصاً وقتی بخواهیم به ClickHouse متصل شویم.
✅ گلسفلو چه راهی ساخته است؟
گلسفلو دقیقاً برای این محدودیتها ساخته شده و با راهکارهای ساده ولی عمیق، همهی این چالشها را حل کرده:
🔑 انجام Deduplication با یک کلیک!
→ فقط کلیدهای اولیه را مشخص کنید و GlassFlow بهصورت خودکار دادههای تکراری را در بازه ۷ روزه تشخیص داده و حذف میکند.
🔗 انجام Joinهای سادهشده
→ فقط فیلدهای لازم را مشخص کنید. GlassFlow تمام logic و state را خودش مدیریت میکند.
🕓 ورود داده زمانمحور، اندازهمحور یا خودکار
→ ingestion بر اساس زمان یا حجم انجام میشود؛ کاملاً قابل تنظیم.
🔌 کانکتور Kafka و ClickHouse مدیریتشده
→ توسط تیم GlassFlow توسعه داده شده و نیازی به تنظیمات خاص یا نگهداری ندارد.
📈 مقیاسپذیری خودکار با افزایش پارتیشنها
→ هرجا نیاز باشد، Workerهای جدید فعال میشوند.
🧠 پردازش حالتمند (Stateful) با حافظه کم
→ ذخیره و پردازش سریع در حافظه داخلی، بدون نیاز به معماری پیچیده.
🚀 اجرای سبک، معماری serverless
→ بدون Flink یا Kafka Streams هم میتوانید جریانهای پرحجم را دقیق و بدون دردسر پردازش کنید.
❤️ چرا باید GlassFlow را جدی گرفت؟
اگر با ClickHouse و Kafka کار میکنید، GlassFlow ابزاری است که:
✔️ دادهها را قبل از ورود، پاکسازی و join میکند
✔️ بار روی ClickHouse را کم میکند
✔️ نیاز به FINAL و JOINهای گران را حذف میکند
✔️ معماری شما را ساده و مقیاسپذیر نگه میدارد
✔️ و مهمتر از همه، در کمترین زمان قابل راهاندازی است 🧰⚡️
با Glassflow دادهای که وارد ClickHouse میشود، از قبل join و deduplicate شده، یعنی ClickHouse شما سبکتر، سریعتر و دقیقتر خواهد بود — بدون نیاز به ترفندهای پیچیده یا عملیات هزینهبر داخل پایگاه داده.
گلسفلو نشان میدهد که با خلاقیت و نوآوری میتوان بر محدودیتهای ابزارهای موجود غلبه کرد.این پروژه نهتنها مشکلات خاصی را در ClickHouse حل میکند، بلکه الگویی برای توسعهدهندگان است تا با ایجاد ابزارهای مکمل، کارایی سیستمهای موجود را افزایش دهند.
glassflow.dev
وقت آن رسیده که از JSON استاندارد یک گام جلوتر برویم!
اگر تاکنون هنگام نوشتن فایلهای پیکربندی، با محدودیتهایی مثل ممنوعیت کامنت، اجبار به دابلکوتیشن یا خطاهای ناشی از کاماهای انتهایی مواجه شدهاید، شاید زمان آن رسیده باشد که با JSON5 آشنا شوید — نسخهای توسعهیافته و انسانمحور از JSON که برای خوانایی و راحتی توسعهدهنده طراحی شده است.
🛠 جیسان ۵ - JSON5 چه چیزهایی را ممکن میکند؟
✅ پشتیبانی از کامنتها
✅ کلیدهای بدون کوتیشن
✅ رشتههای تکی (Single-quoted strings)
✅ کاماهای پایانی مجاز (Trailing commas)
✅ پشتیبانی از رشتههای چندخطی
✅ عددهای هگزادسیمال (Hex)
✅ مقادیر ویژه مثل NaN, Infinity, -Infinity, و +Infinity
✅ عدد با علامت مثبت (مثل +42)
✅ فضای بیشتر برای نوشتن تنظیمات قابلفهم برای انسانها
🎯 مناسب برای: فایلهای تنظیمات پروژه، محیطهای توسعه، ابزارهای داخلی، و هرجا که خوانایی و سادگی اولویت دارد.
🚫 نهچندان مناسب برای: تبادل داده با APIها یا ارتباط میانسیستمی — جایی که JSON استاندارد با پشتیبانی وسیع، انتخاب امنتری است.
👨💻 مقاله پیشنهادی برای مطالعه:
“JSON vs. JSON5: More flexible and human-readable configuration files”
✍🏻 نوشتهی Tihomir Manushev
📎 https://freedium.cfd/https://medium.com/@tihomir.manushev/json-vs-json5-7753f5060c90
#JSON #JSON5 #ConfigFiles #DeveloperExperience #DX #SoftwareEngineering #WebDev #CleanCode
اگر تاکنون هنگام نوشتن فایلهای پیکربندی، با محدودیتهایی مثل ممنوعیت کامنت، اجبار به دابلکوتیشن یا خطاهای ناشی از کاماهای انتهایی مواجه شدهاید، شاید زمان آن رسیده باشد که با JSON5 آشنا شوید — نسخهای توسعهیافته و انسانمحور از JSON که برای خوانایی و راحتی توسعهدهنده طراحی شده است.
🛠 جیسان ۵ - JSON5 چه چیزهایی را ممکن میکند؟
✅ پشتیبانی از کامنتها
✅ کلیدهای بدون کوتیشن
✅ رشتههای تکی (Single-quoted strings)
✅ کاماهای پایانی مجاز (Trailing commas)
✅ پشتیبانی از رشتههای چندخطی
✅ عددهای هگزادسیمال (Hex)
✅ مقادیر ویژه مثل NaN, Infinity, -Infinity, و +Infinity
✅ عدد با علامت مثبت (مثل +42)
✅ فضای بیشتر برای نوشتن تنظیمات قابلفهم برای انسانها
🎯 مناسب برای: فایلهای تنظیمات پروژه، محیطهای توسعه، ابزارهای داخلی، و هرجا که خوانایی و سادگی اولویت دارد.
🚫 نهچندان مناسب برای: تبادل داده با APIها یا ارتباط میانسیستمی — جایی که JSON استاندارد با پشتیبانی وسیع، انتخاب امنتری است.
👨💻 مقاله پیشنهادی برای مطالعه:
“JSON vs. JSON5: More flexible and human-readable configuration files”
✍🏻 نوشتهی Tihomir Manushev
📎 https://freedium.cfd/https://medium.com/@tihomir.manushev/json-vs-json5-7753f5060c90
#JSON #JSON5 #ConfigFiles #DeveloperExperience #DX #SoftwareEngineering #WebDev #CleanCode
👍5❤1
چرا 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
#Database #Backend #DistributedSystems #UUID #ULID #PostgreSQL #SystemDesign #Performance #مهندسی_داده
در طراحی پایگاههای داده، انتخاب نوع شناسه (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 #مهندسی_داده
👍8❤1
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 الصاق شده مشاهده کنید👆
شرکت 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
وقتی یه دستور ساده میتونه کل سیستم رو بخوابونه!
چند روز پیش یکی از دوستان تماس گرفت و گفت روی یک جدول بزرگ در 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
در یک سال گذشته، 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
Linkedin
OpenAI’s Kafka throughput grew 20x in the last year across 30+ clusters. | Stanislav Kozlovski
OpenAI’s Kafka throughput grew 20x in the last year across 30+ clusters.
Their setup achieves five 9s (99.999%).
Here’s how they did it 👇
〰️〰️〰️〰️
🟩 𝗖𝗹𝘂𝘀𝘁𝗲𝗿 𝗚𝗿𝗼𝘂𝗽𝘀
They group clusters into groups. Each cluster lives in a separate region.
Through an…
Their setup achieves five 9s (99.999%).
Here’s how they did it 👇
〰️〰️〰️〰️
🟩 𝗖𝗹𝘂𝘀𝘁𝗲𝗿 𝗚𝗿𝗼𝘂𝗽𝘀
They group clusters into groups. Each cluster lives in a separate region.
Through an…
👏2👍1
https://virgool.io/divarengineering/-bhwoaodprld6
سفر تکامل نقشهی دیوار: داستان مهندسی پشت نمایش هوشمند میلیونها آگهی
وقتی به دنبال خانه یا ملک میگردید، «کجا بودن» آن شاید اولین و مهمترین سؤالی باشد که به ذهنتان میرسد. در پلتفرمی مثل دیوار که روزانه هزاران آگهی املاک در آن ثبت میشود، نمایش این حجم از اطلاعات مکانی به شکلی کارآمد و قابل فهم، یک چالش بزرگ است. ما در دیوار مسیری پر فراز و نشیب را برای بهبود نمایش آگهیها روی نقشه طی کردهایم؛ از نمایش سادهی نقطهای تا سیستمهای هوشمند کلاستربندی داینامیک. این مقاله داستان این تکامل فنی و تصمیمهایی است که در این راه گرفتهایم. هدف ما نه تنها ارائهی یک تجربهی کاربری روان، بلکه ساخت زیرساختی پایدار و مقیاسپذیر برای آیندهی نقشهی دیوار بوده است.
——-
این مقاله خواندنی را از آدرس بالا مطالعه کنید .
سفر تکامل نقشهی دیوار: داستان مهندسی پشت نمایش هوشمند میلیونها آگهی
وقتی به دنبال خانه یا ملک میگردید، «کجا بودن» آن شاید اولین و مهمترین سؤالی باشد که به ذهنتان میرسد. در پلتفرمی مثل دیوار که روزانه هزاران آگهی املاک در آن ثبت میشود، نمایش این حجم از اطلاعات مکانی به شکلی کارآمد و قابل فهم، یک چالش بزرگ است. ما در دیوار مسیری پر فراز و نشیب را برای بهبود نمایش آگهیها روی نقشه طی کردهایم؛ از نمایش سادهی نقطهای تا سیستمهای هوشمند کلاستربندی داینامیک. این مقاله داستان این تکامل فنی و تصمیمهایی است که در این راه گرفتهایم. هدف ما نه تنها ارائهی یک تجربهی کاربری روان، بلکه ساخت زیرساختی پایدار و مقیاسپذیر برای آیندهی نقشهی دیوار بوده است.
——-
این مقاله خواندنی را از آدرس بالا مطالعه کنید .
ویرگول
سفر تکامل نقشهی دیوار: داستان مهندسی پشت نمایش هوشمند میلیونها آگهی
وقتی به دنبال خانه یا ملک میگردید، «کجا بودن» آن شاید اولین و مهمترین سؤالی باشد که به ذهنتان میرسد. در پلتفرمی مثل دیوار که روزانه هزار…
❤2👍2
معرفی افزونه رسمی PostgreSQL برای Visual Studio Code — توسط مایکروسافت 🐘
🔔 مناسب برای توسعهدهندگان، مهندسان داده، و همهی علاقهمندان به PostgreSQL
📊 زمینهسازی و ضرورت این ابزار:
بر اساس نظرسنجیهای توسعهدهندگان (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
🔔 مناسب برای توسعهدهندگان، مهندسان داده، و همهی علاقهمندان به 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، نسخهها، تغییرات، پارتیشنبندی و ... در فرادادهها نگه داشته شود. این یعنی نیاز به سیستمهای اضافی کاتالوگها، متادیتاها و گاهی سرویسهای اضافی برای مدیریت نسخهها
📢 امروز #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
🔍 فرض کنید میخواهیم رفتار کاربران روی یک فروشگاه آنلاین را تحلیل کنیم. آمار کلی مثل نرخ کلیک، نرخ تبدیل و زمان حضور را در پایگاهداده ذخیره میکنیم — اما دادههای ریز و حجیم مثل تکتک کلیکهای کاربران روی محصولات را به صورت خام ذخیره میکنیم، بدون اینکه دیتابیسهای عملیاتی را سنگین کنیم. این دادههای خام به شکلی بهینه ذخیره میشوند که هر زمان نیاز داشتیم بتوانیم روی آنها کوئری اجرا کنیم و تحلیل عمیقتری داشته باشیم.
🧠 این همان فلسفهی #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