Database Labdon
662 subscribers
30 photos
480 links
🕸 Database Academy

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

ادمین:
@mrbardia72
Download Telegram
ماجرای یه SELECT ساده که SQL SERVER رو به زانو در آورد.
چند وقت پیش تو یه پروژه ای بودم که یکی از دولوپرهای عزیز یه گزارش جدید نوشته بود که شامل یه Query بود. روی سطح کد، همه‌چیز عالی به نظر میومد. اما وقتی گزارش اجرا میشد، سیستم یه دفعه شروع می کرد به کند شدن و سرور، CPU رو تا 100٪ میبرد بالا.
رفتم بررسی کنم چی شده. دیدم Queryش این شکلی بود:
SELECT *
FROM BigTable
WHERE FunctionOnColumn(SomeColumn) = 'Value';
کاری که این Query انجام می‌داد، این بود که یه فانکشن روی ستون اجرا می‌کرد. نتیجه؟ به‌جای استفاده از ایندکس‌های موجود، SQL Server مجبور می‌شد کل جدول رو اسکن کنه (Full Table Scan).

اول، با دولوپر صحبت کردم و براش توضیح دادم که استفاده از فانکشن روی ستون‌ها (به‌خصوص توی WHERE یا JOIN) باعث می‌شه SQL Server ایندکس‌ها رو نادیده بگیره. بعد، بهش پیشنهاد دادم که به‌جای فانکشن، مقدار محاسبه‌شده رو از قبل توی یه ستون جدید ذخیره کنه یا از Persisted Computed Column استفاده کنه.
کوئری اصلاح‌ شده‌ش این شد:
SELECT *
FROM BigTable
WHERE CalculatedSomeColumn = 'Value';
سرعت اجرای Query از چند دقیقه به کمتر از یک ثانیه رسید. همین تغییر ساده کلی بار روی دیتابیس رو کم کرد. نتیجه اینکه من راضی ، دولوپر راضی ، SQL SERVER هم راضی.

<Mostafa Hassanzadeh/>

https://t.me/addlist/KpzXaiSpKENkMGM0
👍3🔥2🍓2👏1
📢 اگر تلگرام پرمیوم دارید، کانال ما رو Boost کنید ! 🚀

با Boost کردن کانال، به رشد و دیده شدن ما بیشتر کمک کنید💙

https://t.me/boost/Database_Academy
1👻1💘1
🔵 عنوان مقاله
pg_activity 3.6: top-Like Activity Monitoring Tool

🟢 خلاصه مقاله:
مقاله‌ای که مرور شده به ابزاری به نام "pg_activity" پرداخته است که توانایی نظارت بر عملکرد و فرآیندهای در حال اجرا در پایگاه داده Postgres را فراهم می‌کند. این ابزار عملکردی مشابه به ابزارهایی نظیر top یا htop در سیستم‌های عامل را داراست، با این تفاوت که به طور ویژه برای داده‌ها و فرآیندهای مرتبط با Postgres طراحی شده است. پیکربندی pg_activity به گونه‌ای است که کاربران قادر به مشاهده پرس و جوهای در حال اجرا، آمار عملکرد به‌روز و سایر اطلاعات مهم مرتبط با پایگاه داده هستند. استفاده از این ابزار برای توسعه‌دهندگانی که به دنبال بهینه‌سازی عملکرد و نظارت دقیق‌تر بر داده‌ها و فرآیندهای پایگاه داده خود هستند، ارزشمند است. این مقاله بیشتر روی قابلیت‌ها و مزایای استفاده از pg_activity در محیط‌های تولیدی و توسعه تاکید دارد.

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


👑 @Database_Academy
1
🔵 عنوان مقاله
Don’t Let Postgres Maintenance Slip Through the Cracks & Let Performance Fall Off a Cliff

🟢 خلاصه مقاله:
مقاله‌ای که به بررسی آن پرداخته‌اید، به موضوع روش‌های پیشگیرانه در نگهداری و مانیتورینگ پایگاه‌داده‌ها اختصاص دارد تا به کشف ریسک‌های پنهان عملکردی همچون پرس‌و‌جوهای کند، رفتار چک‌پوینت‌ها، و مشکلات برقراری ارتباط پرداخته و قبل از آنکه این مسائل تشدید شوند، به حل آن‌ها بپردازد. هدف از این رویکرد، اطمینان از قابلیت اطمینان پایگاه‌داده است. این مقاله پرکتیس‌هایی را ارائه می‌دهد که به مدیران پایگاه‌داده این امکان را می‌دهند که با استفاده از ابزارهای مناسب و روش‌های به‌روز، عملکرد سیستم‌هایشان را به‌طور موثر تحت نظر داشته باشند و به ارتقاء پایدار عملکرد و کاهش خطرات احتمالی بپردازند. این مقاله برای متخصصان IT و مدیران دیتابیس که به‌دنبال بهینه‌سازی و پیشگیری از مشکلات فنی هستند، بسیار مفید است.

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


👑 @Database_Academy
1🥰1
🔵 عنوان مقاله
Postgres 17.4, 16.8, 15.12, 14.17, and 13.20 Released

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته به توضیح انتشار جدیدی از نسخه‌های نگهداری‌شده در دو هفته اخیر می‌پردازد و به عنوان یک انتشار "خارج از دوره معمول" شناخته شده است. تمرکز اصلی این به‌روزرسانی‌ها بر رفع اشکالات می‌باشد. در این زمینه، Postgres 17 شاهد رفع نشت حافظه در تابع pg_createsubscriber و تغییر رفتار تابع نقل قول در کتابخانه libpq است. این اصلاحات در جهت بهبود عملکرد و کارایی پایگاه داده و ارتقاء امنیت آن تدابیری اتخاذ شده‌اند.

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


👑 @Database_Academy
🔵 عنوان مقاله
While Postgres Redlined, Robinhood Sharded to Scale

🟢 خلاصه مقاله:
این مقاله توسط یک مهندس سابق شرکت Robinhood نوشته شده و به بررسی مشکلات مقیاس‌بندی پایگاه داده Postgres در این شرکت و چگونگی حل این مشکلات از طریق شاردینگ می‌پردازد. نویسنده توضیح می‌دهد که با افزایش حجم کاربران و داده‌ها، سیستم پایگاه داده‌ی مرکزی Postgres شروع به نمایش نقاط ضعف در پردازش و ذخیره‌سازی داده‌ها کرد. این موضوع باعث شد امنیت و سرعت دسترسی به داده‌ها تحت تأثیر قرار گیرد. شرکت برای حل این مشکل به سمت استراتژی شاردینگ روی آورد، که شامل تقسیم پایگاه داده به بخش‌های کوچکتر و مدیریت مستقل آن‌ها برای بهبود عملکرد و مقیاس‌پذیری می‌شود. این رویکرد نه تنها به بهبود امنیت و کارایی کمک کرد بلکه امکان رشد و گسترش آتی را برای Robinhood فراهم آورد. نویسنده با بررسی فنی و تجربی، توانایی‌های شاردینگ را به عنوان یک راهکار عالی برای مقابله با چالش‌های مقیاس در محیط‌های پویای تجاری امروزی معرفی می‌کند.

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


👑 @Database_Academy
1👍1
🔵 عنوان مقاله
FerretDB 2.0: An Open Source MongoDB Alternative

🟢 خلاصه مقاله:
FerretDB یک پیاده‌سازی از MongoDB است که بر روی Postgres و افزونه DocumentDB مایکروسافت قرار گرفته است. به خلاف MongoDB، FerretDB تحت مجوز Apache 2.0 منتشر شده است. این امکان را فراهم می‌آورد که کاربران بتوانند از پایگاه داده‌ی مدیریت سندی مانند MongoDB استفاده کنند، در حالی که از زیرساخت‌های قدرتمند و اثبات شده‌ی Postgres بهره می‌برند. این نوآوری به این معناست که کاربران می‌توانند از ویژگی‌ها و امنیتی که Postgres ارائه می‌دهد استفاده کنند، در حالی که از رابط برنامه‌نویسی کاربردی MongoDB برخوردار هستند. این محصول به خصوص برای آن دسته از توسعه‌دهندگانی که به دنبال استفاده از MongoDB در محیط‌هایی هستند که Postgres ترجیح داده می‌شود، مفید است. FerretDB در گیت‌هاب قابل دسترسی است و می‌تواند به عنوان یک جایگزین قابل اعتماد برای MongoDB استفاده شود.

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


👑 @Database_Academy
🔵 عنوان مقاله
pytest-postgresql 7.0: A Pytest Plugin for Testing Postgres-Using Python Apps

🟢 خلاصه مقاله:
این مقاله به معرفی پلاگینی برای چارچوب تست پایتون Pytest می‌پردازد که برای مدیریت فیکسچر‌ها هنگام تست کردن پایگاه داده‌های Postgres طراحی شده است. فیکسچر‌ها (Fixture) در زمینه تست نرم افزار، منابعی هستند که قبل از اجرای تست‌ها برپا شده و پس از اتمام تست‌ها، منحل می‌گردند. این پلاگین به توسعه‌دهندگان کمک می‌کند تا به راحتی محیط‌های لازم برای داده‌های آزمایشی خود را در بانک اطلاعاتی PostgreSQL فراهم نمایند و به این ترتیب، دقت و کارایی تست‌های خود را افزایش دهند.

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


👑 @Database_Academy
Forwarded from Bardia & Erfan
👇 لیست کانال‌های مجموعه Labdon با به‌روزترین اخبار، آموزش‌ها و ترفندها در حوزه‌های مختلف:


🔵 گولنگ - همه چیز از اخبار تا نکات کلیدی
🔴 @gopher_academy

🔵 موقعیت شغلی های گولنگ چه ایرانی و چه خارجی
🔴 @gopher_job


🔵 انواع دیتابیس ها ردیس مانگو پستگرس و سایر دیتابیس ها
🔴 @database_academy
🟢 حوزه های تحت پوشش

(redis , mysql , postgresl , mongo ,etc)

🔵 دنیای بلاکچین و ارز های دیجیتال
🔴 @Blockchain_labdon
🟢 حوزه های تحت پوشش

(Bitcoin, Ethereum, Altcoins, Blockchain, Policy & Regulations, AI, NFTs, DeFi)


🔵 مهندسی نرم افزار
🔴 @software_labdon
🟢 حوزه های تحت پوشش

(Engineering, Architecture, Design, Testing, Security , QA)


🔵 لینوکس- از توزیع‌ها تا ترفندهای امنیتی
🔴 @linux_labdon
🟢 حوزه های تحت پوشش

(Linux Distributions, Open Source Software, Security Tips ,New Releases & Features)


🔵 دوآپـس - ابزارها و روندهای جدید
🔴 @devops_labdon
🟢 حوزه های تحت پوشش

(CI/CD Pipelines, Cloud Infrastructure, Containerization & Orchestration, Monitoring & Performance, Infrastructure as Code, Security in DevOps)

🕸 @labdon_academy
🔵 عنوان مقاله
PGConf.dev 2025: May 13-16 in Montréal, Canada

🟢 خلاصه مقاله:
رویداد جانشین PGCon، کنفرانس توسعه PostgreSQL، یکی از بزرگترین گردهمایی‌های سالانه جامعه است که تمرکز خاصی بر روی جمع آوری مشارکت‌کنندگان Postgres دارد. ثبت نام اکنون باز است، اما خبر مهم این هفته این است که برنامه کنفرانس اکنون زنده و بسیار پربار است.


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


👑 @Database_Academy
👍1🙏1
🔵 عنوان مقاله
New Random Functions in Postgres 17

🟢 خلاصه مقاله:
در ورژن ۱۷ PostgreSQL، توابع جدیدی برای تولید اعداد تصادفی معرفی شده‌اند، بنابراین دریافت یک عدد صحیح بین ۱ تا ۱۰ حالا به سادگی استفاده از random(1,10) امکان‌پذیر است.

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


👑 @Database_Academy
👍2
🔵 عنوان مقاله
(Ab)using pgRouting to Use Postgres as a Graph Database

🟢 خلاصه مقاله:
پس از نصب افزونه pgRouting، قابلیت‌های مسیریابی مکانی مدرن در دسترس قرار می‌گیرند، معمولاً در ترکیب با PostGIS استفاده می‌شود. جالب است که بدانید مکانیزم‌های جستجوی مسیر و گراف این افزونه تنها به داده‌های جغرافیایی محدود نمی‌شوند؛ در واقع، این امکانات می‌توانند برای ناوبری در هر نوع داده‌ای که به شکل گراف سازمان‌دهی شده باشد، به کار روند.

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


👑 @Database_Academy
Forwarded from DevOps Labdon
🔵 عنوان مقاله
Siren Call of SQLite on the Server (3 minute read)

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته، به بررسی استفاده از SQLite در کنار ابزارهایی مانند LiteFS برای تکثیر داده‌ها در محیط‌های سروری توسط Fly.io می‌پردازد. مقاله با این وجود استدلال می‌کند که استفاده از SQLite به عنوان دیتابیس اصلی در محیط‌های تولید، پیچیدگی‌های غیرضروری به همراه دارد. SQLite برای برنامه‌های تک‌نمونه‌ای مناسب است؛ با این حال، برای بیشتر بارهای کاری در تولید، استفاده از پایگاه داده سنتی مانند PostgreSQL به دلیل سادگی در پشتیبان‌گیری، مقیاس‌پذیری و مهاجرت‌ها، گزینه بهتری است. در نهایت، مقاله به این نتیجه می‌رسد که برای کاربردهایی که نیازمند استقرار راهکارهای پیچیده‌تر هستند، PostgreSQL را به عنوان یک گزینه‌ی ترجیحی قلمداد می‌کند.

🟣لینک مقاله:
https://pid1.dev/posts/siren-call-of-sqlite-on-the-server/?utm_source=tldrdevops


👑 @DevOps_Labdon
🔵 عنوان مقاله
A Roundup of Postgres Query Plan Visualization Tools

🟢 خلاصه مقاله:
دستور EXPLAIN به همراه گزینه‌های متعدد آن، درک عمیقی از نحوه‌ی برنامه‌ریزی اجرای پرس‌وجو توسط PostgreSQL (پُست‌گرس‌کیوال) به شما می‌دهد و راهی عالی برای فهمیدن دلایل کندی برخی پرس‌وجو‌ها است. خروجی خام این دستور ممکن است خواندنی نباشد، اما چندین ابزار وجود دارد که می‌توانند به تجزیه و تحلیل آن کمک کنند.

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


👑 @Database_Academy
کوئرا با ۳۰۰ میلیون کاربر ماهانه، ۲۵,۰۰۰+ سوال روزانه، و ۱۰+ سال فعالیت، دیتابیسش میدونی چیه؟ MySQL! ده‌ها ترابایت داده و صدها هزار QPS. و اومدن شدیدا بهینه‌ش کردن، چطوری؟

اینا میبینن بار دیتابیس (Database Load) با رشد کاربران، پتابایت‌ها بیشتر و با ویژگی‌های ML محصولاتشون بالاتر هم می‌ره، و البته اسپمرها هم یه بخشی ازین بار بودن.

بار دیتابیسشون تو خواندن (Reads) (۷۰٪ ترافیک)، حجم داده (Data Volume) ( که رشد ۲۰۰٪ تو ۵ سال داشت)، و نوشتن (Writes) (کم اما حساس) بود. کوئرا برای بهینه‌سازی روی خواندن و حجم داده تمرکز کرد، چون ترافیک بیشترشون سمت خواندن بود.

اسکن‌های بزرگ رو با LIMIT و صفحه‌بندی (Pagination) بهینه کردن. این کار از اسکن‌ غیرضروری جلوگیری کرد و پرفومنس کوئری‌ها رو تا ۶۰٪ سریع‌تر کرد.

برای کوئری‌های کند، ایندکس‌ها رو دوباره طراحی کردن، ستون‌های غیرضروری حذف شدن، ORDER BY به کلاینت منتقل شد، و کوئری‌های غیرضروری هم حذف شدند. و بار CPU ۵۰٪ کم شد.

برای High QPS، کوئرا کش رو بهینه کرد. کلید کش (Cache Key) به uid تغییر داد تا QPS رو بیش از ۹۰٪ کم کنه.

برای حجم داده ها، کوئرا MyRocks که فیس‌بوک توسعه داده بود رو برای شاردهای قدیمی MySQL استفاده کرد. این کار فضا رو تا ۸۰٪ برای برخی جدول‌ها  و ۵۰-۶۰٪ برای بقیه کاهش داد.

مای راک با فشرده‌سازی بهتر، IO رو کم کرد و زمان بکاپ/ریستور رو ۵۰٪ سریع‌تر کرد. شاردهای قدیمی (بیش از ۱۸ ماه) به MyRocks منتقل شدند.
برای نوشتن، lag رپلیکیشن رو با رپلیکیشن موازی Parallel ( توی mysql تنظیماتش slave_parallel_type یا شبیه شه) حل کردن تا بار رو بهتر توزیع کنه.

یعنی یه تاخیری بین دیتابیس مادر با رپلیکا به وجود میومد که رو برداشتن سیستمش رو موازی کردن، مشکلش چی بود؟ وقتی رپلیکا داره میخونه یا مینویسه ممکنه خیلی زمان بر بشه یا transaction دیتابیس مادر خیلی زمانبر باشه رپلیکا مجبور بشه صبر کنه تا تراکنش تموم بشه بعد تغییرات رو اعمال کنه

خلاصه اینکه نتیجه این شد که کوئرا:
- با بهینه‌سازی کش  و کوئری‌ها
- استفاده از MyRocks،
- و رپلیکیشن موازی 

بار رو برای ۳۰۰ میلیون کاربر روی دیتابیس‌ MySQL کاهش داد.

| <Saman/>

https://t.me/addlist/KpzXaiSpKENkMGM0
1👍1
یکی از قابلیت‌هایی که Full-Text در MySQL دارد، امکان تعریف stopwords برای جلوگیری از بزرگ شدن ایندکس و افزایش کیفیت نتایج جستجو است.
ما می‌تونیم با حذف کلماتی مانند حروف اضافه، افعال رایج و حتی کلمات نامناسب، ایندکس بهینه داشته باشیم.
برای این کار کافیه، جدولی با یک ستون به نام value بسازیم و اون رو با استفاده از آپشن innodb_ft_server_stopword_table به MySQL معرفی کنیم.
دیکشنری‌های آماده‌ی زیادی برای stopwords در اینترنت وجود داره که میشه ازشون استفاده کرد.
یکی از دیکشنری‌های Open Source که میشه ازش استفاده کرد، پروژه‌ی زیر است:
https://github.com/kharazi/persian-stopwords

بعد از اعمال تغییرات در stopwords، باید ایندکس Full-Text را مجدداً ایجاد کنید تا تغییرات اعمال شود.

<Hamoon Mohammadian Pour/>


https://t.me/addlist/KpzXaiSpKENkMGM0
3
Forwarded from Bardia & Erfan
👍32
🔵 عنوان مقاله
Introducing pgNow: A Point-in-Time Diagnostic Tool

🟢 خلاصه مقاله:
- یک ابزار دسکتاپ متقاطع (cross-platform) رایگان (ولی نه متن‌باز - زیرا در مرحله اولیه و محدود با ثبت ایمیل قابل دسترسی است) ایجاد شده توسط شرکت Redgate که برای برجسته‌سازی و تحلیل داده‌های زنده در مورد پرس‌وجوها (queries)، فهرست‌ها (indexes)، تنظیمات پیکربندی (configuration settings) و دیگر عناصر مهم عملیات خوشه‌ی پستگرس (Postgres cluster) طراحی شده است. حتی اگر شما آن را دریافت نکنید، رایان (Ryan) در این‌جا یک بررسی دقیق از ویژگی‌هایی که این ابزار ارائه می‌دهد، ارائه کرده است.

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

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


👑 @Database_Academy
🔥1
🔵 عنوان مقاله
Postgres Gets a Self-Join Elimination Optimization

🟢 خلاصه مقاله:
چندین سال پیش، شخصی پیشنهاد داد که بهینه‌سازی اتصال (join) در مواردی که اتصالات داخلی متعدد به خود (که اغلب توسط ORMs اضافه می‌شوند) وجود دارد، می‌توان آن‌ها را تحت شرایط خاصی حذف کرد. این بهینه‌سازی، که به آن حذف اتصال به خود (Self-Join Elimination یا SJE) گفته می‌شود، اخیراً در Postgres اعمال شده است و در این commit در GitHub توضیح داده شده است.

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


👑 @Database_Academy
🔥2👍1
به عنوان جوانی که هم دلار هزار تومنی رو دیدم هم صد هزار تومنی واقعا غمگین میباشم.
👌6🕊5🔥1💯1