Category

Database Engineering

SQL, NoSQL, query optimization and data modeling

89 posts

مبادلات ACID: تعادل بین سازگاری و دسترس‌پذیری در تراکنش‌های توزیع‌شده

در روزهای اولیه پایگاه‌های داده رابطه‌ای، ویژگی‌های ACID معیار طلایی یکپارچگی داده بودند. اما با مقیاس‌پذیری افقی سیستم‌ها، تضمین‌های سخت‌گیرانه ACID با واقعیت‌های محاسبات توزیع‌شده در تضاد قرار گرفت.

الگوهای پیشرفته ایندکس‌گذاری: ایندکس‌های پوششی، جزئی و مرکب برای بهینه‌سازی کوئری‌های پیچیده

در مهندسی پایگاه داده، ایجاد ایندکس‌ها اغلب اولین خط دفاعی در برابر کوئری‌های کند است. با این حال، برای توسعه‌دهندگان متوسط تا پیشرفته، رویکرد پیش‌فرض «ایجاد ایندکس روی این ستون» به ندرت برای برنامه‌های با عملکرد بالا کافی است. برای بهینه‌سازی واقعی بارهای کاری پیچیده...

پیاده‌سازی SSPI در PostgreSQL با تراکنش بالا

انتخاب سطح ایزولاسیون مناسب در PostgreSQL اغلب تعادلی بین یکپارچگی داده‌ها و عملکرد سیستم است. اگرچه READ COMMITTED پیش‌فرض است و عملکرد بالایی دارد، اما در برابر خواندن‌های تکرارناپذیر و خواندن‌های فانتوم آسیب‌پذیر است. در انتهای دیگر طیف، SERIALIZABL...

تحقیق عمیق در MVCC: حل مشکل خواندن فانتوم

کنترل همزمانی نسخه‌ای (MVCC) ستون فقرات پایگاه‌داده‌های تراکنشی مدرن است. اگرچه در جلوگیری از مسدود شدن خوانندگان توسط نویسندگان و برعکس عالی عمل می‌کند، اما ناهنجاری‌های همزمانی ظریفی مانند خواندن فانتوم و انحراف نوشتن را ایجاد می‌کند. برای مهندسانی که برنامه‌های با همزمانی بالا می‌سازند...

پیاده‌سازی Redis Streams برای کش‌گذاری و همگام‌سازی داده‌های بلادرنگ مبتنی بر رویداد

در چشم‌انداز مدرن سیستم‌های توزیع‌شده، اطمینان از یکپارچگی داده‌ها در خدمات مختلف در حالی که تأخیر کم حفظ می‌شود، یک چالش مهندسی حیاتی است. راهبردهای کش‌گذاری سنتی اغلب با طوفان‌های نامعتبرسازی و مشکلات داده‌های منسوخ دست‌وپنج نرم می‌کنند. ورود Redis Streams: یک ویژگی قدرتمند که سرعت Redis را با تضمین‌های پایداری و ترتیب صف‌های پیام ترکیب می‌کند. این پست بررسی می‌کند که چگونه می‌توان از Redis Streams برای ساخت معماری‌های بلادرنگ و مبتنی بر رویداد برای کش‌گذاری و همگام‌سازی داده‌ها استفاده کرد.

مقیاس‌پذیری با هوشمندی: الگوهای پیشرفته ردیس فراتر از کش‌گذاری ساده

برای بسیاری از توسعه‌دهندگان، ردیس با الگوی کش-آزاد (Cache-Aside) هم‌معنی است: بررسی سریع در پایگاه داده، جستجو در حافظه و نوشتن در صورت عدم یافتن. اگرچه این روش برای بارهای کاری سبک‌خوانی ساده موثر است، سیستم‌های توزیع‌شده مدرن از لایه کش خود انتظار بیشتری دارند. با مقیاس‌پذیر شدن برنامه‌ها، نیاز به مدیریت وضعیت پیچیده، محدودسازی نرخ در زمان واقعی و خدمات مبتنی بر مکان حیاتی می‌شود.

تسلط بر قفل‌های توزیع‌شده: پیشگیری از شرایط مسابقه با Redis در سیستم‌های با همزمانی بالا

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