Database Labdon – Telegram
Database Labdon
835 subscribers
33 photos
3 videos
1 file
821 links
🕸 Database Academy

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

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
TimescaleDB 2.17.0: Time-Series Extension for Postgres

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

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


👑 @Database_Academy
👍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
🔵 عنوان مقاله
Is pg_dump a 'Backup' Tool?

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

🟣لینک مقاله:
https://postgresweekly.com/link/161098/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
🔵 عنوان مقاله
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
🔵 عنوان مقاله
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
🔵 عنوان مقاله
Trigger Recursion and How to Deal with It

🟢 خلاصه مقاله:
خلاصه مقاله:

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

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


👑 @Database_Academy
✍️Sepehr MohseniSepehr Mohseni

داشتم یه دیتابیس MySQL رو کانفیگ میکردم گفتم بد نیست کانفیگش رو اینجا هم بذارم. روی عکس زووم کنید توضیحات هر خط هم نوشتم.

اینم لینک گیتهابش:
https://lnkd.in/ezD_xX3S
🙏2
Forwarded from Future Pulse Persian
تأثیر دانش زبان انگلیسی در دنیای برنامه‌نویسی از نگاه موسسه زبان آفاق

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
👍1🔥1🎉1🍾1
📌 SQL Database Administrator

📝 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
خواهشا ردیس را به عنوان 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
👍3👌3💯2🍾1
🔵 عنوان مقاله
Case Study of Optimizing a 'Weirdly Picked' Bad Plan

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

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


👑 @Database_Academy
🔵 عنوان مقاله
4 Ways to Create Date Bins in Postgres

🟢 خلاصه مقاله:
در این مقاله، روش‌های مختلفی برای گردآوری و تجمیع داده‌ها بر اساس دوره‌های زمانی معین (مانند ماه کامل، سه‌ماهه یا سال) در پایگاه داده Postgres بررسی می‌شود. کریستوفر بر روی چند تابع مختلف شامل INTERVAL, date_trunc, extract و to_char تمرکز کرده است. هرکدام از این توابع مزایا و معایب خاص خود را دارند. تابع INTERVAL برای تعریف بازه‌های زمانی مشخص مفید است؛ date_trunc به کاربران امکان می‌دهد تا داده‌ها را به بخش‌های زمانی منظم تقسیم کنند؛ extract برای استخراج قسمت‌های خاصی از تاریخ مانند سال یا ماه به کار می‌رود؛ و to_char امکان تبدیل تاریخ‌ها به رشته‌های نوشتاری با قالب دلخواه را فراهم می‌آورد. استفاده مناسب از این توابع بستگی به نیازهای خاص گزارش‌گیری یا تجمیع داده‌های کاربر دارد.

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


👑 @Database_Academy
This media is not supported in your browser
VIEW IN TELEGRAM
🔵 عنوان مقاله
Request-Reply in Postgres

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

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


👑 @Database_Academy
🔵 عنوان مقاله
pg_parquet: An Extension to Connect Postgres and Parquet

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

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


👑 @Database_Academy