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

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

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

نکته 1:
‏توابع JSON در SQLite، که بخشی از افزونه JSON1 هستند، امکان ایجاد، پرس‌وجو، استخراج، اصلاح و اعتبارسنجی اسناد JSON را در داخل محیط SQL فراهم می‌آورند.

نکته 2:
‏تابع json\_extract(X, P1, P2, ...) مهم‌ترین ابزار برای دسترسی به مقادیر داخلی یک سند JSON بر اساس مسیرهای (Path) مشخص شده توسط کاربر است.

نکته 3:
‏توابع سازنده (Constructors) شامل json() برای ایجاد اشیاء JSON و json() برای تولید آرایه‌های JSON از فهرست مقادیر ورودی استفاده می‌شوند.

نکته 4:
‏تابع json, json, و json\_set به منظور دستکاری و تغییر محتوای یک سند JSON موجود بر اساس مسیرهای دقیق و مقادیر جدید به کار می‌روند.

نکته 5:
‏تابع json\_remove(X, P1, P2, ...) امکان حذف یک یا چند عنصر از ساختار JSON را از طریق ارجاع به مسیرهای مشخص فراهم می‌کند.

نکته 6:
‏برای بررسی صحت ساختاری یک رشته به عنوان سند JSON معتبر، تابع مقیاسی json\_valid(X) استفاده می‌شود که در صورت اعتبار 1 و در غیر این صورت 0 برمی‌گرداند.

نکته 7:
‏تابع json\_type(X, P) برای تعیین نوع داده (Type) یک عنصر خاص در مسیر مشخص شده از سند JSON، نظیر 'object', 'array', 'text', یا 'integer' استفاده می‌شود.

نکته 8:
‏تابع جدول‌محور json\_each(X, P) برای تجزیه یک آرایه یا شیء JSON به ردیف‌های موقت استفاده می‌شود که امکان پردازش مجموعه‌ای و ستونی بر روی عناصر JSON را میسر می‌سازد.

نکته 9:
‏توابع تجمیعی json(X) و json(X, Y) امکان جمع‌آوری نتایج کوئری‌ها را به ترتیب به صورت یک آرایه یا یک شیء JSON واحد در خروجی فراهم می‌سازند.

نکته 10:
‏مسیرهای JSON که در توابع فوق استفاده می‌شوند، باید با نماد '' برای ارجاع به ریشه سند شروع شوند و از اصول JSONPath$ پیروی نمایند.


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

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

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

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

🟣 موضوع : ‏کار با انواع JOIN در MySQL به صورت عملی
📖 سرفصل : ‏چرا MySQL به صورت بومی از FULL OUTER JOIN پشتیبانی نمی‌کند؟

‏مای‌اس‌کیو‌ال خودش FULL OUTER JOIN نداره، ولی غصه نداره! 😉 می‌تونی با ترکیب LEFT JOIN و RIGHT JOIN و UNION خیلی شیک همون کار رو انجام بدی. 💡

‏قدیما که مای‌اس‌کیو‌ال ساخته شد، تمرکزشون روی سرعت و سادگی برای وب‌سایت‌ها بود. FULL OUTER JOIN اونقدرها کاربرد روزمره نداشت و سنگین بود، برای همین تو اولویت نبود. 🚀

‏حواست باشه FULL OUTER JOIN می‌تونه خیلی کند و حافظه‌خور باشه، مخصوصاً روی جدول‌های بزرگ! 🐢 شاید مای‌اس‌کیو‌ال با نداشتنش داره بهمون لطف می‌کنه که حواسمون به پرفورمنس باشه.

‏اگه کارت خیلی گیر FULL OUTER JOIN هست و نمی‌خوای شبیه‌سازیش کنی، یه سر به MariaDB بزن. اون فورکی از مای‌اس‌کیو‌ال هست که این قابلیت رو اضافه کرده. 🛠️

‏راستشو بخوای، توی ۹۹٪ مواقع INNER JOIN و LEFT JOIN کارت رو راه میندازه. FULL OUTER JOIN خیلی خاص و کم‌استفاده‌ست. پس نگران نباش! 😊

‏بلد بودن اینکه چطور با UNION یه FULL OUTER JOIN بسازی، یه مهارت خفنه! 🔥 نشون میده که عمیقاً می‌دونی JOIN ها چطوری کار می‌کنن.

‏اگه مدام حس می‌کنی به FULL OUTER JOIN نیاز داری، شاید یه زنگ خطره! 🔔 بد نیست یه نگاه دوباره به طراحی دیتابیس و روابط بین جدول‌هات بندازی.

‏مای‌اس‌کیو‌ال همیشه سعی کرده ساده و بهینه باشه. اضافه کردن هر ویژگی پیچیده‌ای می‌تونه موتور دیتابیس رو کندتر کنه و این خلاف فلسفه‌شونه. 😜

‏FULL OUTER JOIN یعنی «هر چی از جدول چپ هست بیار، هر چی از جدول راست هست هم بیار». وقتی اینو بدونی، شبیه‌سازیش با UNION خیلی منطقی به نظر میاد. 🧠

‏خلاصه که نبودنش آخر دنیا نیست! کلی راه حل جایگزین هست و برای اکثر کارها اصلاً لازمش نداری. پس با خیال راحت با همون LEFT و RIGHT کارت رو پیش ببر. 👍


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

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

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

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

🟣 موضوع : ‏کار با انواع JOIN در MySQL به صورت عملی
📖 سرفصل : ‏استفاده از CTE برای ساده‌سازی JOINهای پیچیده

‏اگه JOIN هات حسابی پیچیده شدن و هی سر در گم میشی، CTE ها دوستای واقعی تو هستن! 😉

‏با CTE مثل یه نقشه راه عمل کن، اول مراحل رو جدا جدا بنویس بعد وصلشون کن. خیلی خفن میشه! 🗺️

‏فکر کن داری قصه‌ی داده‌هاتو تعریف می‌کنی. CTE باعث میشه داستانت سر راست و قشنگ باشه. 📖

‏دقت کن، CTE فقط یه نمای مجازی ایجاد می‌کنه، پس حواسش به کارای دیگه باشه! 🧐

‏وقتی قراره یه کوئری چند بار اجرا بشه، CTE می‌تونه باعث سرعت بیشتر بشه. یه جورایی کش کردن هوشمنده! 🚀

‏اگه می‌خوای کوئریت خواناتر بشه، CTE عالیه! انگار داری به خودت یا همکارات کمک می‌کنی. 🤗

‏نترس، CTE رو امتحان کن! ممکنه اولش یکم غریبه باشه ولی سریع عاشقش میشی. 😍

‏برای بازگشت‌های بازگشتی (recursive CTEs) واقعا کاربردیه، مخصوصاً تو ساختارهای درختی. 🌳

‏به جای کوئری‌های تودرتوی وحشتناک، یه CTE بزن و نفس راحت بکش. 😮‍💨

‏CTE ها رو با نام‌های معنی‌دار صدا بزن تا خودت و بقیه بفهمین دارین چی کار می‌کنین! 📛


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

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

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

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

🟣 موضوع : ‏دستور CREATE DATABASE و CREATE TABLE

نکته :

‏برای ستون‌هایی که مقدارشون تکراریه، از UNIQUE استفاده کن. اینجوری از ورود اطلاعات تکراری جلوگیری می‌کنی. 🤩


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

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

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

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

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

نکته 1:
‏ATTACH DATABASE چیه؟ 🤔 مثل این می‌مونه که یه فایل دیتابیس SQLite دیگه رو به صورت موقت به دیتابیس فعلیت وصل کنی. یه پیوند موقت! 🔗

نکته 2:
‏هدفش اینه که بتونی تو یه کوئری، همزمان به جدول‌های هر دو دیتابیس (دیتابیس اصلی و دیتابیس پیوست‌شده) دسترسی داشته باشی. 🤝💡

نکته 3:
‏برای وصل کردن، باید یه نام مستعار (Alias) برای دیتابیس پیوست‌شده بذاری: ATTACH DATABASE 'مسیرفایل.db' AS backupdb;. 📝

نکته 4:
‏برای دسترسی به جدول‌های دیتابیس پیوست‌شده، اسم جدول رو با اسم مستعارش صدا بزن: SELECT * FROM backup_db.users;. 🔍

نکته 5:
‏از ATTACH برای کپی کردن داده‌ها بین دو دیتابیس استفاده کن. INSERT INTO main.table SELECT * FROM attached_db.table; خیلی سریع و کاربردیه! 🚀🔥

نکته 6:
‏برای قطع کردن اتصال دیتابیس، از دستور DETACH DATABASE alias_name; استفاده کن. این فقط ارتباط رو قطع می‌کنه، نه فایل دیتابیس رو حذف. ✂️

نکته 7:
‏مواظب باش، SQLite محدودیت‌هایی برای تعداد دیتابیس‌هایی که می‌تونی همزمان وصل کنی داره (معمولاً ۱۰ تا). پس شلوغش نکن! 🔢

نکته 8:
‏تو می‌تونی با ATTACH یه دیتابیس رو به عنوان Backup یا Archive وصل کنی و داده‌های قدیمی رو ازش بخونی بدون اینکه فایل اصلی رو شلوغ کنی. 💾

نکته 9:
‏یه ترفند باحال: می‌تونی یه دیتابیس جدید و خالی رو ATTACH کنی و داده‌ها رو توش کپی کنی تا یه فایل دیتابیس تمیز و بهینه بسازی! 🧹

نکته 10:
‏ATTACH فقط روی اتصال فعلی تو کار می‌کنه. وقتی برنامه بسته شه، اون اتصال هم قطع می‌شه و برای استفاده دوباره باید مجدداً ATTACH کنی. 🚪😎


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

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

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

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

🟣 موضوع : ‏یادگیری ماشین: LDA - انتخاب تعداد مؤلفه‌ها (حداکثر K-1 برای K کلاس)

نکته :

‏به «نسبت واریانس توضیح داده شده» نگاه کن. ببین هر مؤلفه چقدر از اطلاعات جداسازی رو حمل می‌کنه. اگه دو مؤلفه اول ۹۵٪ کار رو انجام دادن، بقیه‌اش شاید لازم نباشه!


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

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

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

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

🟣 موضوع : On‑Demand Capacity (DynamoDB)

نکته :

‏به عنوان یه دولوپر، دیگه لازم نیست ذهنت رو درگیر تنظیمات ظرفیت کنی. فقط روی نوشتن کد عالی تمرکز کن و بقیه رو بسپر به DynamoDB! 🧑‍💻


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

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

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

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

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

نکته :

‏از DISTINCT برای حذف مقادیر تکراری استفاده کن! اگه یه لیست از اسامی داری و می‌خوای فقط اسامی منحصربه‌فرد رو ببینی، DISTINCT کارت رو راه‌ می‌اندازه. 😉


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

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

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

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

🟣 موضوع : ‏Performance Tuning و بهینه‌سازی کوئری

نکته :

‏شرط‌های WHERE رو دقیق بنویس! 🎯 هرچی شرط فیلترت دقیق‌تر باشه، دیتابیس کار کمتری انجام میده. از توابع روی ستون‌هایی که ایندکس دارن تا جایی که میشه استفاده نکن.


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

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

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

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

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

نکته 1:
‏نمایه‌ها را می‌توان از منظر اعمال محدودیت‌های یکپارچگی به دو نوع اصلی تقسیم کرد: نمایه‌های غیرمنحصربه‌فرد (Non-Unique Indexes) و نمایه‌های منحصربه‌فرد (UNIQUE Indexes).

نکته 2:
‏نمایه غیرمنحصربه‌فرد صرفاً به منظور بهبود عملکرد جستجو ایجاد می‌شود و اجازه می‌دهد که مقادیر تکراری در ستون‌های نمایه شده وجود داشته باشند.

نکته 3:
‏نمایه منحصربه‌فرد علاوه بر تسریع جستجو، یک قید یکپارچگی را اعمال می‌کند و تضمین می‌نماید که هیچ دو ردیفی دارای مقادیر یکسان در ستون‌های نمایه شده نباشند.

نکته 4:
‏بر اساس تعداد ستون‌ها، نمایه‌ها به دو دسته نمایه تک‌ستونی (Single-Column Index) و نمایه چندستونی یا ترکیبی (Composite Index) طبقه‌بندی می‌شوند.

نکته 5:
‏نمایه تک‌ستونی تنها بر روی یک ستون واحد ایجاد می‌شود و در پرس‌وجوهایی که صرفاً بر اساس آن ستون فیلتر می‌کنند، کارایی بالایی دارد.

نکته 6:
‏نمایه ترکیبی بر روی دو یا چند ستون به صورت همزمان ایجاد می‌شود و برای بهینه‌سازی پرس‌وجوهایی که شامل شروط فیلتر یا مرتب‌سازی بر روی ترکیب آن ستون‌ها هستند، حیاتی است.

نکته 7:
‏نمایه‌های SQLite از نظر ساختار فیزیکی به دو نوع ضمنی تقسیم می‌شوند: نمایه‌های ایجاد شده برای PRIMARY KEY INTEGER که به طور مستقیم همان B-tree جدول اصلی است (Clustered Index)، و نمایه‌های ثانویه.

نکته 8:
‏نمایه‌های ثانویه (Secondary Indexes) شامل یک ساختار B-tree مجزا هستند که کلیدهای نمایه شده را نگهداری کرده و به آدرس (rowid) سطر متناظر در جدول اصلی اشاره می‌کنند.

نکته 9:
‏SQLite همچنین از نمایه‌های بر اساس عبارت (Indexes on Expressions) پشتیبانی می‌کند که می‌توانند بر روی نتیجه یک تابع یا عبارت محاسباتی اعمال شوند تا جستجوی کارآمدی در آن عبارت فراهم شود.

نکته 10:
‏در نسخه‌های جدید، SQLite از نمایه‌های جزئی (Partial Indexes) نیز پشتیبانی می‌کند که صرفاً بر روی زیرمجموعه‌ای از سطرها (که یک شرط WHERE را ارضا می‌کنند) اعمال می‌شوند و حجم و سربار نمایه را کاهش می‌دهند.


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

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

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

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

🟣 موضوع : ‏کار با انواع JOIN در MySQL به صورت عملی
📖 سرفصل : ‏تمرین شبیه‌سازی FULL OUTER JOIN

‏واااای! شبیه سازی FULL OUTER JOIN تو MySQL یکم tricky 🤯، ولی نترس! اول LEFT JOIN بزن، بعد RIGHT JOIN. بعدش ردیف هایی که تو هر دو هستن رو حذف کن! 😎✌️

‏یادت نره قبل از شبیه سازی FULL OUTER JOIN حتما بک آپ از جداولاتت بگیر! 💾 یهو دیدی یه چیزی قاطی شد! 😉

‏واسه شبیه سازی FULL OUTER JOIN یه جدول موقت درست کن. اینجوری دستت بازتره و اصلی ها دست نخورده میمونن. 💡👌

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

‏حتما بعد از شبیه سازی FULL OUTER JOIN، نتایج رو با دقت چک کن! یه اشتباه کوچیک میتونه کلی دردسر درست کنه. 🔥🧐

‏برای اینکه کارت تو شبیه سازی FULL OUTER JOIN سریع تر پیش بره، حتما از ایندکس ها استفاده کن! اینجوری MySQL سریع تر داده ها رو پیدا میکنه. 🚀😎

‏اگه تو شبیه سازی FULL OUTER JOIN به مشکل خوردی، از Stack Overflow کمک بگیر! کلی برنامه نویس اونجا هستن که میتونن راهنماییت کنن. 👍💡

‏موقع شبیه سازی FULL OUTER JOIN حواست به نوع داده ها باشه! اگه نوع داده ها یکی نباشه، جوین درست کار نمیکنه. 🤓🔥

‏بعد از اینکه شبیه سازی FULL OUTER JOIN تموم شد، دستور DROP TABLE رو یادت نره! جدول موقت رو حذف کن که فضا الکی اشغال نشه. 🗑️

‏اگه حجم داده هات خیلی زیاده، شبیه سازی FULL OUTER JOIN میتونه خیلی طول بکشه. پس صبور باش و یه چای بخور! ☕️😌


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

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

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

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

🟣 موضوع : Multi‑Region Replication

نکته :

‏فکر Disaster Recovery هم باش! یه سناریو داشته باش که اگه یه منطقه کلا رفت رو هوا 💥، دیتات از دست نره.


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

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

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

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

یادگیری گروهی (Ensemble Learning) 🤝

تا الان در مورد یک مدل فکر می کردی؟ حالا تصور کن به جای یک مدل، یه تیم از مدل‌ها رو داشته باشیم که با هم کار می‌کنن.

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

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

چرا این روش انقدر موثره؟

کاهش خطا: هر کدوم از مدل‌های ساده ممکنه اشتباهاتی داشته باشن، اما وقتی پیش‌بینی‌هاشون رو با هم جمع می‌کنی (مثلاً با میانگین‌گیری یا رأی‌گیری)، اشتباهات فردی هم خنثی می‌شن.

افزایش پایداری: مدل نهایی خیلی پایدارتره و کمتر تحت تأثیر نویز و داده‌های پرت قرار می‌گیره.

به خاطر همین، تکنیک‌هایی مثل جنگل تصادفی (Random Forest) و تقویت گرادیان (Gradient Boosting) که بر پایه همین ایده ساخته شدن، جزو قوی‌ترین و پرکاربردترین الگوریتم‌های یادگیری ماشین هستن. 🚀

خلاصه اینکه، اگه یه مدل تنها خوب کار نکرد، همیشه می‌تونی یه تیم از مدل‌ها رو با هم جمع کنی تا نتیجه بهتر بشه.

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


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

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

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

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

نکته 1:
‏SQLite فوق‌العاده سبکه و بدون سرور کار می‌کنه، این یعنی راه‌اندازی سریع و بدون دردسر 💡

نکته 2:
‏چون فقط یه فایل دیتابیسی داری، بکاپ‌گیری و جابه‌جایی خیلی آسونه 🔥📁

نکته 3:
‏برای اپ‌های موبایل و پروژه‌های کوچک تا متوسط کاملاً ایده‌آله و سرعت خوبی می‌ده 📱

نکته 4:
‏مصرف منابعش خیلی کمه، پس روی دستگاه‌های ضعیف هم مشکلی نداری 🚀

نکته 5:
‏به خاطر پشتیبانی از SQL استاندارد، یادگیری و استفاده ازش راحت و آشناست 📜💡

نکته 6:
‏از طرف دیگه برای پروژه‌های خیلی بزرگ یا سیستم‌های چندکاربره سنگین مناسب نیست 😅

نکته 7:
‏هم‌زمانی بالا (High Concurrency) نقطه‌ضعفه؛ چون فایل‌محوره و نمی‌تونه مثل سرورها پردازش سنگین انجام بده 🔧⚠️

نکته 8:
‏امکان مدیریت سطح بالا مثل خوشه‌بندی یا توزیع داده‌ها رو نداره، پس برای مقیاس‌پذیری محدود می‌شه 📉

نکته 9:
‏دیتابیس روی دیسک تزریق می‌شه و برای ترافیک خیلی حجیم گزینه‌ی ایده‌آل نیست 🚫🔥

نکته 10:
‏ولی برای ۹۰٪ پروژه‌های سبک و متوسط، بهترین انتخاب از نظر سادگی، سرعت و راحتی کاره 🙌💡


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

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

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

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

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

نکته 1:
‏وقتی یه ردیف رو حذف می‌کنی، SQLite اون فضا رو فوری به سیستم‌عامل پس نمی‌ده و حجم فایل دیتابیس کم نمی‌شه. 💾💡

نکته 2:
‏فضای خالی ایجاد شده، به یه لیستی به نام "Free List" یا لیست صفحات خالی اضافه می‌شه. این لیست فضای آماده مصرف رو نگه می‌داره. 📝

نکته 3:
‏هدف از این کار اینه که دفعه بعد که یه رکورد جدید INSERT می‌کنی، SQLite از این فضای خالی استفاده کنه و نیاز به گسترش فایل رو کم کنه. 🚀

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

نکته 5:
‏اگه تعداد زیادی داده رو حذف و اضافه کنی، دیتابیس می‌تونه حجمش بزرگ بمونه، در حالی که بیشترش فضای خالی داخلیه. به این می‌گن Fragmented شدن. ✂️

نکته 6:
‏برای اینکه واقعاً فضای خالی رو از فایل دیتابیس جدا کنی و حجم فایل رو کم کنی، باید دستور جادویی VACUUM رو اجرا کنی. 🧹

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

نکته 8:
‏اما VACUUM می‌تونه زمان‌بر باشه، چون کل داده‌ها رو کپی و دوباره می‌نویسه. پس برای دیتابیس‌های خیلی بزرگ، با احتیاط استفاده کن. 🐘

نکته 9:
‏اگه نمی‌خوای VACUUM زمان زیادی ببره، می‌تونی از PRAGMA incremental_vacuum استفاده کنی که فقط یه تعداد مشخص از صفحات رو تمیز می‌کنه. تمیزکاری ذره‌ذره! 🤏

نکته 10:
‏برای اینکه ببینی دیتابیس چقدر فضای خالی داره، می‌تونی از دستور PRAGMA freelist_count استفاده کنی. این بهت تعداد صفحات خالی رو نشون می‌ده. 🧐😎


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

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

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

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

🟣 موضوع : ‏کار با انواع JOIN در MySQL به صورت عملی
📖 سرفصل : ‏سینتکس صریح و ضمنی CROSS JOIN

‏میدونستی وقتی دو تا جدول رو با کاما تو FROM میاری، مثلاً FROM جدول1, جدول2، داری یه CROSS JOIN ضمنی انجام میدی؟ 🤫 این میشه ضرب کارتزین! 💥

‏برای وضوح بیشتر، بهتره از CROSS JOIN صریح استفاده کنی! یعنی بنویسی FROM جدول1 CROSS JOIN جدول2. اینجوری همه می‌فهمن دقیقاً چی‌کار داری می‌کنی. 😉

‏CROSS JOIN چی‌کار می‌کنه؟ 🤔 خیلی ساده، هر سطر از جدول اول رو با تک تک سطرهای جدول دوم ترکیب می‌کنه! فکر کن یه لیست هر سطر رو با همه ترکیب می‌کنه. 🤯

‏حواست باشه! CROSS JOIN معمولاً برای ترکیب‌های خاص یا تولید داده‌های تست استفاده میشه. اگه بدون فکر استفاده کنی، ممکنه یه عالمه سطر بی‌ربط تولید کنی! 😅 مواظب باش!

‏اگه جدول‌هات بزرگ باشن، CROSS JOIN می‌تونه یه خروجی خیلی بزرگ و سنگین تولید کنه که سیستمت رو کند کنه! 🐢 همیشه حجم داده رو در نظر بگیر. ⚠️

‏یه راز کوچیک! 🤫 وقتی INNER JOIN رو بدون شرط ON استفاده می‌کنی، در واقع مثل یه CROSS JOIN عمل می‌کنه! پس INNER JOIN جدول2 بدون ON همون CROSS JOIN هست. 💡

‏یادت باشه، SELECT * FROM A, B WHERE A.id = B.id در اصل یه CROSS JOIN ضمنی هست که با WHERE به INNER JOIN تبدیل میشه. خیلی جالبه نه؟ 🤔💡

‏همیشه سعی کن کد خوانا بنویسی. CROSS JOIN صریح (explicit) خیلی واضح‌تر از روش ضمنی (implicit) هست و به بقیه کمک می‌کنه سریع‌تر کدتو بفهمن. 🧑‍💻

‏مهمترین نکته: CROSS JOIN اصلاً شرط ON نداره! چون کارش ترکیب کردن تمام سطرهاست و نیازی به تطابق خاصی نداره. 🎯 اینو یادت باشه.

‏کاربردهای CROSS JOIN همیشه تو گزارش‌گیری نیست. مثلاً می‌تونی برای ساختن ترکیب‌های ممکن از چند لیست یا تولید تقویم‌های دینامیک ازش استفاده کنی. 🗓️🔗 خلاق باش!


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

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

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

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

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

نکته :

‏اگه یه وقت "Master" خراب شد، "Slave"ـها آماده‌ان که جاشو بگیرن! 💪 این یعنی Downtime کم‌تر!


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

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

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

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

🟣 موضوع : ‏یادگیری ماشین: Apriori - سیستم‌های توصیه‌گر (Recommendation Systems)

نکته :

‏سیستم‌های توصیه‌گر مثل همون دوست خوبتن که می‌دونن چی دوست داری و بهت پیشنهاد میدن. دیگه لازم نیست ساعت‌ها تو اینترنت بگردی! 🤩


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

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

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

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

🟣 موضوع : ‏Deadlock و روش‌های جلوگیری

نکته :

‏تراکنش‌هات رو تا حد امکان کوتاه و سریع نگه دار! ⚡️ هر چی زودتر کارتو تموم کنی، فرصت ددلاک کمتره.


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

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

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

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

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

‏FULL OUTER JOIN چیه؟ 🤔 فرض کن دو تا جدول داری، این JOIN هرچیزی که تو جفتشونه رو بهت نشون می‌ده، حتی اگه تو اون یکی طرفش مطابقت نداشته باشه!

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

‏نکته مهم! 💡 MySQL مستقیماً 'FULL OUTER JOIN' نداره. باید از ترکیب 'LEFT JOIN' و 'RIGHT JOIN' با 'UNION' استفاده کنی. یه کم پیچیده‌تره ولی شدنیه! 💪

‏برای شبیه‌سازی، اول یه 'LEFT JOIN' بزن که همه ردیف‌های جدول سمت چپ رو با مطابقت‌هاش از راست بیاره. جایی که مطابقت نیست، NULL میاد. 👈

‏بعدش یه 'RIGHT JOIN' بزن که همه ردیف‌های جدول سمت راست رو با مطابقت‌هاش از چپ بیاره. باز هم NULL برای نامطابق‌ها. 👉

‏حالا این دو تا کوئری رو با 'UNION' به هم وصل کن. حواست باشه 'UNION' خودش Duplicate ها رو حذف می‌کنه، پس 'UNION ALL' استفاده نکن مگر اینکه واقعاً بخوای تکراری‌ها هم باشند! 👨‍💻

‏کی به کارت میاد؟ وقتی می‌خوای ببینی چه رکوردهایی فقط تو جدول A هستن، چه رکوردهایی فقط تو جدول B هستن، و چه رکوردهایی تو هر دو! 📊 برای تحلیل کامل عالیه.

‏مثلاً داری لیست مشتری‌ها و سفارش‌ها رو بررسی می‌کنی. می‌خوای هم مشتری‌هایی که سفارش ندادن رو ببینی، هم سفارش‌هایی که شاید مشتری براشون تو دیتابیس نیست، و هم مشتری‌هایی که سفارش دادن. 🛒

‏ترکیب 'LEFT JOIN' و 'RIGHT JOIN' با 'UNION' می‌تونه سنگین باشه، مخصوصاً برای جداول بزرگ. 🐢 حواست به ایندکس‌ها باشه تا سرعتش نیاد پایین! 🏎️

‏همیشه قبلش فکر کن آیا واقعاً 'FULL OUTER JOIN' نیاز داری یا یه 'LEFT JOIN' یا 'RIGHT JOIN' ساده‌تر هم کارت رو راه می‌ندازه. گاهی اوقات راه حل ساده‌تر، بهتره! 🤔💡


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

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

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

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

🟣 موضوع : ‏مثال‌های معروف Column‑Family (Cassandra، HBase)

نکته :

‏در Cassandra، هر ردیف می‌تونه ستون‌های متفاوتی داشته باشه، این خیلی انعطاف‌پذیره 👍.


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

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

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

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