Database Labdon
664 subscribers
30 photos
481 links
🕸 Database Academy

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

ادمین:
@mrbardia72
Download Telegram
چرا ردیس این‌قدر سریع کار می‌کنه؟
ردیس یه دیتابیس در حافظه است که سرعت خیلی بالایی داره. حالا بیاید ببینیم چرا این‌قدر سریع هست.
۱. داده‌ها تو RAM ذخیره می‌شن
اولین دلیل سرعت ردیس اینه که همه داده‌ها در حافظه RAM ذخیره می‌شن، نه روی دیسک. این یعنی وقتی یه درخواست میاد، ردیس نیازی نداره که داده‌ها رو از روی هارد دیسک بخونه، چون همه چیز داخل حافظه‌س. خواندن از RAM خیلی سریع‌تر از دیسکه. علاوه بر این، ردیس از ساختارهای داده‌ای ساده مثل hash tables، linked lists و skip lists استفاده می‌کنه که همین سادگی باعث می‌شه خیلی سریع‌تر از دیتابیس‌های دیگه عمل کنه.
۲. فقط یک رشته برای همه درخواست‌ها
حالا شاید این سوال پیش بیاد که چرا ردیس از فقط یه thread استفاده می‌کنه؟ معمولاً فکر می‌کنیم استفاده از چندین thread می‌تونه سرعت رو بیشتر کنه، اما در دیتابیس‌های دیگه، این کار باعث درگیری و کندی می‌شه، چون چند thread ممکنه با هم دسترسی به داده‌ها رو به اشتراک بذارند و قفل‌گذاری بشه. اما ردیس با استفاده از تنها یک thread این مشکل رو حل کرده و خیلی سریع‌تر عمل می‌کنه.
۳. مدیریت درخواست‌ها با I/O Multiplexing
حالا بریم سراغ یکی از بخش‌های جالب ردیس که معمولاً خیلی مورد توجه قرار نمی‌گیره، ولی درواقع دلیل اصلی سرعت بالای ردیسه: I/O Multiplexing. این تکنیک به ردیس این امکان رو می‌ده که بتونه با یه thread تعداد زیادی درخواست رو به‌طور همزمان مدیریت کنه. حالا شاید بپرسید: چطور ممکنه؟
در دیتابیس‌های معمولی، وقتی چندین درخواست به سیستم می‌رسه، معمولاً هر درخواست برای پردازش نیاز به یه thread جداگانه داره. این یعنی سیستم باید چندین thread رو به‌صورت همزمان اجرا کنه و این باعث می‌شه که هم سرعت کاهش پیدا کنه و هم مصرف منابع بیشتر بشه.
اما ردیس با استفاده از I/O Multiplexing این مشکل رو حل کرده. این تکنیک به ردیس این امکان رو می‌ده که فقط با یک thread بتونه همه درخواست‌ها رو مدیریت کنه. چطور؟ اینطور که ردیس از یه مکانیسم پیچیده برای مدیریت ورودی و خروجی (I/O) استفاده می‌کنه. وقتی درخواست‌ها به سیستم می‌رسه، ردیس به‌طور موقت اون‌ها رو نگه می‌داره و به محض اینکه منابع آزاد بشه، جواب می‌ده. به این ترتیب ردیس می‌تونه با یه thread چندین درخواست رو به‌طور همزمان پردازش کنه بدون اینکه منتظر بشه یا منابع رو قفل کنه.
این کار باعث می‌شه که ردیس از نظر سرعت و کارایی خیلی بهتر از سیستم‌هایی باشه که از چندین thread برای پردازش درخواست‌ها استفاده می‌کنن. در واقع I/O Multiplexing به ردیس این امکان رو می‌ده که به‌طور همزمان و با کمترین میزان تأخیر، چندین درخواست رو پردازش کنه و این یعنی سرعت بالا و پاسخ‌دهی سریع.
در نهایت، این تکنیک به ردیس اجازه می‌ده که در مقیاس بزرگ، حتی با تعداد زیادی درخواست هم عملکرد خودش رو حفظ کنه و به طور موثر منابع رو مدیریت کنه. این یعنی هیچ وقت ردیس از پس بار سنگین درخواست‌ها برنمیاد و همیشه سریع و کارآمد باقی می‌مونه.
در نهایت، این ویژگی‌ها باعث می‌شه که ردیس سریع‌ترین و کارآمدترین گزینه برای کار با داده‌ها باشه، به خصوص برای برنامه‌هایی که نیاز به پاسخ‌دهی سریع دارن.


<Reza Annabestani/>
https://t.me/addlist/KpzXaiSpKENkMGM0
👍5💘1
اگه میخوای بیشتر در مورد انواع ایندکس های دیتابیس بدونی پیشنهاد میکنم این سری آموزش ویدیویی از PlanetScale رو ببین.

دیدن ش دید عمیق تری بهت میده که بهتر از ایندکس ها استفاده کنی.

لیست موضوعاتی که پوشش داده
Introduction to indexes
B+ trees
Primary keys
Secondary keys
Primary key data types
Where to add indexes
Index selectivity
Prefix indexes
Composite indexes
Covering indexes
Functional indexes
Indexing JSON columns
Indexing for wildcard searches
Fulltext indexes
Invisible indexes
Duplicate indexes
Foreign keys

https://planetscale.com/learn/courses/mysql-for-developers/indexes/introduction-to-indexes

How do Database Indexes Work?
https://planetscale.com/blog/how-do-database-indexes-work

<Hossein Nazari/>


https://t.me/addlist/KpzXaiSpKENkMGM0
👍6
🔵 عنوان مقاله
2. Optimizing Postgres Table Layout for Maximum Efficiency

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

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


👑 @Database_Academy
👍1
🔵 عنوان مقاله
3. Can Postgres Replace Redis as a Cache?

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته به مقایسه بین Redis و Postgres برای استفاده به‌عنوان سرور ذخيره‌سازی داده‌ها می‌پردازد. Redis به دلیل عملکرد بالا در ذخیره‌سازی داده‌ها در حافظه و استفاده گسترده برای کش کردن، شناخته شده است. این مقاله بررسی می‌کند که آیا می‌توان از Postgres، که یک سیستم مدیریت پایگاه داده‌های رابطه‌ای است، به جای Redis استفاده کرد. سوال اصلی مقاله این است که آیا Postgres می‌تواند برای همه کارها به کار رود و نقش Redis را در ذخیره سازی داده‌ها با عملکرد بالا و caching عهده‌دار شود. در نتیجه، مقاله تلاش می‌کند تا با بررسی تفاوت‌های عملکردی و کاربردی بین این دو سیستم، به این سوال پاسخ دهد. این بررسی به خوانندگان کمک می‌کند تا تصمیم گیری بهتری در مورد انتخاب سیستم مدیریت داده مناسب برای نیازهای خاص خود داشته باشند.

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


👑 @Database_Academy
👍21
🔵 عنوان مقاله
5. Hacking on PostgreSQL is Really Hard

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

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


👑 @Database_Academy
👍1
🔵 عنوان مقاله
Building AI Apps on Postgres? Start with pgai

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

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


👑 @Database_Academy
🔵 عنوان مقاله
pg_incremental: Incremental Data Processing in Postgres

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

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


👑 @Database_Academy
Forwarded from Bardia & Erfan
🌟 سلام دوستای عزیز! 🌟

ما توی فرنا دنبال بهتر کردن خدماتمون هستیم و نظرات ارزشمند شما خیلی کمکمون می‌کنه. 🙌
لطفاً چند دقیقه وقت بذارید و این پرسشنامه کوتاه رو تکمیل کنید:
https://survey.porsline.ir/s/0AjaP0g

ممنون از همراهیتون! 💖

#تجربه_کاربری
#بازخورد
#آموزش_آنلاین
#فرنا_آکادمی
#بهبود_خدمات
#نظرسنجی
#یادگیری_دیجیتال
#همراهی_شما
#آموزش_تخصصی
👍1
ویکی postgresql یه لیستی از anti-patternهارو لیست کرده و در موردشون توضیح داده، خوبه که لیست رو ببینید، احتمالش زیاده همین الان، در لحظه چند تا از این anti-patternهارو در حال استفاده باشید که بهتره جایگزین کنید.
مثلا NOT IN یا BETWEEN شاید استفاده ش کم نباشه تو کوئری ها.

https://wiki.postgresql.org/wiki/Don%27t_Do_This

<Hossein Nazari/>


https://t.me/addlist/KpzXaiSpKENkMGM0
👍1
تو دیتابیس ها یه مفهومی وجود داره به اسم clustered index که در مقابلش non clustered index قرار میگیره

خب این clustered index یعنی چی؟ یعنی اینکه ترتیبی که داده ها در ایندکس قرار میگیرن، همون ترتیبی هست که داده ها در فایل و دیسک ذخیره میشن.

بنابراین هر جدول دیتابیس فقط میتونه یه clustered index داشته باشه که معمولا primary key هست.

کجا ها clustered index مهمه؟ جاهایی که شما range query یا sequential scan داری مهم میشه

چرا مهم میشه؟ چون دیتابیس با تعداد io کمتر رکوردهارو از فایل و دیسک fetch میکنه

حالا قرار دادن یه guid مثل uuid به عنوان primary key چه بلایی سر clustered index میاره؟ عملا رکوردهایی که در ایندکس دارن مرتب میشن میتونن تو فایل های مختلفی از دیسک scatter بشن و هزینه fetch کردن شون در کوئری های range رو بالا ببره.

یه سری دیتابیس ها یه سری بهبود برای این قضیه دارن، مثلا یه implicit primary key خودشون در نظر میگیرن که incremental integer هست و اون رو clustered index در نظر میگیرن.

Be careful with GUID as clustered index
https://blog.novanet.no/careful-with-guid-as-clustered-index/


<Hossein Nazari/>


https://t.me/addlist/KpzXaiSpKENkMGM0
👍1
🔵 عنوان مقاله
Some of My Favorite Things – Postgres Queries

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

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


👑 @Database_Academy
🙏1
🔵 عنوان مقاله
4. pgPedia: A Postgres Encyclopedia of Sorts

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

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


👑 @Database_Academy
Forwarded from Gopher Job
این سایت داده‌های خوبی در مورد حقوق توی شرکت‌های اروپایی توی کشورهای مختلف رو داره که میتونید ازش برای کاریابی استفاده کنید.

https://techpays.eu


https://t.me/addlist/KpzXaiSpKENkMGM0
🔵 عنوان مقاله
1. SQL Query Optimization: A Comprehensive Developer's Guide

🟢 خلاصه مقاله:
این مقاله به بررسی بهینه‌سازی دستورات SELECT، INSERT و DELETE در پایگاه داده می‌پردازد. این بهینه‌سازی‌ها شامل استفاده از ایندکس‌ها، صفحه‌بندی نتایج، اجتناب از اتصال‌ها (جوین‌ها) و استفاده از توابع پنجره‌ای است که می‌توانند در مواقعی مفید واقع شوند یا خیر. مقاله با تمرکز بر پایگاه داده Postgres نوشته شده است، اما مفاهیم ارائه شده می‌توانند در سایر سیستم‌های مدیریت پایگاه داده نیز کاربرد داشته باشند. از نکات مهم در بهینه‌سازی دستورات پایگاه داده، استفاده بهینه از ایندکس‌ها برای افزایش سرعت و کارایی درخواست‌ها، کنترل حجم داده‌های مورد پردازش با صفحه‌بندی و کاهش وابستگی به جوین‌ها که ممکن است باعث کندی سیستم شوند، است. این موارد به توسعه دهندگان کمک می‌کند تا دستورات SQL خود را برای کارایی بیشتر بهینه‌سازی کنند.

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


👑 @Database_Academy
🔵 عنوان مقاله
Ruby Active Record Adapter for AWS Aurora DSQL

🟢 خلاصه مقاله:
این مقاله به بررسی اتصالات اولیهِ Active Record در Ruby on Rails به پایگاه داده جدید آمازون، Aurora DSQL می‌پردازد. Aurora DSQL یک سرویس پایگاه داده توزیع شده و بدون سرور است که با Postgres سازگار است. تلاش‌های اولیه برای گسترش یک اَداپتور اتصال Active Record برای این پایگاه داده جدید شرح داده شده است. این اداپتور امکان استفاده از قابلیت‌های پیشرفته Aurora DSQL را در چارچوب Ruby on Rails فراهم می‌کند و به توسعه‌دهندگان این امکان را می‌دهد که به راحتی بتوانند از امکانات پایگاه داده توزیع‌شده در برنامه‌های خود استفاده کنند. مقاله همچنین به چالش‌ها و مزایای فنی مرتبط با پیاده‌سازی این اتصال در محیط سرورلس می‌پردازد و به خصوص تاکیدی بر اهمیت تطابق و سازگاری با Postgres دارد.

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


👑 @Database_Academy
🔵 عنوان مقاله
Idle Transactions Cause Table Bloat? Wait, What?

🟢 خلاصه مقاله:
مقاله مورد نظر به بررسی و تأثیر تراکنش‌های بیکار (idle transactions) بر روی مشکل شکوفایی جدول (table bloat) در پایگاه‌داده‌ها می‌پردازد. نویسنده توضیح می‌دهد که چگونه تراکنش‌هایی که بدون دستکاری فعال و طولانی مدت باقی می‌مانند، می‌توانند سبب افزایش حجم غیر ضروری جداول شوند، به طوری که حتی فرآیند خودکار وکیوم (vacuum) نیز نمی‌تواند این مشکل را به طور مؤثر رفع کند. این امر به دلیل آن است که تراکنش‌های بیکار به حفظ داده‌های قدیمی و نامورد نیاز در پایگاه داده منجر شده، که فضای بیشتری را اشغال می‌کند و بهره‌وری پایگاه‌داده را کاهش می‌دهد. نویسنده بر اهمیت مدیریت صحیح تراکنش‌ها و استفاده از رویه‌های بهینه جهت جلوگیری از این مشکل تأکید می‌کند و راهکارهایی جهت اجتناب از تراکنش‌های بیکار را پیشنهاد می‌دهد.

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


👑 @Database_Academy
🔵 عنوان مقاله
pg_mooncake: Fast Columnstore Tables in Postgres for Analytics

🟢 خلاصه مقاله:
مقاله‌ای که مورد بحث قرار گرفته به توصیف یک افزونه‌ برای Postgres می‌پردازد که امکان ذخیره‌سازی ستونی و اجرای برداری را به وسیله DuckDB برای تحلیل‌های سریع درون Postgres فراهم می‌کند. جداول ستونی در قالب جداول Iceberg یا Delta Lake ذخیره می‌شوند که می‌توانند روی سیستم فایل محلی یا ذخیره‌سازی ابری قرار گیرند. نسخه‌ 0.1 این افزونه به تازگی معرفی شده است. این فناوری جدید امکان بهبود چشمگیری در سرعت و کارآیی تحلیل های داده‌ای در محیط Postgres را فراهم می‌آورد، به خصوص برای داده‌های بزرگ که نیاز به اجرا و تجزیه و تحلیل سریع دارند. این ارتقاء در نحوه پردازش و تحلیل داده‌ها در پایگاه‌های داده معمولی می‌تواند تحول ایجاد کند.

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


👑 @Database_Academy
🔵 عنوان مقاله
The Anatomy of Table-Level Locks

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

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


👑 @Database_Academy
👍1🙏1
👏4