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

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

🟣 موضوع : CQRS (Command Query Responsibility Segregation)

نکته :

‏فکر کن یه فروشگاه آنلاین داری. هزار نفر همزمان محصول می‌بینن (Query)، ولی فقط چند نفر سفارش می‌دن (Command). با CQRS می‌تونی سمت Query رو خیلی خیلی قوی‌تر و سریع‌تر بسازی تا همه بتونن بدون معطلی خرید کنن. 🛍️🛒


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

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

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

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

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

‏اگه میخوای نتایج گروه‌بندیت رو فیلتر کنی، به جای WHERE از HAVING استفاده کن! خیلی باحاله 😎🔥

‏یادت نره HAVING بعد از GROUP BY میاد. اینجوری SQL Server گیج نمیشه 💡

‏HAVING میتونه شرط های پیچیده تری داشته باشه. مثلاً میانگین یه ستون رو چک کنه!

‏اگه از HAVING استفاده میکنی، حتماً یه ستون aggregate function (مثل COUNT، AVG) توش داشته باشی.

‏میتونی چند تا شرط رو با AND و OR توی HAVING ترکیب کنی. قدرتش رو دست کم نگیر! 😎

‏یه مثال ساده: SELECT department, COUNT() FROM employees GROUP BY department HAVING COUNT() > 10. باحاله مگه نه؟ 🔥

‏قبل از HAVING، دیتابیس اول داده ها رو GROUP BY میکنه، بعد HAVING اون ها رو فیلتر میکنه. اینو یادت نره! 💡

‏میتونی alias برای ستون aggregate function تعریف کنی و بعد توی HAVING ازش استفاده کنی. کارتو راحت میکنه

‏اگه توی WHERE و HAVING شرط های مشابه داری، سعی کن اونایی که میشه رو توی WHERE بذاری. اینجوری سریعتر میشه.

‏حواست باشه که HAVING فقط برای گروه‌بندی شده هاست! اگه GROUP BY نداشته باشی، ارور میده! 😎


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

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

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

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

🟣 موضوع : Provisioned Throughput (DynamoDB)

نکته :

"Burst capacity" DynamoDB'de harika bir özelliktir. 🌟 Ani trafik artışları için hazırda bekler, ancak her zaman ona güvenme!


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

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

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

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

🟣 موضوع : ‏NoSQL در مقابل SQL

نکته :

‏NoSQL برای اپلیکیشن‌هایی که سریع تغییر می‌کنن و حجم داده بالایی دارن عالیه 🚀.


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

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

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

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

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

نکته 1:
‏یه نوع رایج ایندکس، همونیه که برای کلید اصلی (PRIMARY KEY) خودکار ساخته می‌شه. بهش میگن B-Tree Index. ساختار اصلی SQLite با این کار می‌کنه! 🌳💡

نکته 2:
‏UNIQUE Index یه نوع ایندکسه که علاوه بر سرعت‌بخشی، مطمئن می‌شه هیچ مقداری توی اون ستون تکراری نباشه. دو تا کار با یک تیر! 🎯🔒

نکته 3:
‏می‌تونی ایندکس روی چندین ستون بسازی (Multi-Column Index). اگه همیشه با شرط WHERE City='X' AND State='Y' جستجو می‌کنی، این نوع ایندکس عالیه! 🧩

نکته 4:
‏SQLite یه نوع ایندکس داخلی به نام ROWID داره. اگه ستون INTEGER PRIMARY KEY تعریف کنی، در واقع اون ستون به جای این ROWID استفاده می‌شه و خیلی سریع عمل می‌کنه. 🚀

نکته 5:
‏ایندکس‌های Partial (یا Indexed Views تو بقیه دیتابیس‌ها) تو SQLite نداریم، اما می‌تونی با استفاده از WHERE موقع ساخت ایندکس، یه ایندکس بسازی که فقط روی یه زیرمجموعه از داده‌ها کار کنه. ✂️

نکته 6:
‏وقتی از CREATE INDEX ساده استفاده می‌کنی، در واقع یه Regular Index می‌سازی که برای جستجوی داده‌های عمومی عالیه. ساده و موثر.

نکته 7:
‏ایندکس‌هایی که از دستور CREATE UNIQUE INDEX استفاده می‌کنن، علاوه بر سرعت، یه محدودیت هم اضافه می‌کنن که مقادیر تکراری ممنوع بشن. پس مراقب داده‌های تکراری باش! 🚫🔥

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

نکته 9:
‏ایندکس‌ها می‌تونن صعودی (ASC) یا نزولی (DESC) تعریف بشن. اگه همیشه داده‌ها رو به ترتیب نزولی مرتب می‌کنی، ایندکس نزولی بساز تا سریع‌تر باشه! ⬇️⬆️

نکته 10:
‏SQLite از یه نوع خاص از B-Tree استفاده می‌کنه که برای دیتابیس‌های تک‌فایلی و تعبیه‌شده (Embedded) خیلی بهینه و کارآمده. معماری زیرکانه! 🏗️😎


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

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

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

آدرس وبسایت:
https://Tutorial24.ir
🔵 کوییز #SQL



کدام کوئری تعداد کل رکوردهای جدول employees را برمی‌گرداند؟ 

A) SELECT SUM(*) FROM employees; 

B) SELECT COUNT() FROM employees; 

C) SELECT COUNT(*) FROM employees; 

D) SELECT TOTAL(*) FROM employees; 


پاسخ:
C
 

توضیح: COUNT(*) تعداد کل رکوردها را در جدول می‌شمارد، حتی اگر شامل NULL باشند. 


💗 مطالب بعدی ما رو حتما دنبال کنید!



ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
آدرس کانال اصلی:
https://t.me/Tu_24
آدرس وبسایت:
https://tutorial24.ir/
💡 نکته #NoSQL

🟣 موضوع : ‏پشتیبانی ACID در پایگاه‌های جدید (FaunaDB)

نکته :

‏دنبال یه دیتابیس NoSQL هستی که اسکیل‌پذیر باشه و دردسر کمتری داشته باشه؟ FaunaDB می‌تونه انتخاب خوبی باشه. کلاه‌برداری هم توش کمتره! 💸😎


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

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

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

آدرس وبسایت:
https://Tutorial24.ir
Media is too big
VIEW IN TELEGRAM
🔵 ۲۲- دستور OUTER JOIN در MySQL

🟢 کیفیت : متوسط

🔴 توجه کنید با تنظیمات خود تلگرام می توانید حجم و کیفیت ویدیو را بر اساس سرعت اینترنت خود تنظیم نمایید.

🟣 MySQL آموزش

🟢 زبان آموزش: فارسی

🟣 MySQL آموزش


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

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

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

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

مهندسی ویژگی (Feature Engineering)


یه مدل یادگیری ماشین، هر چقدر هم که خفن باشه، بدون داده‌های خوب نمی‌تونه کار خاصی انجام بده. مهندسی ویژگی دقیقاً همینجاست که وارد می‌شه. 🤔

تصور کن یه آشپزی. مواد خام مثل پیاز، گوجه و گوشت داری. 🧅🍅🍖 حالا فقط با همین‌ها نمی‌تونی یه غذای خوشمزه درست کنی. باید اون‌ها رو خورد کنی، تفت بدی، ادویه بزنی و با هم ترکیب کنی تا تبدیل به یه خورشت خوشمزه بشن.

مهندسی ویژگی هم دقیقاً همین کار رو با داده‌ها می‌کنه. ما داده‌های خام رو می‌گیریم و با دانش و خلاقیت خودمون، اون‌ها رو به "ویژگی"هایی تبدیل می‌کنیم که برای مدل قابل فهم‌تر و کاربردی‌تر باشن. 👨‍🍳

چند مثال ساده:

تاریخ تولد: به جای اینکه فقط تاریخ خام "1370/05/15" رو به مدل بدی، می‌تونی اون رو به یه ویژگی جدید مثل "سن" تبدیل کنی. 🎂

آدرس: به جای آدرس کامل "خیابان اصلی، کوچه فرعی، پلاک ۵"، می‌تونی ویژگی‌های مفیدتری مثل "فاصله از مرکز شهر" یا "نوع محله (مسکونی/تجاری)" بسازی. 🏘

قیمت و تعداد: در یه فروشگاه آنلاین، به جای اینکه فقط قیمت هر محصول و تعدادش رو به مدل بدی، می‌تونی یه ویژگی جدید به اسم "مجموع مبلغ فاکتور" (قیمت ضربدر تعداد) بسازی. 💰

خلاصه اینکه، مهندسی ویژگی یعنی "خلاقیت" در کار با داده‌ها. گاهی اوقات، یه مدل ساده با ویژگی‌های خوب، بهتر از یه مدل پیچیده با داده‌های خام عمل می‌کنه.

این نکته نشون می‌ده که بخش بزرگی از کار در یادگیری ماشین، بیشتر به هنر تبدیل داده به اطلاعات مفید مربوط می‌شه تا فقط انتخاب مدل. 😉


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


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

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

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

🟣 موضوع : ‏دستورات DML: UPDATE

نکته :

‏وقتی از UPDATE استفاده می‌کنی، به پرفورمنس (performance) هم فکر کن. WHERE های بهینه سرعت کار رو بالا میبرن! ⚡️🏎️


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

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

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

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

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

نکته 1:
‏نمایه‌ها (Indexes) ابزار اصلی برای بهینه‌سازی (Optimization) پرس‌وجوهای SELECT در SQLite هستند، زیرا دسترسی به داده‌ها را از O(n) به طور بالقوه به O(log n) کاهش می‌دهند.

نکته 2:
‏استفاده مؤثر از نمایه‌ها در بند WHERE برای فیلتر کردن سطرها، موجب می‌شود تا موتور پایگاه داده از پویش کامل جدول (Full Table Scan) اجتناب کند و جستجوی مستقیم مبتنی بر درخت B را به کار گیرد.

نکته 3:
‏بهینه‌ساز پرس‌وجو (Query Optimizer) SQLite، بر اساس آمارها و ساختار نمایه، بهترین مسیر دسترسی (Access Path) را برای بازیابی داده‌ها انتخاب می‌کند.

نکته 4:
‏برای پرس‌وجوهایی که از عملگرهای مقایسه‌ای (مانند <, >) یا عملگرهای محدوده‌ای (مانانند BETWEEN) استفاده می‌کنند، نمایه‌ها باید بر روی ستون‌های مربوطه ایجاد شوند تا اسکن‌های محدوده‌ای (Range Scans) بهینه‌سازی شوند.

نکته 5:
‏ایجاد یک نمایه ترکیبی (Composite Index) بر روی ستون‌هایی که به طور همزمان در بند WHERE و ORDER BY استفاده می‌شوند، می‌تواند نیاز به عملیات پرهزینه مرتب‌سازی را برطرف سازد.

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

نکته 7:
‏نمایه‌های پوششی (Covering Indexes) بهینه‌ترین حالت استفاده از نمایه را فراهم می‌کنند، زیرا تمامی ستون‌های مورد نیاز برای اجرای پرس‌وجو (شامل SELECT و WHERE) در خود نمایه وجود دارند و نیازی به ارجاع به جدول اصلی نیست.

نکته 8:
‏ابزار EXPLAIN QUERY PLAN برای تحلیل مسیر انتخابی بهینه‌ساز پرس‌وجو ضروری است و به متخصصان امکان می‌دهد تا تشخیص دهند که آیا نمایه‌ها به طور مؤثر توسط پرس‌وجو مورد استفاده قرار گرفته‌اند یا خیر.

نکته 9:
‏استفاده بیش از حد از نمایه‌ها یک خطای رایج در بهینه‌سازی است، زیرا هر نمایه سربار ذخیره‌سازی اضافی و هزینه‌های به‌روزرسانی در عملیات DML را به سیستم تحمیل می‌کند.

نکته 10:
‏برای جداول بزرگ و ستون‌هایی با تنوع مقداری بالا (High Cardinality) که در شروط فیلتر استفاده می‌شوند، ایجاد نمایه منجر به بیشترین بهبود در عملکرد پرس‌وجو می‌شود.


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

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

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

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

🟣 موضوع : ‏یادگیری ماشین: شبکه‌های عصبی کانولوشنال - معماری‌های معروف - ساختار لایه‌های AlexNet و ویژگی‌های کلیدی آن

نکته :

‏الکس‌نت یه لایه‌ای به اسم Local Response Normalization داشت که مثل رقابت بین نورون‌های همسایه عمل می‌کرد تا بهترین‌ها فعال بشن. امروزه بیشتر از Batch Normalization استفاده می‌شه ولی دونستنش خالی از لطف نیست. 😉


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

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

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

آدرس وبسایت:
https://Tutorial24.ir
‏پایتون‌کار حرفه‌ای باش! 😎

‏PEP8 رو جدی بگیر! 🐍

‏* فاصله‌ها رو درست رعایت کن، خوانایی کدت چند برابر میشه!
‏* طول خط رو زیر 80 نگه دار، اسکرول افقی ممنوع! 🚫
‏* نام متغیرها و توابع رو بامعنی انتخاب کن.

‏کد تمیز = کد لذت‌بخش!
#پایتون #آموزش #PEP8

https://t.me/python7ir
🔵 کوییز #یادگیری_ماشین

🟣 موضوع : ‏یادگیری ماشین در علم داده (Data Science)

🟢 سوال :

‏کدام یک از مراحل پیش‌پردازش داده شامل کاهش ابعاد است؟

گزینه 1:
PCA
گزینه 2:
Normalization
گزینه 3:
Clustering
گزینه 4:
Imputation

🔵 گزینه صحیح: 1

🟢 توضیح :

‏PCA یک روش کاهش ابعاد است که ویژگی‌های مهم را استخراج می‌کند.


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

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

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

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

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

نکته 1:
‏GROUP BY چیه؟ 🤔 مثل این می‌مونه که بخوای توی یه کلاس، دانش‌آموزا رو بر اساس تیم ورزشی‌شون دسته‌بندی کنی! 🏀

نکته 2:
‏وقتی از GROUP BY استفاده می‌کنی، معمولاً باید یه تابع تجمعی (مثل COUNT, SUM, AVG) هم همراهش بیاری. وگرنه چیو می‌خوای بشمری یا جمع بزنی؟ 💡

نکته 3:
‏تصور کن یه عالمه رکورد فروش داری. می‌خوای بدونی مجموع فروش هر ماه چقدر بوده؟ GROUP BY رو بذار روی ستون ماه! 💰📅

نکته 4:
‏اگه می‌خوای بدونی توی هر شهر چند تا مشتری داری، از COUNT(*) همراه با GROUP BY شهر استفاده کن. خیلی سریع و مفید! 🏘️👨‍👩‍👧‍👦

نکته 5:
‏GROUP BY باید بعد از دستور WHERE و قبل از ORDER BY بیاد. این ترتیب رو فراموش نکن! 🛑🔥

نکته 6:
‏GROUP BY بهت کمک می‌کنه که از شر تکرار داده‌ها خلاص شی و یه دید کلی و خلاصه‌شده از دیتات داشته باشی. صرفه‌جویی در نگاه کردن! 👀

نکته 7:
‏می‌تونی روی چند تا ستون همزمان GROUP BY کنی! مثلاً فروش بر اساس سال و ماه. فقط اسم هر دو ستون رو بیار. 🗓️🚀

نکته 8:
‏برای فیلتر کردن نتایج بعد از GROUP BY، دیگه نباید از WHERE استفاده کنی! باید از دستور HAVING استفاده کنی. این دوتا قاطی نشن! 🚫

نکته 9:
‏مثال: می‌خوای میانگین حقوق رو برای هر دپارتمان پیدا کنی، ولی فقط برای دپارتمان‌هایی که بیشتر از 5 کارمند دارن. از HAVING COUNT(*) > 5 استفاده کن! 🧑‍💼📊

نکته 10:
‏اگه یه ستون رو توی SELECT آوردی و تابع تجمعی روش اعمال نشده، حتماً باید توی GROUP BY هم بیاریش. قانون ساده SQLite! 👍


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

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

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

آدرس وبسایت:
https://Tutorial24.ir
‏حلقه ها رو چطور متوقف یا کنترل کنیم؟ 🤔

‏`break`: کلا از حلقه میاد بیرون! دیگه هیچی اجرا نمیشه. 🚪

‏`continue`: این دور رو رد میکنه، میره دور بعدی. 🏃‍♀️

‏یه مثال ساده:

```python
for i in range(5):
if i == 2:
continue
‏ print(i) # خروجی: 0 1 3 4
```
‏عدد ۲ چاپ نشد!😎
#پایتون #آموزش

https://t.me/python7ir
🔵 نکته یادگیری ماشین

بریم سراغ یه تکنیک خیلی خفن که یادگیری ماشین رو شبیه به یادگیری انسان‌ها می‌کنه! 🧠

یادگیری انتقالی (Transfer Learning) 🔄

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

یادگیری انتقالی هم دقیقاً همین ایده‌ رو داره. به جای اینکه یک مدل رو از اول از صفر آموزش بدی، از یه مدلی استفاده می‌کنی که قبلاً روی یه مجموعه داده خیلی بزرگ و عمومی آموزش دیده و دانش زیادی کسب کرده. 📚

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

به زبان ساده‌تر:

فرض کن می‌خوای یک مدل برای تشخیص "چهره گربه‌ها" بسازی. 🐈‍⬛ به جای اینکه هزاران عکس گربه جمع کنی و از صفر شروع کنی، می‌تونی از یه مدل آماده استفاده کنی که قبلاً روی میلیون‌ها عکس از همه چیز (آدم، ماشین، حیوان، اشیا و...) آموزش دیده. 🚗👨‍👩‍👦

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

این تکنیک دو تا مزیت بزرگ داره:

صرفه‌جویی در زمان: به جای ساعت‌ها یا روزها آموزش، فقط به چند دقیقه یا ساعت نیاز داری. ⏱️

صرفه‌جویی در داده: می‌تونی با تعداد داده‌های خیلی کمتری به نتایج عالی برسی.

خلاصه که، به جای اینکه چرخ رو از اول اختراع کنی، از چرخی که قبلاً اختراع شده استفاده می‌کنی و فقط اون رو برای کار خودت تنظیم می‌کنی! 🛠

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


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

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

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

🟣 موضوع : ‏یادگیری ماشین: LDA - مقایسه LDA و روش‌های مدرن مثل SVM

نکته :

‏LDA و SVM هر دو ابزارن. بستگی داره به مشکلت که کدوم رو انتخاب کنی. مثل انتخاب چاقو یا اره! 🔪🪓


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

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

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

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

🟣 موضوع : ‏به‌روزرسانی و حذف در View

نکته :

‏با "INSTEAD OF Trigger" می‌تونی کلی کنترل داشته باشی! 💡 مثلاً بگی وقتی از طریق ویو اطلاعات رو حذف کردن، از کدوم جدول پایه و چطور حذف بشه. خیلی منعطفه!


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

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

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

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

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

نکته 1:
‏یکی از کاربردهای محوری VACUUM، کاهش حجم فایل پایگاه داده فیزیکی از طریق حذف صفحات خالی و فضای بازیابی شده (Free Pages) ناشی از حذف داده‌ها و به روزرسانی‌های گسترده است.

نکته 2:
‏VACUUM برای بازسازی کامل ساختار ذخیره‌سازی داده‌ها به صورت پیوسته (Contiguous) به کار می‌رود که می‌تواند پراکندگی داده‌ها (Fragmentation) را به حداقل رسانده و بهینه‌سازی دسترسی دیسک را موجب شود.

نکته 3:
‏این دستور به عنوان یک ابزار نگهداری (Maintenance Utility) حیاتی شناخته می‌شود که برای جلوگیری از رشد بی‌رویه اندازه فایل پایگاه داده در سیستم‌هایی با عملیات حذف و درج فراوان، استفاده می‌گردد.

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

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

نکته 6:
‏در سیستم‌هایی که به محدودیت‌های فضای دیسک حساس هستند، اجرای دوره‌ای VACUUM به منظور آزادسازی فضای ذخیره‌سازی اضافی، یک روش مدیریتی توصیه‌شده است.

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

نکته 8:
‏استفاده از VACUUM برای بازآرایی پایگاه داده پس از تغییر حالت ژورنال‌دهی (Journaling Mode) از DELETE به WAL یا برعکس، به منظور تثبیت ساختار جدید فایل، مفید است.

نکته 9:
‏در نسخه‌های جدیدتر SQLite، از VACUUM INTO \ 'filename' برای ایجاد یک کپی فشرده و بهینه‌سازی شده از پایگاه داده اصلی در یک مسیر یا فایل دیگر، بدون تأثیر مستقیم بر فایل مبدأ، استفاده می‌شود.

نکته 10:
‏VACUUM برای حل مشکلات عملکردی ناشی از انباشت صفحات زائد و فضای خالی در جدول‌های بزرگ که به مرور زمان دچار افت کارایی در جستجو و پیمایش شده‌اند، یک راهکار مؤثر محسوب می‌شود.


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

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

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

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

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

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

نکته 2:
‏فعال‌سازی PRAGMA \ auto\_vacuum = FULL یک راهکار مدیریتی است که بازگشت فضای خالی را به صورت خودکار و پس از هر تراکنش، در راستای کاهش رشد بی‌رویه فایل دیتابیس، تضمین می‌نماید.

نکته 3:
‏تعریف صحیح ساختار داده و استفاده از انواع داده‌ای (Data Types) با اندازه بهینه، به ویژه در مورد فیلدهای متنی و عددی، می‌تواند از هدر رفتن فضای ذخیره‌سازی جلوگیری کند.

نکته 4:
‏بهینه‌سازی طراحی شاخص‌ها (Indexes) و پرهیز از ایجاد شاخص‌های غیرضروری، علاوه بر بهبود عملکرد، از مصرف فضای اضافی برای ذخیره ساختارهای شاخص جلوگیری می‌نماید.

نکته 5:
‏حذف ستون‌های اضافی یا تکراری در جداول و نرمال‌سازی مؤثر طرحواره (Schema)، حجم داده‌های تکراری را کاهش داده و فضای ذخیره‌سازی را بهینه‌سازی می‌کند.

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

نکته 7:
‏استفاده از INTEGER PRIMARY KEY در SQLite، که به طور پیش‌فرض نقش RowID را ایفا می‌کند، موجب می‌شود که فضای ذخیره‌سازی شاخص اصلی (Primary Index) به صورت ضمنی و مؤثر مدیریت شود.

نکته 8:
‏تنظیم صحیح اندازه صفحه (Page Size) با استفاده از PRAGMA \ page\_size می‌تواند بر تراکم داده‌ها و بهینه‌سازی فضای ذخیره‌سازی در حافظه و دیسک تأثیر بگذارد.

نکته 9:
‏تعدیل پارامتر free با استفاده از PRAGMA \ incremental\_vacuum(N) امکان بازیابی تدریجی فضای خالی و کاهش ناگهانی حجم فایل پایگاه داده در زمان‌های اوج بار کاری را فراهم می‌سازد.

نکته 10:
‏حذف رکوردهای منسوخ و داده‌های تاریخی که دیگر ارزش عملیاتی ندارند، به صورت برنامه‌ریزی شده، یک استراتژی مؤثر برای مدیریت و بهینه‌سازی مداوم فضای ذخیره‌سازی است.


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

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

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

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