اگر امروز برای زنده نگه داشتن پردازشهای پسزمینه، تکههای مختلف کرونجابها و صفهای Redis را به هم میدوزید، زیرساخت شما درست سادهتر شد. تصور کنید دیگر نیازی نباشد برای هر مرحله از یک عملیات پیچیده، یک جدول وضعیت جداگانه بسازید تا بفهمید کجا خطا رخ داده است.
در ۵ ژوئن ۲۰۲۶، مایکروسافت افزونه pg_durable را منتشر کرد. این ابزار اجازه میدهد گردشهای کاری طولانیمدت و مقاوم را فقط با زبان SQL تعریف کنید. در دنیای فعلی، توسعهدهندگان برای مدیریت تلاشهای مجدد (Retries) و وضعیت پردازشها به اورکستراتور (Orchestrator) — شبیه به مدیر پروژهای که وظیفهی هماهنگ کردن تکتک کارگران را دارد — متکی هستند. ابزارهایی مثل Temporal، Airflow یا AWS Step Functions همین نقش را ایفا میکنند؛ اما این کار باعث ایجاد یک لایهی اضافی از «کدهای چسبکن» میشود که منطق برنامه را بین دیتابیس و اپلیکیشن پخش میکند.
همانطور که در تحلیل قبلی ما دربارهی بهینهسازی لایهی داده اشاره کردیم، نزدیک کردن محاسبات به داده، کلید کاهش پیچیدگی است. pg_durable با استفاده از اجرای پایدار (Durable Execution) — که مثل سیستم ذخیرهسازی (Save) در بازیهای ویدئویی است و اجازه میدهد در صورت شکست، دقیقاً از همان نقطه بازگردید — این فاصله را میگیرد. بر اساس مستندات فنی، این افزونه با pgrx و چارچوب duroxide ساخته شده است تا هر مرحله از عملیات SQL را ثبت و چکپوینت کند.
طبق اعلام مایکروسافت، جزئیات فنی این ابزار به شرح زیر است:
- سازگاری: پشتیبانی از نسخههای ۱۷ و ۱۸ پایگاهداده PostgreSQL روی معماری amd64.
- زبان اختصاصی: استفاده از عملگرهای ترکیبشونده مثل
~>و|=>برای اتصال مراحل SQL. - استقرار: ارائه در قالب بستههای دبیان یا سرویس Azure HorizonDB (سرویس ابری جدید و پرسرعت مایکروسافت).
- بازیابی خودکار: در صورت کرش کردن دیتابیس، اجرا از آخرین چکپوینت پایدار ادامه مییابد، نه از ابتدای مسیر.
این تغییر برای شما یعنی پایان کابوس باگهای «شکست جزئی»؛ یعنی همان لحظاتی که Worker اپلیکیشن میمیرد اما دیتابیس خبر ندارد. برای مهندسان داده، این یعنی خط لولههای بردار معنایی (Embedding) — مثل کارت معرفی عددی برای هر واژه که همسایگی کلمات را مشخص میکند — یا وارد کردن دادههای حجیم، حالا به عنوان یک موجودیت واحد و قابل حسابرسی در SQL اجرا میشوند.
گام بعدی شما
- برای شروع، افزونه را به
shared_preload_librariesاضافه کنید. - دستور
CREATE EXTENSION pg_durableرا در دیتابیس خود اجرا نمایید. - برای بررسی عمیقتر، کدهای منبع duroxide-pg را در گیتهاب دنبال کنید.
اما داستان جابجایی محاسبات به سمت دیتابیس در سرویسهای ابری حتی پیچیدهتر است؛ به تحلیل ما دربارهی معماری Azure HorizonDB مراجعه کنید.
گفتگو