Forwarded from DevOps Labdon
🔵 عنوان مقاله
Redis Users Want a Change (3 minute read)
🟢 خلاصه مقاله:
تغییرات اخیر در لایسنس Redis باعث شده است که 75٪ از کاربران آن به دنبال جایگزینهایی باشند، که در این میان فورک متنباز Valkey مورد توجه قابل توجهی قرار گرفته است. بر اساس نظرسنجی، 63٪ از کاربران با Valkey آشنایی دارند. با توجه به این تغییرات لایسنس، بسیاری از سازمانها در حال ارزیابی Valkey به دلیل پشتیبانی متنباز آن هستند. ارائه پشتیبانی عملیاتی قابل اطمینان برای پذیرش گسترده این فورک، حیاتی خواهد بود. این تغییرات نشاندهنده نیاز به توجه به نگرانیهای کاربران در مورد مدیریت لایسنسهای نرمافزاری و همچنین اهمیت پشتیبانی متنباز در جذب و حفظ کاربران فعال است.
🟣لینک مقاله:
https://thenewstack.io/redis-users-want-a-change/?utm_source=tldrdevops
➖➖➖➖➖➖➖➖
👑 @DevOps_Labdon
Redis Users Want a Change (3 minute read)
🟢 خلاصه مقاله:
تغییرات اخیر در لایسنس Redis باعث شده است که 75٪ از کاربران آن به دنبال جایگزینهایی باشند، که در این میان فورک متنباز Valkey مورد توجه قابل توجهی قرار گرفته است. بر اساس نظرسنجی، 63٪ از کاربران با Valkey آشنایی دارند. با توجه به این تغییرات لایسنس، بسیاری از سازمانها در حال ارزیابی Valkey به دلیل پشتیبانی متنباز آن هستند. ارائه پشتیبانی عملیاتی قابل اطمینان برای پذیرش گسترده این فورک، حیاتی خواهد بود. این تغییرات نشاندهنده نیاز به توجه به نگرانیهای کاربران در مورد مدیریت لایسنسهای نرمافزاری و همچنین اهمیت پشتیبانی متنباز در جذب و حفظ کاربران فعال است.
🟣لینک مقاله:
https://thenewstack.io/redis-users-want-a-change/?utm_source=tldrdevops
➖➖➖➖➖➖➖➖
👑 @DevOps_Labdon
The New Stack
Redis Users Want a Change
Open source Valkey is emerging as a top contender for the 75% of companies concerned about Redis’ licensing change, finds Percona research.
🔵 عنوان مقاله
Building AI Apps on Postgres? Start with pgai
🟢 خلاصه مقاله:
مقاله مربوط به پسوند PostgreSQL با عنوان pgai پرداخته است که قابلیتهای هوش مصنوعی را به این دیتابیس اضافه میکند. این پسوند امکان ایجاد ویژگیها و تکمیل مدلها را برای کاربران فراهم میآورد، و از این طریق به توسعهدهندگان اجازه میدهد تا نرمافزارهایی با قابلیت جستجوی پیشرفته و بازیابی اطلاعات را به راحتی بسازند. pgai با استفاده از عملکردهایی نظیر ساخت امبد (embedding) و تکمیل مدل، به توسعهدهندگان کمک میکند تا با بهرهگیری از قابلیتهای هوش مصنوعی، اپلیکیشنهایی با کارایی بالا را توسعه دهند. انتهای مقاله نیز بر این نکته تاکید دارد که pgai به سادهسازی و قدرتمندسازی برنامهنویسی با استفاده از AI در محیط PostgreSQL کمک شایانی میکند.
🟣لینک مقاله:
https://postgresweekly.com/link/160786/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
Building AI Apps on Postgres? Start with pgai
🟢 خلاصه مقاله:
مقاله مربوط به پسوند PostgreSQL با عنوان pgai پرداخته است که قابلیتهای هوش مصنوعی را به این دیتابیس اضافه میکند. این پسوند امکان ایجاد ویژگیها و تکمیل مدلها را برای کاربران فراهم میآورد، و از این طریق به توسعهدهندگان اجازه میدهد تا نرمافزارهایی با قابلیت جستجوی پیشرفته و بازیابی اطلاعات را به راحتی بسازند. pgai با استفاده از عملکردهایی نظیر ساخت امبد (embedding) و تکمیل مدل، به توسعهدهندگان کمک میکند تا با بهرهگیری از قابلیتهای هوش مصنوعی، اپلیکیشنهایی با کارایی بالا را توسعه دهند. انتهای مقاله نیز بر این نکته تاکید دارد که pgai به سادهسازی و قدرتمندسازی برنامهنویسی با استفاده از AI در محیط PostgreSQL کمک شایانی میکند.
🟣لینک مقاله:
https://postgresweekly.com/link/160786/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
GitHub
GitHub - timescale/pgai: Bring AI models closer to your PostgreSQL data
Bring AI models closer to your PostgreSQL data. Contribute to timescale/pgai development by creating an account on GitHub.
🔵 عنوان مقاله
How We Built a Content Recommendation System with Pgai and Pgvectorscale
🟢 خلاصه مقاله:
مقالهای که مورد بررسی قرار گرفته، به بحث در مورد pgvectorscale پرداخته، که یک افزونه برای pgvector است و از دو ویژگی اصلی تشکیل شده است. اولین ویژگی، پشتیبانی از ایندکس StreamingDiskANN است که به بهبود جستجو در دیتابیسهای بزرگ کمک میکند. ویژگی دوم، بهبود quantization میباشد که به فشردهسازی دادهها و کاهش حجم اطلاعات نیازمند برای ذخیرهسازی و پردازش کمک میکند. این افزونه با هدف ارتقا قابلیتهای pgvector طراحی شده، که خود بر اساس ذخیرهسازی و جستجوی کارآمد بردارها در پایگاههای دادهی PostgreSQL میباشد. با استفاده از pgvectorscale، کاربران قادر به مدیریت دادههای برداری بزرگتر و پیچیدهتر به طرز موثری هستند، در حالی که هزینههای زمانی و مالی مرتبط با پردازش این دادهها را کاهش میدهند.
🟣لینک مقاله:
https://postgresweekly.com/link/160798/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
How We Built a Content Recommendation System with Pgai and Pgvectorscale
🟢 خلاصه مقاله:
مقالهای که مورد بررسی قرار گرفته، به بحث در مورد pgvectorscale پرداخته، که یک افزونه برای pgvector است و از دو ویژگی اصلی تشکیل شده است. اولین ویژگی، پشتیبانی از ایندکس StreamingDiskANN است که به بهبود جستجو در دیتابیسهای بزرگ کمک میکند. ویژگی دوم، بهبود quantization میباشد که به فشردهسازی دادهها و کاهش حجم اطلاعات نیازمند برای ذخیرهسازی و پردازش کمک میکند. این افزونه با هدف ارتقا قابلیتهای pgvector طراحی شده، که خود بر اساس ذخیرهسازی و جستجوی کارآمد بردارها در پایگاههای دادهی PostgreSQL میباشد. با استفاده از pgvectorscale، کاربران قادر به مدیریت دادههای برداری بزرگتر و پیچیدهتر به طرز موثری هستند، در حالی که هزینههای زمانی و مالی مرتبط با پردازش این دادهها را کاهش میدهند.
🟣لینک مقاله:
https://postgresweekly.com/link/160798/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
Timescale Blog
How We Built a Content Recommendation System With Pgai and Pgvectorscale
Learn how and why Pondhouse Data built a content recommendation system using pgai and pgvectorscale, and how to access these AI tools for your use case.
👍1
چرا استفاده از فیلدهای JSON در دادههای تراکنشی ریسک دارد؟
خیلی وسوسهانگیز است که از فیلدهای JSON برای ذخیرهسازی دادههای غیرساختاریافته استفاده کنیم، اما برای دادههای تراکنشی این یک تصمیم پر ریسک است. بیایید به دلایلش نگاهی بیندازیم:
کاهش کارایی جستجو: فیلدهای JSON نمیتوانند به خوبی جداول ساختاریافته از ایندکسهای کارآمد استفاده کنند. این یعنی جستجوهای شما کندتر میشود، که در دادههای تراکنشی که نیاز به سرعت بالا دارند، فاجعه است.
کاهش نرمالسازی و ساختار: پایگاههای داده رابطهای طراحی شدهاند تا روابط بین دادهها را مدیریت کنند. استفاده زیاد از JSON میتواند دادههای غیر نرمال بسازد، که مدیریت و بهروزرسانی آنها را سخت میکند و به ناسازگاریهای داده منجر میشود.
مشکل در صحت دادهها: در جداول نرمالسازی شده، محدودیتهایی مثل نوع داده و روابط وجود دارد که مانع ورود دادههای نادرست میشوند. ولی در JSON، این کنترلها وجود ندارد، پس ممکن است به راحتی دادههای ناسازگار داشته باشید.
گزارشگیری سختتر: اکثر ابزارهای گزارشگیری با دادههای ساختاریافته بهتر کار میکنند. برای استفاده از دادههای JSON باید آنها را تجزیه و ساختاردهی کنید که وقتگیر است و روی سرعت تأثیر میگذارد.
مدیریت پیچیدهتر تراکنشها: اگر بخواهید دادههای مختلفی را در یک فیلد JSON همزمان بهروزرسانی کنید، مدیریت تراکنشها سختتر و پیچیدهتر میشود.
پس چکار کنیم؟
از ترکیب جداول رابطهای و JSON به شکل هوشمندانه استفاده کنیم.
برای دادههای غیرساختاریافته جداول مرتبط ایجاد کنیم.
فقط در صورت لزوم روی فیلدهای JSON ایندکس بگذاریم.
طرحی برای مهاجرت تدریجی به ساختارهای بهتر داشته باشیم.
چکار نکنیم؟
کل دادههای مهم را در JSON ذخیره نکنیم.
به جای نرمالسازی از JSON استفاده نکنیم.
نوع JSON را برای دادههایی که مرتب تغییر میکنند به کار نبریم.
در نهایت، برای دادههای تراکنشی که سرعت، جستجوی مکرر و صحت داده اهمیت دارند، بهتر است به جداول نرمالسازی شده پایبند بمانیم و از JSON فقط در موارد ضروری استفاده کنیم. و اگر احساس میکنید این محدودیتها زیاد است، راهحلهایی مثل Cassandra و Google Bigtable را جدی بگیرید! یادتان باشد، مشکلات پرفرمنس میتوانند خیلی زودتر از چیزی که فکرش را بکنید، کسب و کار شما را تهدید کنند.
خیلی وسوسهانگیز است که از فیلدهای JSON برای ذخیرهسازی دادههای غیرساختاریافته استفاده کنیم، اما برای دادههای تراکنشی این یک تصمیم پر ریسک است. بیایید به دلایلش نگاهی بیندازیم:
کاهش کارایی جستجو: فیلدهای JSON نمیتوانند به خوبی جداول ساختاریافته از ایندکسهای کارآمد استفاده کنند. این یعنی جستجوهای شما کندتر میشود، که در دادههای تراکنشی که نیاز به سرعت بالا دارند، فاجعه است.
کاهش نرمالسازی و ساختار: پایگاههای داده رابطهای طراحی شدهاند تا روابط بین دادهها را مدیریت کنند. استفاده زیاد از JSON میتواند دادههای غیر نرمال بسازد، که مدیریت و بهروزرسانی آنها را سخت میکند و به ناسازگاریهای داده منجر میشود.
مشکل در صحت دادهها: در جداول نرمالسازی شده، محدودیتهایی مثل نوع داده و روابط وجود دارد که مانع ورود دادههای نادرست میشوند. ولی در JSON، این کنترلها وجود ندارد، پس ممکن است به راحتی دادههای ناسازگار داشته باشید.
گزارشگیری سختتر: اکثر ابزارهای گزارشگیری با دادههای ساختاریافته بهتر کار میکنند. برای استفاده از دادههای JSON باید آنها را تجزیه و ساختاردهی کنید که وقتگیر است و روی سرعت تأثیر میگذارد.
مدیریت پیچیدهتر تراکنشها: اگر بخواهید دادههای مختلفی را در یک فیلد JSON همزمان بهروزرسانی کنید، مدیریت تراکنشها سختتر و پیچیدهتر میشود.
پس چکار کنیم؟
از ترکیب جداول رابطهای و JSON به شکل هوشمندانه استفاده کنیم.
برای دادههای غیرساختاریافته جداول مرتبط ایجاد کنیم.
فقط در صورت لزوم روی فیلدهای JSON ایندکس بگذاریم.
طرحی برای مهاجرت تدریجی به ساختارهای بهتر داشته باشیم.
چکار نکنیم؟
کل دادههای مهم را در JSON ذخیره نکنیم.
به جای نرمالسازی از JSON استفاده نکنیم.
نوع JSON را برای دادههایی که مرتب تغییر میکنند به کار نبریم.
در نهایت، برای دادههای تراکنشی که سرعت، جستجوی مکرر و صحت داده اهمیت دارند، بهتر است به جداول نرمالسازی شده پایبند بمانیم و از JSON فقط در موارد ضروری استفاده کنیم. و اگر احساس میکنید این محدودیتها زیاد است، راهحلهایی مثل Cassandra و Google Bigtable را جدی بگیرید! یادتان باشد، مشکلات پرفرمنس میتوانند خیلی زودتر از چیزی که فکرش را بکنید، کسب و کار شما را تهدید کنند.
👍2
🔵 عنوان مقاله
TimescaleDB 2.17.0: Time-Series Extension for Postgres
🟢 خلاصه مقاله:
مقالهای که بررسی شده است به ارائه بینشهایی پیرامون آخرین نسخه از یک افزونه محبوب میپردازد که برای کار با دادههای دنباله زمانی در مقیاس بزرگ طراحی شده است. در این نسخه، پشتیبانی کامل از Postgres 17 ارائه شده است که این امکان را به کاربران میدهد تا از جدیدترین ویژگیها و بهینهسازیهای این پایگاه داده بهره ببرند. همچنین، بهینهسازیهای جدید SIMD به افزایش عملکرد برای پرسوجوهای تحلیلی زمانواقعی بر روی جداول فشرده شده یا hypertables کمک میکند. این بهبودها به کاربران اجازه میدهند تا با سرعت بیشتری دادههای زمانی را تحلیل و استخراج کنند، در نتیجه افزایش کارایی در کار با حجم زیادی از دادهها را تجربه کنند.
🟣لینک مقاله:
https://postgresweekly.com/link/160806/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
TimescaleDB 2.17.0: Time-Series Extension for Postgres
🟢 خلاصه مقاله:
مقالهای که بررسی شده است به ارائه بینشهایی پیرامون آخرین نسخه از یک افزونه محبوب میپردازد که برای کار با دادههای دنباله زمانی در مقیاس بزرگ طراحی شده است. در این نسخه، پشتیبانی کامل از Postgres 17 ارائه شده است که این امکان را به کاربران میدهد تا از جدیدترین ویژگیها و بهینهسازیهای این پایگاه داده بهره ببرند. همچنین، بهینهسازیهای جدید SIMD به افزایش عملکرد برای پرسوجوهای تحلیلی زمانواقعی بر روی جداول فشرده شده یا hypertables کمک میکند. این بهبودها به کاربران اجازه میدهند تا با سرعت بیشتری دادههای زمانی را تحلیل و استخراج کنند، در نتیجه افزایش کارایی در کار با حجم زیادی از دادهها را تجربه کنند.
🟣لینک مقاله:
https://postgresweekly.com/link/160806/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
GitHub
Release 2.17.0 (2024-10-08) · timescale/timescaledb
This release adds support for PostgreSQL 17, significantly improves the performance of continuous aggregate refreshes, and contains performance improvements for analytical queries and delete operat...
👍1
🔵 عنوان مقاله
Convert JSON into Columns and Rows with JSON_TABLE
🟢 خلاصه مقاله:
مقالهای که مورد بررسی قرار گرفته به معرفی قابلیت جدید در نسخه 17 پایگاه داده Postgres، یعنی تابع JSON_TABLE پرداخته است. این تابع امکان استعلام دادههای JSON را فراهم میکند و نتایج را در یک نمای رابطهای معمولی به نمایش میگذارد. نویسنده مقاله، پل، یک مورد کاربرد عملی از این ویژگی را نیز ارائه داده که به خوانندگان کمک میکند تا درک بهتری از چگونگی استفاده و کاربردهای این قابلیت داشته باشند. این تابع برای کاربرانی که با دادههای JSON کار میکنند و مایل به مشاهده این دادهها در قالب جداول رابطهای هستند، مفید خواهد بود. JSON_TABLE در واقع پلی میان دادههای ساخت یافتۀ JSON و دنیای پایگاهدادههای رابطهای است که تجزیه و تحلیل داده را آسانتر میکند.
🟣لینک مقاله:
https://postgresweekly.com/link/161088/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
Convert JSON into Columns and Rows with JSON_TABLE
🟢 خلاصه مقاله:
مقالهای که مورد بررسی قرار گرفته به معرفی قابلیت جدید در نسخه 17 پایگاه داده Postgres، یعنی تابع JSON_TABLE پرداخته است. این تابع امکان استعلام دادههای JSON را فراهم میکند و نتایج را در یک نمای رابطهای معمولی به نمایش میگذارد. نویسنده مقاله، پل، یک مورد کاربرد عملی از این ویژگی را نیز ارائه داده که به خوانندگان کمک میکند تا درک بهتری از چگونگی استفاده و کاربردهای این قابلیت داشته باشند. این تابع برای کاربرانی که با دادههای JSON کار میکنند و مایل به مشاهده این دادهها در قالب جداول رابطهای هستند، مفید خواهد بود. JSON_TABLE در واقع پلی میان دادههای ساخت یافتۀ JSON و دنیای پایگاهدادههای رابطهای است که تجزیه و تحلیل داده را آسانتر میکند.
🟣لینک مقاله:
https://postgresweekly.com/link/161088/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
Crunchy Data
Convert JSON into Columns and Rows with JSON_TABLE | Crunchy Data Blog
Paul shows you how to easily load JSON into Postgres relational format with JSON_TABLE, just released in Postgres 17.
🔵 عنوان مقاله
Is pg_dump a 'Backup' Tool?
🟢 خلاصه مقاله:
مقاله به بررسی ابزار pg_dump میپردازد که عمدتاً برای تهیهی پشتیبان از دادهها استفاده میشود. اگرچه مدارک رسمی آن به عنوان ابزاری برای خروجی گرفتن از دادهها به آن اشاره کردهاند، نویسنده به تحلیل این نکته پرداخته که چرا این تعریف مطرح شده است. رابرت، که در مقاله به او اشاره شده، نیز در پی فهمیدن دلیل تأکید مستندات بر این تفسیر است. پرسش اصلی این است که آیا تعریف ابزار pg_dump به عنوان ابزار خروجی داده به جای ابزار پشتیبانگیری، تأثیری بر نحوه استفاده کاربران از آن دارد یا خیر. تحلیلها نشان میدهد که این نوع تعریف ممکن است در درک و استفاده کاربران از این ابزار تأثیر بگذارد.
🟣لینک مقاله:
https://postgresweekly.com/link/161098/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
Is pg_dump a 'Backup' Tool?
🟢 خلاصه مقاله:
مقاله به بررسی ابزار pg_dump میپردازد که عمدتاً برای تهیهی پشتیبان از دادهها استفاده میشود. اگرچه مدارک رسمی آن به عنوان ابزاری برای خروجی گرفتن از دادهها به آن اشاره کردهاند، نویسنده به تحلیل این نکته پرداخته که چرا این تعریف مطرح شده است. رابرت، که در مقاله به او اشاره شده، نیز در پی فهمیدن دلیل تأکید مستندات بر این تفسیر است. پرسش اصلی این است که آیا تعریف ابزار pg_dump به عنوان ابزار خروجی داده به جای ابزار پشتیبانگیری، تأثیری بر نحوه استفاده کاربران از آن دارد یا خیر. تحلیلها نشان میدهد که این نوع تعریف ممکن است در درک و استفاده کاربران از این ابزار تأثیر بگذارد.
🟣لینک مقاله:
https://postgresweekly.com/link/161098/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
Blogspot
Is pg_dump a Backup Tool?
Recently, I've been hearing a lot of experienced PostgreSQL users reiterate this line: " pg_dump is not a backup tool." In fact, the docume...
🔵 عنوان مقاله
SQL/JSON is Here (Somewhat!)
🟢 خلاصه مقاله:
مقالهای که بررسی شده به بررسی امکانات JSON در Postgres 17 میپردازد. SQL/JSON بهطور گستردهای بهعنوان یک زبان مسیر، توابع کوآری و عملگرها برای کار با دادههای JSON از طریق SQL شناخته شده است. JSON_TABLE در این میان تنها یک قسمت از تجربه کار با SQL/JSON را تشکیل میدهد و به نظر میرسد که Postgres 17 تواناییهای جدیدی به این میز اضافه کرده است. این افزودنیها شامل بهبودهایی در زمینه پردازش و تحلیل دادههای JSON داخل پایگاه داده SQL میباشد. تمرکز اصلی در این بخش بر بررسی و ارزیابی این قابلیتهای جدید است که قادر به افزایش کارآمدی و انعطافپذیری در مدیریت و تحلیل دادههای JSON خواهد بود.
🟣لینک مقاله:
https://postgresweekly.com/link/161090/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
SQL/JSON is Here (Somewhat!)
🟢 خلاصه مقاله:
مقالهای که بررسی شده به بررسی امکانات JSON در Postgres 17 میپردازد. SQL/JSON بهطور گستردهای بهعنوان یک زبان مسیر، توابع کوآری و عملگرها برای کار با دادههای JSON از طریق SQL شناخته شده است. JSON_TABLE در این میان تنها یک قسمت از تجربه کار با SQL/JSON را تشکیل میدهد و به نظر میرسد که Postgres 17 تواناییهای جدیدی به این میز اضافه کرده است. این افزودنیها شامل بهبودهایی در زمینه پردازش و تحلیل دادههای JSON داخل پایگاه داده SQL میباشد. تمرکز اصلی در این بخش بر بررسی و ارزیابی این قابلیتهای جدید است که قادر به افزایش کارآمدی و انعطافپذیری در مدیریت و تحلیل دادههای JSON خواهد بود.
🟣لینک مقاله:
https://postgresweekly.com/link/161090/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
🔵 عنوان مقاله
Get Proactive with Postgres Performance with This Monthly Check List
🟢 خلاصه مقاله:
مقالهای که در اختیار داریم بر اهمیت حفظ و نگهداری منظم پایگاه داده PostgreSQL تأکید میکند و چالشهای مربوط به آن را مورد بحث قرار میدهد. برای کمک به کاربران در مدیریت بهینه و کارآمد این پایگاه داده، مقاله چک لیست ماهانهای را پیشنهاد میدهد که شامل فعالیتهای حیاتی برای حفظ عملکرد، اعتماد و زمان بدون توقف سیستم است. این چک لیست به صورت رایگان قابل دانلود است و ابزاری کارآمد برای رسیدگی سریع و مؤثر به تعمیر و نگهداری PostgreSQL ارائه میدهد، که میتواند به کاربران کمک کند تا از پیچیدگیها و احتمال خطاهای ناشی از فرآیندهای دستی پیشگیری کنند.
🟣لینک مقاله:
https://postgresweekly.com/link/161087/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
Get Proactive with Postgres Performance with This Monthly Check List
🟢 خلاصه مقاله:
مقالهای که در اختیار داریم بر اهمیت حفظ و نگهداری منظم پایگاه داده PostgreSQL تأکید میکند و چالشهای مربوط به آن را مورد بحث قرار میدهد. برای کمک به کاربران در مدیریت بهینه و کارآمد این پایگاه داده، مقاله چک لیست ماهانهای را پیشنهاد میدهد که شامل فعالیتهای حیاتی برای حفظ عملکرد، اعتماد و زمان بدون توقف سیستم است. این چک لیست به صورت رایگان قابل دانلود است و ابزاری کارآمد برای رسیدگی سریع و مؤثر به تعمیر و نگهداری PostgreSQL ارائه میدهد، که میتواند به کاربران کمک کند تا از پیچیدگیها و احتمال خطاهای ناشی از فرآیندهای دستی پیشگیری کنند.
🟣لینک مقاله:
https://postgresweekly.com/link/161087/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
pganalyze
Postgres Performance Check List
Prevent downtime with regular audits of Postgres best practices. Learn how high-performing teams take a proactive stance to maintain uptime & availability.
🔵 عنوان مقاله
Greenmask: Postgres Data Masking and Obfuscation Tool
🟢 خلاصه مقاله:
مقالهای که مورد بررسی قرار گرفته به معرفی ابزاری توسعه یافته با استفاده از زبان برنامهنویسی Go میپردازد که قابلیت دامپ کردن پایگاه دادههای Postgres و همچنین محافظت از حریم خصوصی دادهها از طریق آنونیم سازی دادهها به شیوهای قطعی را دارا است. این ابزار که کدهای آن در مخزن GitHub موجود است، راهکاری عملی برای توسعهدهندگان نرمافزار و مدیران داده به منظور جلوگیری از نشت اطلاعات شخصی یا حساس در هنگام به اشتراک گذاری یا آزمایش پایگاه داده فراهم میکند. استفاده از زبان Go به این ابزار اجازه میدهد تا با کارایی بالا و با استفاده از مکانیزمهای مؤثر، عملیات دامپ و آنونیمسازی را به صورت خودکار و قابل اعتماد انجام دهد. این ابزار میتواند به عنوان یک راهکار امنیتی برای محافظت از دادهها در محیطهای توسعه و تست مورد استفاده قرار گیرد.
🟣لینک مقاله:
https://postgresweekly.com/link/161108/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
Greenmask: Postgres Data Masking and Obfuscation Tool
🟢 خلاصه مقاله:
مقالهای که مورد بررسی قرار گرفته به معرفی ابزاری توسعه یافته با استفاده از زبان برنامهنویسی Go میپردازد که قابلیت دامپ کردن پایگاه دادههای Postgres و همچنین محافظت از حریم خصوصی دادهها از طریق آنونیم سازی دادهها به شیوهای قطعی را دارا است. این ابزار که کدهای آن در مخزن GitHub موجود است، راهکاری عملی برای توسعهدهندگان نرمافزار و مدیران داده به منظور جلوگیری از نشت اطلاعات شخصی یا حساس در هنگام به اشتراک گذاری یا آزمایش پایگاه داده فراهم میکند. استفاده از زبان Go به این ابزار اجازه میدهد تا با کارایی بالا و با استفاده از مکانیزمهای مؤثر، عملیات دامپ و آنونیمسازی را به صورت خودکار و قابل اعتماد انجام دهد. این ابزار میتواند به عنوان یک راهکار امنیتی برای محافظت از دادهها در محیطهای توسعه و تست مورد استفاده قرار گیرد.
🟣لینک مقاله:
https://postgresweekly.com/link/161108/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
🔵 عنوان مقاله
Postgres Type Explorer: See Data Types for Various Use Cases
🟢 خلاصه مقاله:
در راستای راهاندازی "Mastering Postgres"، آرون فرانسیس یک ابزار آنلاین را معرفی کرده است که توصیههایی درباره استفاده از انواع دادهها برای شرایط مختلف (مثل ذخیرهسازی هشها، مقادیر پولی، UUIDها، دادههای باینری) ارائه میدهد. همچنین این ابزار نشان میدهد که هر کدام از این دادهها چقدر فضای ذخیرهسازی اشغال میکنند. این ابزار آنلاین میتواند به توسعهدهندگان کمک کند تا با انتخاب دقیقتر و مؤثرتر انواع داده، بهینهسازی بیشتری در پایگاهدادههای خود اعمال کنند، چه از لحاظ کارایی و چه از لحاظ مصرف فضای دیسک.
🟣لینک مقاله:
https://postgresweekly.com/link/161105/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
Postgres Type Explorer: See Data Types for Various Use Cases
🟢 خلاصه مقاله:
در راستای راهاندازی "Mastering Postgres"، آرون فرانسیس یک ابزار آنلاین را معرفی کرده است که توصیههایی درباره استفاده از انواع دادهها برای شرایط مختلف (مثل ذخیرهسازی هشها، مقادیر پولی، UUIDها، دادههای باینری) ارائه میدهد. همچنین این ابزار نشان میدهد که هر کدام از این دادهها چقدر فضای ذخیرهسازی اشغال میکنند. این ابزار آنلاین میتواند به توسعهدهندگان کمک کند تا با انتخاب دقیقتر و مؤثرتر انواع داده، بهینهسازی بیشتری در پایگاهدادههای خود اعمال کنند، چه از لحاظ کارایی و چه از لحاظ مصرف فضای دیسک.
🟣لینک مقاله:
https://postgresweekly.com/link/161105/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
Masteringpostgres
Postgres Type Explorer
Understand the recommended data types, storage requirements, and pros and cons of each for various use cases
🔵 عنوان مقاله
PGroonga: Extend Full Text Search Features to All Languages
🟢 خلاصه مقاله:
مقاله مورد نظر به بررسی ادغام موتور جستجوی متن کامل Groonga در پایگاه دادهی Postgres (پستگرس) میپردازد. این ترکیب برای برخی سناریوهای خاص، مانند جستجو در متون ژاپنی یا چینی، عملکرد بهتری نسبت به تنظیمات پیشفرض پستگرس ارائه میدهد. از نسخه ۳.۲.۴، Groonga اکنون از پستگرس ۱۷ پشتیبانی میکند و امکان استفاده از این تکنولوژی را در این نسخه جدید فراهم میآورد. این پیشرفت میتواند به توسعهدهندگان کمک کند تا پرس و جوهای متنی پیچیدهتر و دقیقتری را در پایگاه دادههای شان اجرا نمایند، بهویژه در زبانهایی که نیازمند پردازش و تحلیل متون متفاوتی هستند.
🟣لینک مقاله:
https://postgresweekly.com/link/161106/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
PGroonga: Extend Full Text Search Features to All Languages
🟢 خلاصه مقاله:
مقاله مورد نظر به بررسی ادغام موتور جستجوی متن کامل Groonga در پایگاه دادهی Postgres (پستگرس) میپردازد. این ترکیب برای برخی سناریوهای خاص، مانند جستجو در متون ژاپنی یا چینی، عملکرد بهتری نسبت به تنظیمات پیشفرض پستگرس ارائه میدهد. از نسخه ۳.۲.۴، Groonga اکنون از پستگرس ۱۷ پشتیبانی میکند و امکان استفاده از این تکنولوژی را در این نسخه جدید فراهم میآورد. این پیشرفت میتواند به توسعهدهندگان کمک کند تا پرس و جوهای متنی پیچیدهتر و دقیقتری را در پایگاه دادههای شان اجرا نمایند، بهویژه در زبانهایی که نیازمند پردازش و تحلیل متون متفاوتی هستند.
🟣لینک مقاله:
https://postgresweekly.com/link/161106/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
Forwarded from Future Pulse Persian
طلایی ترین لیست وبلاگها برنامه نویسان شرکتهای بزرگ دنیا مثل Google و . . .
در این لیست افرادی که تجربه کار کردن در شرکتهای بزرگ دارند اسم و لینکشون آورده شده
نفراول :
برنامه نویس شرکت TripAdvisor
هم مقالات فنی و هم مهارت نرم رو پوشش میده
https://dandreamsofcoding.com/
نفر دوم :
خالق الگوریتمی که در تمامی سیستم های recommender در شرکت بزرگ ازش استفاده میشه
https://lemire.me/blog/
نفر سوم :
از ایشون مگه بالاتر داریم ؟ CEO شرکت Stack overflow
https://www.joelonsoftware.com/
نفر چهارم :
مهندس نرمافزار گوگل و خالق چند تا از بزرگترین پروژههای Open Source جهان
https://latedev.wordpress.com/
نفر پنجم :
یک از تاثیر گذاران محبوبیت Linux
https://www.linux.org/forums/
نفر ششم :
برنامه نویس Google و نوسینده چند کتاب مشهور در دنیا
https://www.jeremykun.com/
نفر هفتم :
خالق Viaweb نوسینده بزرگ در حیطه برنامه نویسی
https://paulgraham.com/articles.html
نفر هقتم :
متخصص و Director شرکت Huawei
https://www.yegor256.com/
نفر هشتم :
یک متخصص به تمام معنا
https://prog21.dadgum.com/
نفر نهم :
نوسینده کتاب Clean Code
https://blog.cleancoder.com/
نفرم دهم :
مهندس گوگل
https://stevehanov.ca/blog/
نفرم یازدهم :
مهندس شرکت Uber
https://blog.pragmaticengineer.com/
➖➖➖➖➖➖➖➖
👑 @labdon_academy
در این لیست افرادی که تجربه کار کردن در شرکتهای بزرگ دارند اسم و لینکشون آورده شده
نفراول :
برنامه نویس شرکت TripAdvisor
هم مقالات فنی و هم مهارت نرم رو پوشش میده
https://dandreamsofcoding.com/
نفر دوم :
خالق الگوریتمی که در تمامی سیستم های recommender در شرکت بزرگ ازش استفاده میشه
https://lemire.me/blog/
نفر سوم :
از ایشون مگه بالاتر داریم ؟ CEO شرکت Stack overflow
https://www.joelonsoftware.com/
نفر چهارم :
مهندس نرمافزار گوگل و خالق چند تا از بزرگترین پروژههای Open Source جهان
https://latedev.wordpress.com/
نفر پنجم :
یک از تاثیر گذاران محبوبیت Linux
https://www.linux.org/forums/
نفر ششم :
برنامه نویس Google و نوسینده چند کتاب مشهور در دنیا
https://www.jeremykun.com/
نفر هفتم :
خالق Viaweb نوسینده بزرگ در حیطه برنامه نویسی
https://paulgraham.com/articles.html
نفر هقتم :
متخصص و Director شرکت Huawei
https://www.yegor256.com/
نفر هشتم :
یک متخصص به تمام معنا
https://prog21.dadgum.com/
نفر نهم :
نوسینده کتاب Clean Code
https://blog.cleancoder.com/
نفرم دهم :
مهندس گوگل
https://stevehanov.ca/blog/
نفرم یازدهم :
مهندس شرکت Uber
https://blog.pragmaticengineer.com/
➖➖➖➖➖➖➖➖
👑 @labdon_academy
Dan Dreams of Coding
Just trying to make sense of it all
🔵 عنوان مقاله
Trigger Recursion and How to Deal with It
🟢 خلاصه مقاله:
خلاصه مقاله:
در برنامهنویسی و تنظیمات پایگاه داده، ایجاد و استفاده از تریگرها میتواند به کارآمدی عملیات کمک کند. اما، اگر تریگری بهگونهای تنظیم شده باشد که فراخوانی آن تریگری دیگر را به دنبال داشته باشد، میتواند مشکلات پیچیدهای ایجاد کند که رفع آنها دشوار است. خوشبختانه، با تغییرات جزئی در تنظیمات تریگرها میتوان اطمینان حاصل کرد که تریگرها تنها زمانی فعال شوند که واقعاً نیاز است. این اقدامات احتیاطی به جلوگیری از اجرای بیرویه و خطاهایی که در نتیجه تداخل تریگرها ایجاد میشوند کمک شایانی میکند. انجام این تغییرات کوچک میتواند در پیشگیری از مشکلات بزرگتر و سختتر در آینده نقش بسزایی داشته باشد.
🟣لینک مقاله:
https://postgresweekly.com/link/161091/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
Trigger Recursion and How to Deal with It
🟢 خلاصه مقاله:
خلاصه مقاله:
در برنامهنویسی و تنظیمات پایگاه داده، ایجاد و استفاده از تریگرها میتواند به کارآمدی عملیات کمک کند. اما، اگر تریگری بهگونهای تنظیم شده باشد که فراخوانی آن تریگری دیگر را به دنبال داشته باشد، میتواند مشکلات پیچیدهای ایجاد کند که رفع آنها دشوار است. خوشبختانه، با تغییرات جزئی در تنظیمات تریگرها میتوان اطمینان حاصل کرد که تریگرها تنها زمانی فعال شوند که واقعاً نیاز است. این اقدامات احتیاطی به جلوگیری از اجرای بیرویه و خطاهایی که در نتیجه تداخل تریگرها ایجاد میشوند کمک شایانی میکند. انجام این تغییرات کوچک میتواند در پیشگیری از مشکلات بزرگتر و سختتر در آینده نقش بسزایی داشته باشد.
🟣لینک مقاله:
https://postgresweekly.com/link/161091/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
CYBERTEC PostgreSQL | Services & Support
Dealing with trigger recursion in PostgreSQL
This article describes the problem of endless trigger recursion in PostgreSQL and shows how to deal with it and get good performance.
✍️Sepehr MohseniSepehr Mohseni
داشتم یه دیتابیس MySQL رو کانفیگ میکردم گفتم بد نیست کانفیگش رو اینجا هم بذارم. روی عکس زووم کنید توضیحات هر خط هم نوشتم.
اینم لینک گیتهابش:
https://lnkd.in/ezD_xX3S
داشتم یه دیتابیس MySQL رو کانفیگ میکردم گفتم بد نیست کانفیگش رو اینجا هم بذارم. روی عکس زووم کنید توضیحات هر خط هم نوشتم.
اینم لینک گیتهابش:
https://lnkd.in/ezD_xX3S
🙏2
Forwarded from Future Pulse Persian
تأثیر دانش زبان انگلیسی در دنیای برنامهنویسی از نگاه موسسه زبان آفاق
https://www.zoomit.ir/pr/428701-afagh-lc/
➖➖➖➖➖➖➖➖
👑 @labdon_academy
https://www.zoomit.ir/pr/428701-afagh-lc/
➖➖➖➖➖➖➖➖
👑 @labdon_academy
😈1👻1
✍️shahriyar bayatshahriyar bayat
ماژول bloom filter در ردیس
اول بریم ببینیم ماژول bloom filter اصلا چی هست؟
ماژول Bloom Filter یک ساختار داده احتمالاتیه که برای تست عضویت در مجموعهها استفاده میشه. این ساختار حافظه بسیار کمی استفاده میکنه و میتونه با دقت بالا تعیین کند که آیا یک عنصر در مجموعه وجود دارد یا خیر. ممکنه گاهی به اشتباه بگه که عنصری در مجموعه وجود داره (false positives)، ولی هیچوقت به اشتباه نمیگوید که عنصری که در مجموعه است وجود ندارد (false negatives).
ردیس از نسخه 4.0 به بعد پشتیبانی از Bloom Filter را از طریق یک ماژول به نام RedisBloom ارائه میدهد. این ماژول شامل دستوراتی برای ایجاد و مدیریت Bloom Filterهاست.
چطوری کار میکنه؟
توضیح و درکش شاید یکم مشکل باشه که ایجا بصورت خلاصه مطرح بشه
اول یه bit array با اندازه ثابت که همه بیت هاش هم صفر هستند ایجاد میکنه
بعد یک سری توابع هش انتخاب میشن که مقادیر یونیک تولید میکنن
مرحله بعدی مقدار ورودی که قراره ثبت بشه اول از تابع هش رد میکنن مقدار هش شده رو روی bitarray مینویسه و مقدار اون بیت و به یک تغییر میده
برای بررسی عضویت یک عنصر، عنصر را از طریق تمام تابعهای هش عبور میدن و موقعیتهای bitarray را که توسط هر هش نشان داده شدهن، بررسی میکنند. اگر همه آن بیتها ۱ باشند، عنصر احتمالاً در مجموعه است. اگر حتی یکی از آنها صفر باشد، عنصر قطعاً
در مجموعه نیست.
مزایا و معایبش چیه؟
مزایا:
کمحافظه: نسبت به ساختارهای دادهای دیگر، فضای بسیار کمی استفاده میکند.
سرعت بالا: عملیات افزودن و بررسی عضویت بسیار سریع انجام میشود.
معایب:
احتمال خطا: ممکنه گاهی به اشتباه بگه که یک عنصر وجود دارد (false positives).
عدم حذف: به دلیل ماهیت احتمالاتی bloom filter، امکان حذف عناصر بدون ایجاد خطا وجود ندارد.
استفاده از bloom filter خیلی سادست
➖➖➖➖➖➖➖➖
👑 @Database_Academy
ماژول bloom filter در ردیس
اول بریم ببینیم ماژول bloom filter اصلا چی هست؟
ماژول Bloom Filter یک ساختار داده احتمالاتیه که برای تست عضویت در مجموعهها استفاده میشه. این ساختار حافظه بسیار کمی استفاده میکنه و میتونه با دقت بالا تعیین کند که آیا یک عنصر در مجموعه وجود دارد یا خیر. ممکنه گاهی به اشتباه بگه که عنصری در مجموعه وجود داره (false positives)، ولی هیچوقت به اشتباه نمیگوید که عنصری که در مجموعه است وجود ندارد (false negatives).
ردیس از نسخه 4.0 به بعد پشتیبانی از Bloom Filter را از طریق یک ماژول به نام RedisBloom ارائه میدهد. این ماژول شامل دستوراتی برای ایجاد و مدیریت Bloom Filterهاست.
چطوری کار میکنه؟
توضیح و درکش شاید یکم مشکل باشه که ایجا بصورت خلاصه مطرح بشه
اول یه bit array با اندازه ثابت که همه بیت هاش هم صفر هستند ایجاد میکنه
بعد یک سری توابع هش انتخاب میشن که مقادیر یونیک تولید میکنن
مرحله بعدی مقدار ورودی که قراره ثبت بشه اول از تابع هش رد میکنن مقدار هش شده رو روی bitarray مینویسه و مقدار اون بیت و به یک تغییر میده
برای بررسی عضویت یک عنصر، عنصر را از طریق تمام تابعهای هش عبور میدن و موقعیتهای bitarray را که توسط هر هش نشان داده شدهن، بررسی میکنند. اگر همه آن بیتها ۱ باشند، عنصر احتمالاً در مجموعه است. اگر حتی یکی از آنها صفر باشد، عنصر قطعاً
در مجموعه نیست.
مزایا و معایبش چیه؟
مزایا:
کمحافظه: نسبت به ساختارهای دادهای دیگر، فضای بسیار کمی استفاده میکند.
سرعت بالا: عملیات افزودن و بررسی عضویت بسیار سریع انجام میشود.
معایب:
احتمال خطا: ممکنه گاهی به اشتباه بگه که یک عنصر وجود دارد (false positives).
عدم حذف: به دلیل ماهیت احتمالاتی bloom filter، امکان حذف عناصر بدون ایجاد خطا وجود ندارد.
استفاده از bloom filter خیلی سادست
➖➖➖➖➖➖➖➖
👑 @Database_Academy
👍1🔥1🎉1🍾1
📌 SQL Database Administrator
📝 Type: Visa Sponsorship
🌍 Relocation Package: ✅
🏢 Company: cloudvital
📍 Location: CANADA
⌨️ Category: #Networking
🔗 Tags: #server #ha #powershell #sql
📝 Type: Visa Sponsorship
🌍 Relocation Package: ✅
🏢 Company: cloudvital
📍 Location: CANADA
⌨️ Category: #Networking
🔗 Tags: #server #ha #powershell #sql
📌 Senior Database Engineer
📝 Type: Visa Sponsorship
🌍 Relocation Package: ✅
🏢 Company: exadel
📍 Location: BULGARIA
⌨️ Category: #Programming
🔗 Tags: #python #postgresql #ai #server #git #jenkins #devops #gitlab #sql
📝 Type: Visa Sponsorship
🌍 Relocation Package: ✅
🏢 Company: exadel
📍 Location: BULGARIA
⌨️ Category: #Programming
🔗 Tags: #python #postgresql #ai #server #git #jenkins #devops #gitlab #sql
خواهشا ردیس را به عنوان Primary Database استفاده نکنید!
یکی از جذابترین ریفکتور هایی که در اکالا انجام دادم، به ریلیز کردن ۴۰ گیگابایت رم ردیس برای استفاده در سبد خرید و سفارشها مربوط میشه. در این فرآیند، موفق شدم تنها از ۴۰۰ مگابایت رم استفاده کنم!
در شروع کار، به این فکر میکردم که چگونه میتوانم ۴۰ گیگابایت رم را آزاد کنم. اولین راهحلی که به ذهنم رسید، فشردهسازی دادهها بود. اما هیچ کامپرسوری نمیتوانست به اندازه کافی این حجم داده را فشرده کند، و هزینهی Decompress کردن آن بخاطر لود بالای سیستم، بسیار بالا بود.
هر کلید ما حاوی حدود ۱-۲ کیلوبایت JSON بود و مجبور بودیم که هر محصول را بدون TTL در Redis نگه داریم، زیرا Round Trip ما به Redis در لحظه به حدود ۳۰K میرسید و Redis ۴۰ گیگابایتی را مصرف میکرد. هیچ اپلیکیشنی نمیتوانست این حجم Request را با منابع پایین و زمان پاسخدهی ۱۰ میلیثانیه انجام دهد!
در ادامه، وقتی وارد فضای حل مسئله شدم:
پاکسازی دادههای اضافی: اولین قدم ما حذف کلی دادههای غیرضروری بود که هر کلید را به حدوداً ۵۰۰ بایت تبدیل کرد.
استفاده از Protobuf: به این فکر کردم که چرا از JSON استفاده کنیم؟ با استفاده از deserializer و serializer قدرتمندی مثل Protobuf، میتوانستیم حجم دادهها را به طور چشمگیری کاهش دهیم. با تبدیل دادهها به باینری و ذخیره آن، حجم هر کلید به حدود ۳۰۰ بایت کاهش یافت، که به معنای کاهش ۸۰ درصدی مصرف رم بود. با این حال، کیفیت و سرعت بالا در اکالا برای ما بسیار مهم بود.
شکستن کلیدها: کلیدها را به دو بخش تقسیم کردم:
اطلاعات محصول (شامل نام، بارکد، آدرس عکس و...) در یک کلید با حجم تقریباً ۲۰۰ بایت.
موجودی هر محصول در فروشگاهها در کلیدی دیگر با حجم حدود ۱۰۰ بایت.
در روش قبلی، اگر یک میلیون کالا داشتیم، مصرف حدود ۲۸۶ مگابایت بود. اما در روش جدید، فرض کنیم از یک میلیون تا 2000 محصول داریم و برای یک میلیون کالا موجودی در استور های مختلف، حدود ۹۵ مگابایت مصرف میشد!
کش کردن محصولات: همچنین، کالاهای اضافهشده به سبد خرید مشتریان را به مدت ۴ روز کش کردم. به جای استفاده از Redis به عنوان Primary Database و بدون TTL، هرگاه دادهای نداشتیم، از منبع اصلی اطلاعات را میگرفتیم و دوباره به مدت ۴ روز کش میکردیم. اگر کاربری همان کالا را دوباره به سبد خرید اضافه میکرد، TTL آن به صورت Sliding افزایش مییافت.
در نهایت، با همین ۴۰۰ مگابایت، همه چیز به خوبی به هم رسید و ما توانستیم پرفورمنس و سرعت را بدون هیچ افت کیفیتی حفظ کنیم!
DevTwitter | <Hassan Arab borzo/>
➖➖➖➖➖➖➖
👑 @Database_Academy
یکی از جذابترین ریفکتور هایی که در اکالا انجام دادم، به ریلیز کردن ۴۰ گیگابایت رم ردیس برای استفاده در سبد خرید و سفارشها مربوط میشه. در این فرآیند، موفق شدم تنها از ۴۰۰ مگابایت رم استفاده کنم!
در شروع کار، به این فکر میکردم که چگونه میتوانم ۴۰ گیگابایت رم را آزاد کنم. اولین راهحلی که به ذهنم رسید، فشردهسازی دادهها بود. اما هیچ کامپرسوری نمیتوانست به اندازه کافی این حجم داده را فشرده کند، و هزینهی Decompress کردن آن بخاطر لود بالای سیستم، بسیار بالا بود.
هر کلید ما حاوی حدود ۱-۲ کیلوبایت JSON بود و مجبور بودیم که هر محصول را بدون TTL در Redis نگه داریم، زیرا Round Trip ما به Redis در لحظه به حدود ۳۰K میرسید و Redis ۴۰ گیگابایتی را مصرف میکرد. هیچ اپلیکیشنی نمیتوانست این حجم Request را با منابع پایین و زمان پاسخدهی ۱۰ میلیثانیه انجام دهد!
در ادامه، وقتی وارد فضای حل مسئله شدم:
پاکسازی دادههای اضافی: اولین قدم ما حذف کلی دادههای غیرضروری بود که هر کلید را به حدوداً ۵۰۰ بایت تبدیل کرد.
استفاده از Protobuf: به این فکر کردم که چرا از JSON استفاده کنیم؟ با استفاده از deserializer و serializer قدرتمندی مثل Protobuf، میتوانستیم حجم دادهها را به طور چشمگیری کاهش دهیم. با تبدیل دادهها به باینری و ذخیره آن، حجم هر کلید به حدود ۳۰۰ بایت کاهش یافت، که به معنای کاهش ۸۰ درصدی مصرف رم بود. با این حال، کیفیت و سرعت بالا در اکالا برای ما بسیار مهم بود.
شکستن کلیدها: کلیدها را به دو بخش تقسیم کردم:
اطلاعات محصول (شامل نام، بارکد، آدرس عکس و...) در یک کلید با حجم تقریباً ۲۰۰ بایت.
موجودی هر محصول در فروشگاهها در کلیدی دیگر با حجم حدود ۱۰۰ بایت.
در روش قبلی، اگر یک میلیون کالا داشتیم، مصرف حدود ۲۸۶ مگابایت بود. اما در روش جدید، فرض کنیم از یک میلیون تا 2000 محصول داریم و برای یک میلیون کالا موجودی در استور های مختلف، حدود ۹۵ مگابایت مصرف میشد!
کش کردن محصولات: همچنین، کالاهای اضافهشده به سبد خرید مشتریان را به مدت ۴ روز کش کردم. به جای استفاده از Redis به عنوان Primary Database و بدون TTL، هرگاه دادهای نداشتیم، از منبع اصلی اطلاعات را میگرفتیم و دوباره به مدت ۴ روز کش میکردیم. اگر کاربری همان کالا را دوباره به سبد خرید اضافه میکرد، TTL آن به صورت Sliding افزایش مییافت.
در نهایت، با همین ۴۰۰ مگابایت، همه چیز به خوبی به هم رسید و ما توانستیم پرفورمنس و سرعت را بدون هیچ افت کیفیتی حفظ کنیم!
DevTwitter | <Hassan Arab borzo/>
➖➖➖➖➖➖➖
👑 @Database_Academy
👍3👌3💯2🍾1
🔵 عنوان مقاله
Case Study of Optimizing a 'Weirdly Picked' Bad Plan
🟢 خلاصه مقاله:
در مقاله مذکور، نویسنده به بررسی یک مورد خاص پرداخته که در آن یک برنامهریز (planner) انتخاب غیرمنتظرهای برای یک عملیات داشته است. نویسنده این حالت را به عنوان نمونهای برای آموزش و توضیح نحوه مواجهه با چنین شرایطی انتخاب کرده است. این مقاله نشان میدهد که چگونه میتوان با استفاده از دادهها و تجزیه و تحلیل دقیق، بهترین تصمیمگیریها را در مواقعی که برنامهریز با خطا روبرو میشود، انجام داد. نویسنده روشها و استراتژیهایی را توصیه میکند که به کاربران امکان میدهد عملکرد سیستمهای مرتبط با برنامهریزی را بهبود بخشند و از تکرار خطاها جلوگیری کنند. این مطالب میتواند برای متخصصان فناوری اطلاعات و توسعه دهندگان نرمافزار که با موارد مشابه در کارشان مواجه هستند، بسیار مفید و کاربردی باشد.
🟣لینک مقاله:
https://postgresweekly.com/link/161578/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
Case Study of Optimizing a 'Weirdly Picked' Bad Plan
🟢 خلاصه مقاله:
در مقاله مذکور، نویسنده به بررسی یک مورد خاص پرداخته که در آن یک برنامهریز (planner) انتخاب غیرمنتظرهای برای یک عملیات داشته است. نویسنده این حالت را به عنوان نمونهای برای آموزش و توضیح نحوه مواجهه با چنین شرایطی انتخاب کرده است. این مقاله نشان میدهد که چگونه میتوان با استفاده از دادهها و تجزیه و تحلیل دقیق، بهترین تصمیمگیریها را در مواقعی که برنامهریز با خطا روبرو میشود، انجام داد. نویسنده روشها و استراتژیهایی را توصیه میکند که به کاربران امکان میدهد عملکرد سیستمهای مرتبط با برنامهریزی را بهبود بخشند و از تکرار خطاها جلوگیری کنند. این مطالب میتواند برای متخصصان فناوری اطلاعات و توسعه دهندگان نرمافزار که با موارد مشابه در کارشان مواجه هستند، بسیار مفید و کاربردی باشد.
🟣لینک مقاله:
https://postgresweekly.com/link/161578/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy