آموزش ویدیویی پایگاه داده، SQL و NoSQL و ...
2.09K subscribers
227 photos
116 videos
1.84K links
* پیشنهادات، تبلیغات و تبادل و ... : @ma_limbs

* تعرفه تبلیغات:
https://t.me/+w-o6dHW5O31jMWNk
Download Telegram
💡 نکته #SQL

🟣 موضوع : ‏توابع کاربر-تعریف‌شده (UDF)

نکته :

‏میتونی UDF ها رو به صورت اسکالر (Scalar) یا جدولی (Table-Valued) بسازی! هر کدوم یه کاربردی دارن! 🤩


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #SQLite

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏روش‌های پشتیبان‌گیری

نکته 1:
‏ساده‌ترین روش، کپی کردن مستقیم فایل دیتابیس (.db) به یه جای امنه. چون SQLite فقط یه فایله، این روش سریع‌ترینه! 📦💾

نکته 2:
‏روش حرفه‌ای‌تر، استفاده از Backup API خود SQLite (تو زبان‌های برنامه‌نویسی) هست. اینجوری می‌تونی حتی موقع کار کردن برنامه با دیتابیس، بک‌آپ بگیری. 🛠️💡

نکته 3:
‏اگه حالت WAL (Write-Ahead Logging) فعال باشه، برای بک‌آپ باید علاوه بر فایل اصلی، فایل‌های .wal و .shm رو هم کپی کنی. اینا داده‌های جدید رو نگه می‌دارن! ⚠️

نکته 4:
‏بهترین کار اینه که از دستور VACUUM INTO 'مسیر_بک‌آپ.db'; استفاده کنی. این یه بک‌آپ تمیز و فشرده (بدون فضای خالی) برات می‌گیره. 🧹

نکته 5:
‏اگه می‌خوای بک‌آپت فقط یه فایل متنی حاوی دستورات SQL باشه، از ابزار sqlite3 با دستور .dump استفاده کن. این خروجی رو می‌تونی رو هر دیتابیس دیگه‌ای اجرا کنی. 📝

نکته 6:
‏برای بک‌آپ گرفتن، می‌تونی از ATTACH DATABASE هم استفاده کنی. دیتابیس مقصد رو وصل کن و با INSERT INTO ... SELECT ... داده‌ها رو کپی کن. 🔗

نکته 7:
‏یادت باشه، اگه فقط فایل اصلی رو کپی کنی، تراکنش‌های نیمه‌کاره‌ای که تو فایل Journal بودن، توی بک‌آپ اعمال نمی‌شن. پس مطمئن شو که تراکنش فعالی نباشه. 🛑

نکته 8:
‏برای بک‌آپ‌های بسیار بزرگ، می‌تونی از ابزارهای سیستمی (مثل rsync یا robocopy) استفاده کنی تا فقط تغییرات فایل رو کپی کنن و سرعتت بیشتر بشه. 🚀

نکته 9:
‏هیچ‌وقت از روش Cut/Paste برای بک‌آپ استفاده نکن! همیشه کپی کن تا اگه مشکلی پیش اومد، فایل اصلی سر جاش باشه. ✂️

نکته 10:
‏بهترین استراتژی، ترکیب این روش‌هاست: بک‌آپ‌های روزانه با کپی فایل و بک‌آپ‌های دوره‌ای با VACUUM INTO برای تمیزکاری! 💯😎


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #NoSQL

🟣 موضوع : ‏توزیع جغرافیایی داده (Geo‑Distribution)

نکته :

‏همگام‌سازی دیتا: چطوری مطمئن بشیم همه کپی‌ها به‌روزن؟ دیتابیس‌های NoSQL خودشون معمولاً این کارو می‌کنن، ولی مدل "Consistency"شون (سازگاری) رو بشناس. خیلی مهمه! 🔄


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #SQLite

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏مزایا و معایب پایگاه داده در حافظه

نکته 1:
‏مزیت اصلی: دیتابیس‌های In-Memory فوق‌العاده سریع هستن چون داده‌ها رو مستقیم از RAM می‌خونن، نه از دیسک کند. 🚀💡

نکته 2:
‏مزیت کاربردی: برای تست‌های واحد (Unit Tests) عالی هستن! Schema رو می‌سازی، تست می‌کنی و بعدش همه چی پاک می‌شه، بدون هیچ فایل اضافی. 🧪

نکته 3:
‏عیب بزرگ: داده‌ها ناپایدار (Volatile) هستن. اگه برق بره، برنامه کرش کنه یا اتصال قطع شه، کل داده‌ها از دست می‌رن! 💥😭

نکته 4:
‏مزیت محیطی: برای محیط‌هایی که فضای دیسک مهم و محدوده (مثل بعضی دستگاه‌های IoT) یا نمی‌خوای فایل دائمی بسازی، بهترین هستن. 💾

نکته 5:
‏عیب محدودیت: حجم دیتابیس In-Memory به میزان RAM موجود شما بستگی داره. نمی‌تونی داده‌ی بیشتر از ظرفیت RAM توش بریزی. 🧠

نکته 6:
‏مزیت سرعت بالا: برای پردازش‌های سریع و موقت روی داده‌ها (مثل فیلتر و مرتب‌سازی داده‌های بزرگ) که نیازی به ذخیره دائمی ندارن، عالی عمل می‌کنن.

نکته 7:
‏عیب اشتراک‌گذاری: به طور پیش‌فرض، دیتابیس In-Memory فقط تو یه Connection قابل دسترسیه. برای اشتراک‌گذاری، باید تنظیمات خاصی رو فعال کنی. 🔗

نکته 8:
‏مزیت سادگی: دیگه درگیر مدیریت فایل‌ها، قفل دیسک یا فضای اشغال‌شده توسط دیتابیس روی دیسک نیستی. همه چی تو حافظه است. 🎈

نکته 9:
‏عیب بازیابی: از اونجایی که داده‌ها موقت هستن، اگر یه خطای برنامه پیش بیاد، هیچ راهی برای بازیابی دیتای لحظه‌ای وجود نداره. 🛡️

نکته 10:
‏کاربرد عملی: برای کش کردن (Caching) داده‌های سرور که باید با سرعت بالا خونده بشن ولی نیاز به ماندگاری طولانی ندارن، این نوع دیتابیس پادشاهه. 👑😎


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #SQLite

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏مدیریت پایگاه داده‌های بزرگ

نکته 1:
‏برای دیتابیس‌های بزرگ (در حد گیگابایت)، حتماً حالت WAL (Write-Ahead Logging) رو فعال کن. این کار همزمانی و سرعت نوشتن رو خیلی بهتر می‌کنه! 🚀🔥

نکته 2:
‏ایندکس‌ها دوست صمیمی دیتابیس‌های بزرگ هستن. روی ستون‌هایی که زیاد جستجو می‌کنی یا مرتب می‌کنی، ایندکس بساز تا کند نشی. 💡

نکته 3:
‏سعی کن عملیات نوشتن (INSERT/UPDATE/DELETE) رو تو تراکنش‌های بزرگ (بین BEGIN و COMMIT) انجام بدی. این کار صدها برابر سریع‌تر از نوشتن‌های تکیه. 🚄

نکته 4:
‏اگه دیتابیس خیلی بزرگ داری، می‌تونی سایز صفحات (Page Size) رو از ۴ کیلوبایت پیش‌فرض به ۸ یا ۱۶ کیلوبایت افزایش بدی. این برای داده‌های حجیم خوبه. 📏

نکته 5:
‏برای خواندن‌های زیاد، حافظه کش (Cache Size) رو تو RAM بزرگتر کن: PRAGMA cache_size = -20000;. اینجوری SQLite داده‌ها رو از دیسک نمی‌خونه. 🧠

نکته 6:
‏اگه حجم دیتابیس خیلی زیاد شده، به جای ذخیره‌ی فایل‌های بزرگ (مثل تصاویر) به صورت BLOB، اونا رو تو سیستم فایل بذار و فقط مسیرشون رو تو دیتابیس نگه دار. 📦💾

نکته 7:
‏به صورت دوره‌ای و در زمان‌های کم‌ترافیک، دستور VACUUM رو اجرا کن. این کار فضای خالی رو حذف می‌کنه و دیتابیس رو بهینه نگه می‌داره. 🧹

نکته 8:
‏ستون‌های متنی (TEXT) طولانی رو فقط زمانی ایندکس کن که واقعاً لازمه. ایندکس‌های بزرگ، حجم دیتابیس رو به شدت زیاد می‌کنن. 📝

نکته 9:
‏برای مدیریت بهتر دیتابیس‌های خیلی بزرگ، می‌تونی داده‌های قدیمی رو به یه دیتابیس آرشیو منتقل کنی (با ATTACH و DETACH). دیتابیس اصلیت سبک می‌مونه. 🔗

نکته 10:
‏اگر دیتابیس تو دائماً توسط چندین کاربر همزمان نیاز به نوشتن داره، SQLite برای اون سناریو طراحی نشده. باید به دیتابیس‌های سرور-محور (مثل PostgreSQL) کوچ کنی. 🐘😎


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #SQLite

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏مفاهیم اولیه داده‌های جغرافیایی

نکته 1:
‏داده‌های جغرافیایی یعنی هر چیزی که با موقعیت روی زمین سر و کار داره، مثل مختصات GPS، نقشه‌ها و محدوده‌های مکانی. 🗺️💡

نکته 2:
‏اولین مفهوم، نقطه (Point) هست. مثل یه جای خاص روی نقشه که فقط با دو عدد عرض و طول جغرافیایی (Latitude و Longitude) مشخص می‌شه. 📍

نکته 3:
‏بعد از نقطه، خط (LineString) رو داریم. این از وصل شدن چند تا نقطه به هم ایجاد می‌شه. مثلاً مسیر یه خیابون یا مسیر حرکت یه ماشین. 📏

نکته 4:
‏مفهوم بعدی چندضلعی (Polygon) هست که برای نشون دادن یه محدوده یا منطقه استفاده می‌شه، مثلاً مرز یه شهر یا یه پارک. 🏞️

نکته 5:
‏ما دو سیستم برای مختصات داریم: کروی (Spherical) که زمین رو گرد در نظر می‌گیره (مثل GPS) و صفحه‌ای (Planar) که برای نقشه‌های کوچک‌تر استفاده می‌شه. 🌐

نکته 6:
‏تمام این اشکال جغرافیایی معمولاً تو یه قالب استاندارد به نام WKT (Well-Known Text) ذخیره می‌شن. مثل POINT(35 51). 📝

نکته 7:
‏برای ذخیره این داده‌ها تو SQLite، باید از افزونه SpatiaLite استفاده کنی. SQLite معمولی این مفاهیم رو نمی‌فهمه. 🦸‍♂️🔥

نکته 8:
‏R-Tree یه نوع ایندکس جادوییه که برای جستجوی سریع داده‌های جغرافیایی استفاده می‌شه. ایندکس‌های معمولی تو این کار ضعیفن. 🌳🚀

نکته 9:
‏یکی از کاربردی‌ترین کارها، محاسبه فاصله بین دو نقطه است. توابع جغرافیایی این کار رو به شکل دقیق و استاندارد انجام می‌دن. 📐

نکته 10:
‏مفهوم رابطه مکانی (Spatial Relationship) یعنی بررسی کنیم که آیا یه نقطه درون یه چندضلعی هست یا دو تا خط همدیگه رو قطع می‌کنن. 🧐


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #NoSQL

🟣 موضوع : ‏Modeling روابط در گراف‌دیتابیس

نکته :

‏اگه تعداد روابط زیاد شد، نترس! 💪 ساختار مناسب، همه چی رو حل می‌کنه. 😉


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #MySQL

🟣 موضوع : ‏کار با انواع JOIN در MySQL به صورت عملی
📖 سرفصل : ‏درک مقادیر NULL در دو طرف نتیجه FULL OUTER JOIN

‏تصور کن یه مهمونی گرفتی و میخوای همه رو از دو تا گروه مختلف (جدول A و B) دعوت کنی. 🎉 FULL OUTER JOIN دقیقا همین کارو میکنه! اگه کسی از گروه A با کسی از گروه B جور نباشه، جاش با NULL پر میشه. همینطور برعکس!

‏وقتی تو نتیجه FULL OUTER JOIN میبینی ستون‌های سمت چپ (جدول A) پر از NULL شده، یعنی این ردیف‌ها فقط توی جدول سمت راست (جدول B) وجود داشتن و هیچ زوجی تو A براشون پیدا نشده. 🤷‍♀️ اینا اون مهمونای تکی از گروه B هستن!

‏برعکس نکته قبل، اگه ستون‌های سمت راست (جدول B) خالی باشن و NULL داشته باشن، یعنی این ردیف‌ها فقط تو جدول سمت چپ (جدول A) بودن و هیچ زوجی تو B نداشتن. 🙋‍♂️ اینا اون مهمونای تکی از گروه A محسوب میشن!

‏NULL ها تو FULL OUTER JOIN فقط دارن میگن "اینجا اطلاعاتی برای این ردیف از اون جدول دیگه نیست". 👻 یعنی "عدم وجود" نه "صفر" یا "رشته خالی". حواست باشه تو شرط‌هات با IS NULL چک‌شون کنی! 🕵️‍♀️

‏اگه میخوای فقط اون ردیف‌هایی رو ببینی که توی یکی از جدول‌ها بودن ولی توی اون یکی نبودن (یعنی همون مهمونای تکی از هر دو گروه)، میتونی از WHERE TableA.ID IS NULL OR TableB.ID IS NULL استفاده کنی. 🎯 اینجوری فقط خطوطی رو میبینی که حداقل یه سمتشون NULL داره.

‏برای اینکه بهتر درک کنی NULL ها از کجا میان، به شکل "ون دایاگرام" فکر کن. ⭕️ FULL OUTER JOIN کل دایره‌های دو جدول رو پوشش میده. بخش‌هایی که فقط تو یه دایره هستن (و نه تقاطع)، همون جاییه که NULL ها ظاهر میشن. 💡

‏گاهی اوقات دوست نداری NULL ببینی و میخوای یه متن جایگزین نشون بدی. مثلاً به جای NULL بنویسی "ناموجود". ✍️ اون موقع COALESCE(TableA.Column, TableB.Column, 'ناموجود') خیلی به کارت میاد! این فانکشن اولین مقدار غیر NULL رو برمیگردونه. 🛠️

‏اگه داری FULL OUTER JOIN رو با ترکیب LEFT JOIN و UNION ALL شبیه‌سازی میکنی (چون MySQL مستقیم پشتیبانی نمیکنه)، باید خیلی حواست به WHERE TableB.ID IS NULL تو بخش RIGHT JOIN باشه تا ردیف‌های تکراری تو تقاطع رو حذف کنی. ⚠️ این یه ترفند رایجه!

‏NULLها تو FULL OUTER JOIN کمکت میکنن بفهمی کدوم داده‌ها تو یک جدول "منحصر به فرد" هستن و هیچ ارتباطی با جدول دیگه ندارن. 📊 این برای تحلیل داده‌ها و پیدا کردن رکوردهای یتیم (orphan records) خیلی مفیده. 🧐

‏به یاد داشته باش که NULL در SQL یه وضعیت نامعلومه. پس NULL = NULL همیشه FALSE هست! به جای مساوی، همیشه از IS NULL یا IS NOT NULL برای بررسی NULL ها استفاده کن تا به مشکلات منطقی برنخوری. 🚫 این یه نکته طلاییه! 💰


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #NoSQL

🟣 موضوع : ‏Replication و انواع آن

نکته :

‏Replication یعنی اینکه از داده‌هات یه کپی تو جاهای مختلف داری. 🤝 اینطوری اگه یه جا خراب شد، بقیه جاها هستن! 🔥


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #MySQL

🟣 موضوع : ‏کار با انواع JOIN در MySQL به صورت عملی
📖 سرفصل : ‏معرفی LEFT JOIN (یا LEFT OUTER JOIN)

‏LEFT JOIN مثل اینه که بگی: "هرچی تو جدول سمت چپم (جدول اصلی) هست رو کامل بیار، حتی اگه تو جدول سمت راست چیزی براش پیدا نکردی! 🤔"

‏یادت باشه، اگه LEFT JOIN استفاده کنی و برای یه ردیف از جدول چپ، تو جدول راست چیزی نباشه، جای ستون‌های جدول راست برات NULL میذاره. 🧐 این خیلی مهمه!

‏میخوای ببینی کدوم کاربرات سفارشی ثبت نکردن؟ 🤷‍♀️ کافیه LEFT JOIN بزنی بین جدول کاربران و سفارشاتت، بعد فیلتر کنی جایی که order_id تو جدول سفارشات IS NULL باشه! این یه ترفند خفنه! 🔥

‏فرق اصلی LEFT JOIN با INNER JOIN رو حواست باشه! INNER فقط اونایی رو میاره که تو جفت جدول تطابق دارن، ولی LEFT، همه سمت چپی‌ها رو میاره، حتی اگه سمت راستی‌ها بی‌معنی باشن (یعنی NULL). 💡

‏ترتیب جدول‌ها تو LEFT JOIN خیلی مهمه! ☝️ A LEFT JOIN B با B LEFT JOIN A فرق داره و نتیجه‌های متفاوتی میده. دقت کن کدوم جدول برات "اصلی" و سمت چپه.

‏LEFT JOIN همون LEFT OUTER JOIN هست، فقط برای راحتی کلمه "OUTER" رو معمولاً حذف می‌کنن. پس نگران نباش اگه هردوشو دیدی، یکین!

‏موقعی که میخوای اطلاعات تکمیلی رو از یه جدول دیگه به داده‌های اصلیت اضافه کنی، ولی دوست نداری هیچکدوم از داده‌های اصلیت از بین برن، LEFT JOIN بهترین انتخابه! 🚀

‏حواست باشه اگه قراره روی ستون‌های جدول سمت راست فیلتر کنی، ممکنه نتیجه شبیه INNER JOIN بشه! اگه فیلترت رو توی ON بذاری، رفتار LEFT JOIN حفظ میشه. این یه دام رایجه! 🎣

‏می‌تونی چند تا LEFT JOIN رو پشت سر هم استفاده کنی! مثلاً users LEFT JOIN orders LEFT JOIN products. اینجوری اطلاعات زیادی رو میتونی به هم وصل کنی. 🕸️

‏فکر کن به یه کلاس درس که دانشجوهاش شماره دانشجویی دارن و یه جدول دیگه که نمراتشونه. اگه بخوای لیست کامل دانشجوها رو با نمراتشون ببینی (حتی اونایی که هنوز نمره نگرفتن)، LEFT JOIN ناجیته! 🎓📚


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #یادگیری_ماشین

🟣 موضوع : ‏یادگیری ماشین: Q-Learning - Prioritized Experience Replay در Q-Learning

نکته :

‏اگه دیدی Q-Learning گیر کرده، Prioritized Experience Replay رو امتحان کن. شانس یادگیری رو بالا می‌بره!


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #MySQL

🟣 موضوع : ‏کار با انواع JOIN در MySQL به صورت عملی
📖 سرفصل : ‏کلید خارجی (Foreign Key) و ایجاد ارتباط بین جداول

‏آقا، کلید خارجی مثل یه پل عمل می‌کنه بین جدول‌هاتون. اگه می‌خواین داده‌ها باهم مرتبط باشن، حتماً ازش استفاده کنین! 🌉🔗

‏می‌دونستین می‌تونین کلید خارجی رو با دستور ALTER TABLE اضافه کنین؟ خیلی راحت میشه جدول رو آپدیت کرد! 💻😉

‏اگه دارین کلید خارجی تعریف می‌کنین، مطمئن بشین که نوع داده‌ی ستون‌ها تو جداول مرتبط یکسان باشه. این خیلی مهمه! 🧐💯

‏وقتی یه کلید خارجی دارین، دیگه نمی‌تونین یه داده‌ی ناموجود رو به جدول‌تون اضافه کنین. اینطوری داده‌هاتون تمیز می‌مونن!

‏با کلیدهای خارجی، وقتی یه رکورد رو حذف می‌کنین، بقیه رکوردهای مرتبط هم می‌تونن حذف بشن، یا آپدیت بشن، یا اصلاً هیچ اتفاقی نیفته! انتخاب با شماست! 🔥⚙️

‏قبل از اینکه کلید خارجی تعریف کنین، حتماً مطمئن بشین که داده‌های قبلی‌تون با قوانین کلید خارجی سازگار باشن. وگرنه ارور می‌گیرین! 🤕🤦‍♀️

‏یه نکته‌ی مهم دیگه: موقع تعریف کلید خارجی، حتماً اسم براش بذارین. اینطوری راحت‌تر می‌تونین مدیریتش کنین. 📝👍

‏می‌خواین از کلید خارجی استفاده کنین ولی نمی‌دونین چطوری؟ گوگل کنین! کلی مثال و آموزش هست که کارتون رو راه می‌ندازه. 🤓📚

‏کلید خارجی‌ها، سرعت کوئری‌هاتون رو هم می‌تونن بهتر کنن. پس ازشون نترسین! 💪🚀

‏یادتون باشه کلید خارجی یعنی داده‌های باارزش‌تون رو منظم و درست نگه دارین. اینطوری از دردسرای آینده جلوگیری می‌کنین! 🎉🥳


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #NoSQL

🟣 موضوع : Cold vs Hot Partitions

نکته :

‏اگه داده‌ها رو درست دسته‌بندی نکنیم، ممکنه پارتیشن‌های سرد هم شلوغ بشن و کندی ایجاد کنن 🤦‍♀️


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
📚 نکته #SQLite

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏فیلتر کردن داده‌ها با WHERE

نکته 1:
‏بند WHERE در عبارات SQL (مانند SELECT، UPDATE و DELETE) به منظور اعمال یک شرط منطقی (Logical Condition) برای فیلتر کردن ردیف‌هایی که در عملیات دخیل هستند، استفاده می‌شود.

نکته 2:
‏فیلتر کردن با WHERE یک فرآیند گزینش (Selection) است که در آن، فقط ردیف‌هایی که شرط تعیین شده را با نتیجه صحیح (TRUE) ارضا می‌کنند، پردازش می‌شوند.

نکته 3:
‏شرط‌های درون بند WHERE با استفاده از عملگرهای مقایسه‌ای (Comparison Operators) نظیر =، >، <، >=، <=، و <> (یا !=) برای ارزیابی مقادیر ستون‌ها تعریف می‌شوند.

نکته 4:
‏برای ترکیب چندین شرط و ایجاد گزینش‌های پیچیده‌تر، از عملگرهای منطقی (Logical Operators) مانند AND، OR، و NOT استفاده می‌گردد.

نکته 5:
‏عملگر LIKE به همراه Wildcard Characters (نظیر % برای صفر یا چند کاراکتر و \_ برای یک کاراکتر واحد) برای انجام جستجوی الگو (Pattern Matching) در ستون‌های از نوع TEXT به کار می‌رود.

نکته 6:
‏عملگر IN امکان مقایسه یک ستون با مجموعه‌ای از مقادیر مشخص یا با نتایج بازگشتی از یک زیرپرس و جو (Subquery) را فراهم می‌سازد.

نکته 7:
‏عملگر BETWEEN یک روش کارآمد برای فیلتر کردن مقادیری است که در یک بازه بسته (شامل حد بالا و پایین) قرار دارند و جایگزین مناسبی برای ترکیب دو شرط مقایسه‌ای با AND است.

نکته 8:
‏در SQLite، هنگام ارزیابی شرط‌ها، ترتیب عملیات منطقی بر اساس تقدم عملگرها (Operator Precedence) انجام می‌گیرد، که استفاده از پرانتزها می‌تواند این ترتیب را به صورت صریح تغییر دهد.

نکته 9:
‏بهینه‌سازی عملکرد پرس‌وجو (Query Performance) به شدت به بند WHERE وابسته است، زیرا وجود اندیس‌های مناسب (Indexes) بر روی ستون‌های استفاده شده در شروط، فرآیند فیلتر کردن را تسریع می‌بخشد.

نکته 10:
‏توجه به Type Affinity ستون‌ها در SQLite هنگام استفاده از عملگرهای مقایسه‌ای در بند WHERE ضروری است، چرا که سیستم نوع‌دهی پویا ممکن است منجر به تبدیل نوع ضمنی (Implicit Type Conversion) شود.

نکته 11:
`


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #NoSQL

🟣 موضوع : ‏Profiling کوئری‌ها

نکته :

‏بعد از بهینه‌سازی، حتما کوئری‌ها رو با حجم داده‌های واقعی تست کن. 🧐


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #یادگیری_ماشین

🟣 موضوع : ‏TensorFlow - مقدمات - کاربردهای TensorFlow در مسائل یادگیری ماشین و یادگیری عمیق

نکته :

‏از community های TensorFlow استفاده کن! اونجا کلی آدم هستن که میتونن کمکت کنن و کلی ایده بهت بدن.🤝


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #NoSQL

🟣 موضوع : ‏Balance و Rebalance در کلاستر

نکته :

‏یه کلاستر متعادل، مثل یه تیم قوی و کاردانی می‌مونه که هر کی وظیفه‌اش رو درست انجام می‌ده! 💪


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
📚 نکته #SQLite

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏پایگاه داده SQLite به عنوان یک فایل

نکته 1:
‏SQLite پایگاه داده خود را به صورت یک فایل واحد در سیستم فایل ذخیره می‌کند که شامل تعریف جداول، داده‌ها، اندیس‌ها و فراداده‌ها (Metadata) است.

نکته 2:
‏استفاده از یک فایل واحد برای ذخیره‌سازی، عملیات پشتیبان‌گیری (Backup) و انتقال (Portability) پایگاه داده را بسیار تسهیل می‌کند، زیرا تنها نیاز به کپی کردن همان فایل است.

نکته 3:
‏قالب فایل پایگاه داده SQLite قابل حمل بوده و می‌تواند بین سیستم‌های عامل مختلف (مانند ویندوز، لینوکس، مک‌اواس) بدون نیاز به تبدیل خاصی مبادله شود.

نکته 4:
‏این معماری مبتنی بر فایل، عدم نیاز به یک سرویس سرور پایگاه داده مجزا را در پی دارد که منجر به کاهش سربار مدیریتی و منابع سیستمی می‌شود.

نکته 5:
‏ساختار داخلی فایل SQLite به بلوک‌هایی با اندازه ثابت تقسیم می‌شود که به صفحات (Pages) معروف هستند و شامل داده‌ها و ساختارهای مدیریتی می‌باشند.

نکته 6:
‏فایل پایگاه داده SQLite از نظر قفل‌گذاری (Locking) توسط سیستم فایل میزبان مدیریت می‌شود تا سازگاری و یکپارچگی تراکنش‌ها در محیط‌های چندکاربره (Multi-user) حفظ گردد.

نکته 7:
‏حجم فایل SQLite می‌تواند تا چند ترابایت افزایش یابد، اگرچه اندازه مؤثر و عملیاتی آن به محدودیت‌های سیستم فایل و حافظه سیستم میزبان وابسته است.

نکته 8:
‏برای اطمینان از اتمیسیته (Atomicity) و ماندگاری (Durability) تراکنش‌ها، SQLite از مکانیزم نوشتن-به-عقب-بازگرداندن (Rollback Journal) یا نوشتن-پیش‌رو-لاگ‌گذاری (WAL - Write-Ahead Logging) برای مدیریت تغییرات استفاده می‌کند.

نکته 9:
‏ساختار فایل SQLite شامل هدر (Header) است که اطلاعات مهمی مانند نسخه فرمت، اندازه صفحه، و نشانگرهای آزاد فضای ذخیره‌سازی را در خود جای داده است.

نکته 10:
‏به دلیل وابستگی مستقیم به سیستم فایل میزبان، عملکرد (Performance) عملیات ورودی/خروجی (I/O) در SQLite به شدت تحت تأثیر کارایی دیسک و تنظیمات کش سیستم عامل قرار دارد.


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #یادگیری_ماشین

🟣 موضوع : ‏یادگیری ماشین: LDA - ترکیب LDA با PCA برای کاهش ابعاد اولیه

نکته :

‏وقتی میخوای LDA رو با PCA ترکیب کنی، اول PCA رو اجرا کن که نویزها رو حذف کنه و ابعاد اولیه رو کم کنه، بعدش LDA رو بچسبون روش! 🔥


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #SQL

🟣 موضوع : ‏نمایش نتایج با DISTINCT

نکته :

‏DISTINCT یه راه ساده و سریع برای حذف تکراری‌هاست. یادت باشه، SQL یه عالمه راه‌حل داره! 🎉


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
📚 نکته #SQLite

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏انواع VACUUM

نکته 1:
‏رایج‌ترین نوع VACUUM، یعنی VACUUM ساده، کل پایگاه داده را بازسازی کرده و فضای خالی بازیابی شده را به سیستم عامل بازمی‌گرداند که شامل بازنویسی کامل فایل دیتابیس است.

نکته 2:
‏نوع دوم VACUUM که با PRAGMA \ auto\_vacuum تنظیم می‌شود، به دو صورت INCREMENTAL و FULL عمل می‌کند تا بازیابی فضا به صورت خودکار یا تدریجی مدیریت شود.

نکته 3:
‏auto\_vacuum = FULL اطمینان حاصل می‌کند که پس از هر عملیات DELETE که منجر به ایجاد صفحات خالی می‌شود، فضای آزاد به صورت خودکار بازیابی و به انتهای فایل منتقل گردد، اما به اندازه VACUUM کامل کارآمد نیست.

نکته 4:
‏auto\_vacuum = INCREMENTAL صرفاً صفحات خالی را که در انتهای فایل پایگاه داده قرار دارند، حذف کرده و اندازه فایل را کاهش می‌دهد، اما صفحات خالی داخلی (Internal Free Pages) دست‌نخورده باقی می‌مانند.

نکته 5:
‏نوع دیگری از VACUUM، VACUUM INTO \ 'filename', یک کپی کامل، فشرده و بازسازی شده از پایگاه داده اصلی را در فایل مشخص شده توسط filename ایجاد می‌کند.

نکته 6:
‏VACUUM INTO بر خلاف VACUUM ساده، فایل پایگاه داده اصلی را دستکاری نمی‌کند، بلکه نسخه بهینه‌سازی شده را در یک فایل مقصد جدید ذخیره می‌نماید و برای ایجاد نسخه‌های پشتیبان فشرده مناسب است.

نکته 7:
‏زمانی که auto\_vacuum فعال است (چه FULL و چه INCREMENTAL)، فرم VACUUM ساده فقط عمل مرتب‌سازی جداول و شاخص‌ها را انجام می‌دهد و عملیات فشرده‌سازی خودکار را تقویت نمی‌کند.

نکته 8:
‏PRAGMA \ incremental\_vacuum(N) فرمتی از INCREMENTAL است که امکان بازیابی حداکثر N صفحه خالی را در هر بار اجرا فراهم می‌آورد و امکان کنترل دقیق بر سربار عملیاتی را می‌دهد.

نکته 9:
‏در محیط‌های WAL (Write-Ahead Logging)، VACUUM معمولی، فایل‌های ژورنال و WAL را نیز فشرده کرده و تغییرات را به صورت دائمی در پایگاه داده اصلی اعمال می‌کند و سپس فایل‌های اضافی را حذف می‌نماید.

نکته 10:
‏انتخاب نوع VACUUM مناسب وابسته به میزان تحمل زمان توقف (Downtime) و فرکانس عملیات حذف و به روزرسانی در سیستم، و نیز میزان حساسیت به حجم نهایی فایل پایگاه داده است.


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir