884 subscribers
44 photos
3 videos
1 file
1.4K links
🕸 Database Academy

حمایت مالی:
https://www.coffeete.ir/mrbardia72

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
pgstream: Postgres Replication with DDL Changes

🟢 خلاصه مقاله:
اpgstream یک ابزار CDC مبتنی بر Go است که تغییرات Postgres را به‌صورت بلادرنگ، همراه با تغییرات DDL، به مقصدهایی مانند یک پایگاه‌داده Postgres دیگر، Elasticsearch/OpenSearch یا یک webhook تکرار می‌کند. این ابزار هم به شکل CLI و هم به‌صورت کتابخانه ارائه می‌شود و علاوه بر تغییرات داده، تغییرات طرحواره را نیز منتقل می‌کند تا سیستم‌های مقصد با تکامل اسکیمای مبدأ همگام بمانند. نتیجه، همگام‌سازی ساده‌تر برای جست‌وجو، آنالیتیکس و معماری‌های رویدادمحور است. جزئیات و مثال‌ها در بلاگ‌پست مرتبط ارائه شده است.

#Postgres #CDC #Go #Replication #DDL #Elasticsearch #OpenSearch #DataEngineering

🟣لینک مقاله:
https://postgresweekly.com/link/174473/web


👑 @Database_Academy
🔵 عنوان مقاله
the top programming languages in 2025

🟢 خلاصه مقاله:
در ۲۰۲۵، محبوب‌ترین زبان‌ها حول سه جریان شکل می‌گیرند: وب و فول‌استک با JavaScript/TypeScript، داده و AI با Python، و سیستم‌ها و زیرساخت با Go، Rust و C/C++. در بسیاری از فهرست‌ها SQL به‌دلیل نقش محوری در دسترسی به داده و تحلیل‌ها در رتبه چهارم قرار می‌گیرد و میان پایگاه‌های داده سنتی و انبارهای ابری (مانند BigQuery، Snowflake و Redshift) پلی مشترک است. در بک‌اند سازمانی Java و اکوسیستم JVM همچنان پرتقاضا هستند و Kotlin در توسعه مدرن JVM رشد می‌کند؛ در موبایل، Kotlin و Swift پیشرو مانده‌اند و راهکارهای کراس‌پلتفرم مانند Flutter و React Native جایگاه خود را حفظ کرده‌اند. نتیجه عملی: برای شروع، Python یا JavaScript به‌همراه SQL انتخابی مطمئن است؛ برای سیستم‌های کارایی‌محور، Go یا Rust مناسب‌ترند.

#ProgrammingLanguages #2025Trends #SQL #Python #JavaScript #TypeScript #Rust #Go

🟣لینک مقاله:
https://postgresweekly.com/link/174752/web


👑 @Database_Academy
🔥1
🔵 عنوان مقاله
'the PostgreSQL creators totally nailed it.'

🟢 خلاصه مقاله:
در آخرین شماره Golang Weekly، مقاله‌ای تأکید می‌کند که سازندگان PostgreSQL «کاملاً درست عمل کردند». نویسنده توضیح می‌دهد چرا این پایگاه‌داده با ترکیب استانداردهای شفاف SQL، قابلیت اتکا، کارایی بالا و امکاناتی مانند JSONB و ایندکس‌های قدرتمند، برای طیف وسیعی از نیازها مناسب است. برای توسعه‌دهندگان Go، هم‌نشینی PostgreSQL با ابزارهایی مثل pgx و GORM، سادگی در ادغام، و رفتار قابل پیش‌بینی در محیط تولید، ارزش ویژه‌ای دارد. جامعه فعال، مستندسازی خوب و سازگاری عقب‌رو نیز استفاده بلندمدت را مطمئن می‌کند. جمع‌بندی مقاله این است که برای بسیاری از تیم‌های Go، PostgreSQL یک انتخاب پیش‌فرض قوی و عملیاتی است و سازندگانش در رسیدن به این تعادل «حرفه‌ای» عمل کرده‌اند.

#PostgreSQL #Golang #Go #Databases #GolangWeekly #OpenSource #Backend #SoftwareEngineering

🟣لینک مقاله:
https://postgresweekly.com/link/174751/web


👑 @Database_Academy
3
🔵 عنوان مقاله
How to Implement the Outbox Pattern in Go and Postgres

🟢 خلاصه مقاله:
** الگوی Outbox روشی عملی برای حذف مشکل دو‌نوشتن و تضمین تحویل مطمئن پیام‌هاست. در این روش، تغییرات دامنه و یک رکورد رویداد در جدول outbox داخل همان تراکنش Postgres ذخیره می‌شوند؛ سپس یک پردازشگر در Go رویدادها را از جدول خوانده و به پیام‌رسان‌هایی مانند Kafka یا RabbitMQ منتشر می‌کند. با استفاده از فیلدهایی مانند ID، کلید موجودیت، نوع رویداد، payload به صورت JSONB، وضعیت/تعداد تلاش، و زمان‌ها، همگامی داده و پیام تضمین می‌شود. پردازشگر با انتخاب دسته‌های کوچک و به‌کارگیری SELECT … FOR UPDATE SKIP LOCKED از رقابت جلوگیری کرده، پس از انتشار وضعیت را به «پردازش‌شده» تغییر می‌دهد و شکست‌ها را با backoff و صف خطا مدیریت می‌کند. این الگو تحویل حداقل-یک‌بار را فراهم می‌کند و با مصرف‌کننده‌های idempotent می‌توان به پردازش مؤثرِ یک‌باره رسید. برای کارایی بهتر، ایندکس‌گذاری بر status و created_at، پارتیشن‌بندی جدول، حفظ ترتیب بر اساس کلید موجودیت و نظارت بر عمق صف و تأخیر انتشار توصیه می‌شود. به‌عنوان جایگزین، CDC با منبع‌خوانی منطقی Postgres (مثلاً Debezium) می‌تواند به‌جای polling استفاده شود، هرچند پیچیدگی عملیاتی بیشتری دارد. با آزمون‌های یکپارچه، مدیریت مهاجرت‌های شِما و پاک‌سازی داده‌های پردازش‌شده، پیاده‌سازی در Go و Postgres به پلی پایدار بین پایگاه‌داده و سامانه پیام‌رسان تبدیل می‌شود؛ همان رویکردی که Alex Pliutau در معرفی پیاده‌سازی Outbox با Go و Postgres بر آن تأکید دارد.

#OutboxPattern #Go #Postgres #Microservices #EventDriven #TransactionalOutbox #Reliability #Messaging

🟣لینک مقاله:
https://postgresweekly.com/link/174464/web


👑 @Database_Academy
🔵 عنوان مقاله
Cumulative Statistics in Postgres 18

🟢 خلاصه مقاله:
این مطلب از Golang Weekly توضیح می‌دهد که cumulative statistics در Postgres 18 چگونه با تجمیع شمارنده‌ها و زمان‌ها در طول زمان، تصویری روندی از رفتار بار کاری ارائه می‌کند؛ تصویری که برای عیب‌یابی کارایی، برنامه‌ریزی ظرفیت و تعریف SLO بسیار مفیدتر از نماهای لحظه‌ای است. نویسنده انواع داده‌های قابل‌دسترسی از طریق نماها و اکستنشن‌ها (مثل آمار سطح کوئری، الگوهای دسترسی به جدول و ایندکس، I/O و فعالیت پس‌زمینه) را مرور می‌کند و تأکید دارد که در Postgres 18 ارائه و استفاده از این آمارها روان‌تر و قابل‌مقایسه‌تر شده است.

برای تیم‌های Go نیز رویکردی عملی پیشنهاد می‌شود: استخراج دوره‌ای آمار از طریق database/sql یا pgx، اسکن در ساختارها و ارسال به Prometheus تا داشبوردها و هشدارها بتوانند معیارهایی مانند تاخیر، نسبت cache hit و گروه‌های کوئری پرهزینه را در طول زمان دنبال کنند. نکات عملی شامل زمان‌بندی مناسب برای reset شمارنده‌ها (مثلاً همزمان با استقرار)، فیلتر کردن آمار بر اساس database یا application_name و اطمینان از سبک‌وزن بودن کوئری‌های مانیتورینگ است. ترکیب این قابلیت‌ها با جمع‌آوری سبک در Go راهی پایدار برای یافتن گلوگاه‌ها و حفظ کارایی در تکامل سیستم فراهم می‌کند.

#Postgres #PostgreSQL #CumulativeStatistics #DatabasePerformance #Observability #Go #Golang #Monitoring

🟣لینک مقاله:
https://postgresweekly.com/link/175101/web


👑 @Database_Academy
🔵 عنوان مقاله
A cute example of solving a logic puzzle

🟢 خلاصه مقاله:
این مطلب در Golang Weekly یک نمونه دوست‌داشتنی از حل یک پازل منطقی را نشان می‌دهد: تبدیل سرنخ‌های متنی به قیود دقیق، مدل‌سازی حالت‌ها، و حذف تدریجی گزینه‌های نامعتبر تا رسیدن به پاسخ یکتا. رویکرد آن بر سادگی و شفافیت تکیه دارد—با استفاده از ساختارهای داده ساده و اندکی backtracking یا constraint propagation که پیاده‌سازی‌اش در Go روان و قابل دنبال‌کردن است. فراتر از یک معما، پیام اصلی این است که پازل‌های منطقی محیطی عالی برای تمرین تفکر الگوریتمی در Go فراهم می‌کنند؛ از مدل‌سازی و آزمون‌پذیری تا ملاحظات کارایی. در پایان، خواننده تشویق می‌شود با نسخه‌های مختلف معما و شیوه‌های بیان قیود آزمایش کند و از فرایند تبدیل سرنخ‌های غیررسمی به منطق اجرایی لذت ببرد.

#Golang #Go #LogicPuzzle #AlgorithmicThinking #ConstraintSolving #Backtracking #GolangWeekly

🟣لینک مقاله:
https://postgresweekly.com/link/175724/web


👑 @Database_Academy
🔵 عنوان مقاله
Key Operational Enhancements and Integration Options in Postgres 16

🟢 خلاصه مقاله:
این مطلب با تمرکز بر مخاطبان Golang Weekly توضیح می‌دهد که Postgres 16 چه بهبودهایی برای عملیات روزمره و یکپارچه‌سازی با سرویس‌ها آورده است. نویسنده روی حوزه‌های عملی مثل کارایی پایدارتر تحت بار، رفتار بهتر autovacuum، و رصدپذیری دقیق‌تر برای IO و پردازه‌های پس‌زمینه تأکید می‌کند تا تنظیمات و عیب‌یابی سریع‌تر و مطمئن‌تر انجام شود. همچنین به ارتقاهای مرتبط با replication منطقی و سنک‌کردن ایمن‌تر، مدیریت slotها و سناریوهای failover اشاره می‌کند تا پیاده‌سازی‌های HA و چندمنطقه‌ای ساده‌تر شوند. در بخش یکپارچه‌سازی، گزینه‌های Go مانند pgx و database/sql، مدیریت connection pooling با pgxpool یا PgBouncer، اتصال به سامانه‌های رویدادمحور از طریق logical decoding و ابزارهایی مثل Debezium، و الگوهای LISTEN/NOTIFY و FDW مرور می‌شود. جمع‌بندی مقاله: Postgres 16 دردسرهای عملیاتی را کمتر و ادغام با معماری‌های متنوع را ساده‌تر می‌کند و یک چک‌لیست کوتاه برای ارزیابی و ارتقای امن ارائه می‌دهد.

#Postgres16 #PostgreSQL #Golang #Go #Database #Replication #Observability #Performance

🟣لینک مقاله:
https://postgresweekly.com/link/175401/web


👑 @Database_Academy
🔵 عنوان مقاله
memoize planner estimates in EXPLAIN.

🟢 خلاصه مقاله:
**
این مطلب که در شماره اخیر Golang Weekly معرفی شده، درباره memoize کردن برآوردهای planner در EXPLAIN است تا تحلیل پرس‌وجوها سریع‌تر و قابل‌اتکاتر شود. ایده اصلی این است که تخمین‌های میانی (مثل cardinality و هزینه‌ها) بر اساس نسخه نرمال‌شده‌ی بخش‌های پرس‌وجو و ورودی‌های اثرگذار (آمار جداول، وضعیت schema، و تنظیمات planner) ذخیره شوند و در اجرای‌های بعدی EXPLAIN دوباره استفاده شوند. نتیجه: کاهش هزینه محاسبات تکراری، ثبات بیشتر خروجی‌ها، و مقایسه آسان‌تر تغییرات.

در پیاده‌سازی با Go می‌توان با cacheهای سبک، هش‌کردن پرس‌وجوی نرمال‌شده و وضعیت کاتالوگ، و قلاب‌های ابطال (invalidation) قابل‌تنظیم به این هدف رسید؛ این رویکرد برای ابزارهای توسعه، CI و بنچمارک‌ها سودمند است. البته چالش‌ها هم مهم‌اند: کهنگی داده‌های cache با تغییر آمار یا تنظیمات، ضرورت سیاست‌های ابطال شفاف، ترجیحاً cache کردن فقط برآوردها (نه کل plan)، ارائه نشانگرهای hit/miss در خروجی EXPLAIN، و تعیین دامنه و سقف اندازه cache (مثلاً در سطح session).

به طور خلاصه، memoize کردن برآوردهای planner در EXPLAIN چرخه‌های تحلیل را تسریع و نتایج را پایدارتر می‌کند، به شرط آنکه مرزهای cache و سیاست‌های ابطال به‌خوبی مدیریت شوند.

#Golang #Go #EXPLAIN #Database #QueryPlanner #Memoization #Performance #Optimization

🟣لینک مقاله:
https://postgresweekly.com/link/175091/web


👑 @Database_Academy
🔵 عنوان مقاله
Postgres 18's UUIDv7: Faster and Secure Time-Ordered IDs

🟢 خلاصه مقاله:
**پشتیبانی از UUIDv7 در Postgres 18 شناسه‌هایی زمان‌مرتب ارائه می‌دهد که برخلاف UUIDv4 باعث پراکندگی شدید ایندکس‌ها نمی‌شوند. بخش زمان در ابتدای UUIDv7 باعث می‌شود درج‌ها عمدتاً به انتهای B-tree اضافه شوند و از شکستن صفحه‌ها، افت کش و ناپایداری توان نوشتن جلوگیری شود. هم‌زمان، بخش‌های تصادفیِ کافی باقی می‌ماند تا شناسه‌ها منحصربه‌فرد، غیرقابل پیش‌بینی و مناسب برای محیط‌های توزیع‌شده باشند؛ بدون افشای جزئیات سخت‌افزاری مانند نسخه‌های قدیمی‌تر.

برای تیم‌های Go که از Postgres استفاده می‌کنند، این تغییر به‌خوبی با الگوهای متداول سرویس‌های رویدادمحور، لاگ‌های افزایشی و نوشتن در مقیاس افقی سازگار است. تولید UUIDv7 در لایه اپلیکیشن و ذخیره آن در ستون نوع uuid ساده است و بسیاری از کتابخانه‌های Go از آن پشتیبانی می‌کنند. برای مهاجرت، جدول‌های جدید می‌توانند مستقیماً از UUIDv7 استفاده کنند و جدول‌های موجود می‌توانند به‌تدریج تغییر کنند؛ تنها به صحت و یکنواختی ساعت سرورها برای حفظ ترتیب توجه کنید و برای نیازهای زمانی دقیق همچنان از ستون‌های timestamp بهره بگیرید.

به‌طور خلاصه، UUIDv7 در Postgres 18 ترکیبی از عملکرد بهتر درج و ایندکس، سادگی عملیاتی و امنیت بیشتر را فراهم می‌کند؛ همان‌طور که در Golang Weekly نیز بر هم‌سویی طبیعی آن با معماری سرویس‌های Go تاکید شده است.

#Postgres #PostgreSQL #UUIDv7 #Go #Golang #DatabasePerformance #Scalability

🟣لینک مقاله:
https://postgresweekly.com/link/176368/web


👑 @Database_Academy