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

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

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

نکته 1:
‏کاربرد اصلی VACUUM اینه که تمام فضای خالی و استفاده‌نشده‌ای که بعد از حذف و به‌روزرسانی داده‌ها تو دیتابیس مونده رو حذف کنه. 🧹

نکته 2:
‏اگه می‌بینی حجم فایل دیتابیس خیلی بزرگه ولی داده‌های داخلش کمن، یعنی دیتابیس تکه‌تکه (Fragmented) شده. VACUUM اون رو مرتب و فشرده می‌کنه.

نکته 3:
‏با اجرای VACUUM، دیتابیس به صورت کامل بازسازی می‌شه و تمام داده‌ها به ترتیبی بهینه کپی می‌شن. این یه جور ریبوت برای فایل دیتابیسه. 🔄💡

نکته 4:
‏یکی از کاربردهای مخفی VACUUM اینه که می‌تونه ROWIDهای دیتابیس رو پشت سر هم مرتب کنه. این باعث می‌شه دسترسی به رکوردها سریع‌تر بشه. 🚀🔥

نکته 5:
‏برای گرفتن یه بک‌آپ تمیز و بهینه می‌تونی از دستور VACUUM INTO 'backup.db'; استفاده کنی. این یه کپی بدون فضای خالی می‌گیره. 📦💾

نکته 6:
‏اگه می‌خوای از شر VACUUMهای زمان‌بر خلاص بشی، می‌تونی PRAGMA auto_vacuum = FULL; رو فعال کنی تا دیتابیس خودش کم‌کم تمیزکاری کنه. 🛠️

نکته 7:
‏VACUUM باید زمانی اجرا بشه که هیچ تراکنش فعالی در حال اجرا نباشه، چون دیتابیس رو قفل می‌کنه. پس شب‌ها یا در زمان‌های کم‌ترافیک اجراش کن. 🌙🚫

نکته 8:
‏کاربرد VACUUM برای تغییر سایز صفحه (Page Size) هم هست. اگه سایز صفحه رو با PRAGMA عوض کنی، باید VACUUM رو هم بزنی تا تغییر اعمال بشه. 📏

نکته 9:
‏تو می‌تونی با PRAGMA incremental_vacuum(صفحات); فقط یه بخش مشخص از دیتابیس رو تمیز کنی و کل دیتابیس رو یک‌جا درگیر نکنی. 🤏

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


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

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

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

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

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

نکته 1:
‏ذخیره‌سازی داده‌های JSON در SQLite به طور معمول با استفاده از نوع داده TEXT صورت می‌گیرد، به گونه‌ای که کل ساختار JSON به صورت یک رشته متنی در یک ستون ذخیره می‌شود.

نکته 2:
‏اگرچه SQLite یک نوع داده اختصاصی برای JSON ندارد، اما افزونه JSON1 توابع سطح بالا را برای عملیات‌های منطقی بر روی ساختار داخلی این رشته‌ها فراهم می‌آورد.

نکته 3:
‏از نظر کارایی، ذخیره‌سازی مقادیر JSON به صورت TEXT ممکن است سربار I/O بیشتری نسبت به داده‌های ساختاریافته سنتی داشته باشد، به ویژه برای اسناد بسیار بزرگ.

نکته 4:
‏برای اطمینان از صحت قالب‌بندی هنگام درج داده، توصیه می‌شود از تابع json\_valid(X) در عبارت‌های CHECK یا در لایه برنامه استفاده شود.

نکته 5:
‏در سناریوهای با نیاز مکرر به جستجو بر اساس یک عنصر خاص در سند JSON، بهترین رویکرد، استخراج آن عنصر و ذخیره‌سازی آن در یک ستون جداگانه برای ایندکس‌گذاری کارآمد است.

نکته 6:
‏ستون‌های مجازی ذخیره‌شده (Stored Generated Columns) راهکاری مؤثر برای ذخیره‌سازی دائمی مقادیر استخراج شده از JSON با استفاده از توابع json\_extract و اعمال شاخص بر روی این ستون‌ها هستند.

نکته 7:
‏برای بهینه‌سازی فضای ذخیره‌سازی، فشرده‌سازی داده‌های JSON حجیم در لایه برنامه و ذخیره نسخه فشرده به عنوان BLOB می‌تواند مفید باشد، اگرچه به سربار پردازشی نیاز دارد.

نکته 8:
‏هنگام ذخیره‌سازی آرایه‌های بزرگ در JSON، باید ملاحظات عملکردی در خصوص واکشی کل آرایه برای دسترسی به یک عنصر واحد در نظر گرفته شود.

نکته 9:
‏استفاده از توابع JSON امکان درج ایمن داده‌ها را فراهم می‌سازد، به طوری که توابع مانند json و json به طور خودکار از هرگونه کاراکتر خاص فرار (Escape) می‌کنند.

نکته 10:
‏در پایگاه داده‌های مقیاس‌پذیر، مدیریت داده‌های JSON امکان انعطاف‌پذیری در طرحواره را فراهم می‌آورد و نیاز به عملیات ALTER TABLE را برای تغییرات کوچک در ساختار داده کاهش می‌دهد.


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

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

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

آدرس وبسایت:
https://Tutorial24.ir
📢 ساندار پیچای: هوش مصنوعی جایگزین کارکنان نمی‌شود، بلکه باعث رشد بیشتر خواهد شد!

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

💬 پیچای گفت:

«انتظار دارم حتی در سال آینده هم به رشد مهندسی‌مان ادامه دهیم، چون هوش مصنوعی باعث بهره‌وری بیشتر می‌شود. این فناوری کارهای تکراری را حذف می‌کند و به مهندسان اجازه می‌دهد روی پروژه‌های مؤثرتر تمرکز کنند.»

🚀 او به جای آن‌که هوش مصنوعی را تهدیدی برای مشاغل بداند، آن را یک «شتاب‌دهنده» توصیف کرد که باعث خلق محصولات جدید و در نتیجه ایجاد فرصت‌های شغلی بیشتر خواهد شد.

📉 اگرچه آلفابت در سال‌های اخیر تعدیل نیرو داشته، اما در سال ۲۰۲۵ این اخراج‌ها محدودتر و هدفمندتر بوده‌اند. مثلاً تنها کمتر از ۱۰۰ نفر در بخش ابری گوگل و صدها نفر در واحد پلتفرم‌ها و دستگاه‌ها تحت تأثیر قرار گرفتند. این در حالی است که در سال‌های ۲۰۲۳ و ۲۰۲۴ آلفابت به ترتیب ۱۲هزار و سپس دست‌کم ۱۰۰۰ نفر را اخراج کرده بود.

🔮 پیچای به پروژه‌های در حال گسترش شرکت مانند خودروهای خودران Waymo، رایانش کوانتومی و رشد سریع YouTube اشاره کرد. فقط در هند، یوتیوب بیش از ۱۰۰ میلیون کانال و ۱۵هزار کانال با بیش از ۱ میلیون دنبال‌کننده دارد!

📌 او در پاسخ به نگرانی‌ها درباره از بین رفتن مشاغل ابتدایی با ظهور هوش مصنوعی، گفت:

«من به نظرات افراد محترمی مثل مدیرعامل Anthropic احترام می‌گذارم. این نگرانی‌ها باید بیان و بررسی شوند.»

🧠 درباره احتمال دستیابی به هوش عمومی مصنوعی (AGI)، پیچای محتاطانه خوش‌بین بود:

«پیشرفت زیادی در پیش است، اما این مسیر ممکن است به سطوحی برسد که موقتاً متوقف شود. هیچ‌کس نمی‌تواند با اطمینان بگوید که حتماً به AGI خواهیم رسید.»


#گوگل #آلفابت #هوش_مصنوعی #AGI #ساندار_پیچای #اخراج #شغل #یوتیوب #Waymo #AI #TechNews

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

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

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

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

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

نکته 1:
‏SQLite تا حد زیادی با استاندارد SQL-92 (استاندارد قدیمی‌تر) سازگاره، اما نه کاملاً! برای اکثر کارهای روزمره، دستوراتش عین بقیه دیتابیس‌ها کار می‌کنه. 🤝💡

نکته 2:
‏یکی از تفاوت‌های بزرگش، سیستم Type Affinity (تمایل نوع داده) هست. یعنی اگه یه ستون رو INTEGER تعریف کنی، باز هم می‌تونی توش TEXT ذخیره کنی! انعطاف‌پذیره. 🤸

نکته 3:
‏SQLite از برخی ویژگی‌های پیشرفته SQL (مثل FULL OUTER JOIN یا توابع پنجره‌ای پیچیده) که تو دیتابیس‌های بزرگ هست، یا پشتیبانی نمی‌کنه یا به شکل محدودتری پشتیبانی می‌کنه. ✂️

نکته 4:
‏دستور ALTER TABLE تو SQLite یه کم محدوده. مثلاً نمی‌تونی ستون رو حذف کنی یا نوع داده ستون رو به راحتی تغییر بدی (باید جدول جدید بسازی!). ⚠️

نکته 5:
‏SQLite از View (نما) پشتیبانی می‌کنه که یه استاندارد SQL هست. می‌تونی کوئری‌های پیچیده‌ات رو به صورت یه جدول مجازی ذخیره کنی. 🚀

نکته 6:
‏توابع تجمعی (Aggregate Functions) مثل COUNT، SUM و AVG که تو استاندارد SQL هستن، به طور کامل تو SQLite پشتیبانی می‌شن و خیلی کاربرد دارن. 💯

نکته 7:
‏با اینکه CHECK جزو استاندارد SQL هست، ولی SQLite تا نسخه‌های اخیر بهش اهمیت نمی‌داد. الان دیگه درست چک می‌کنه (به شرطی که نسخه‌ات جدید باشه). 🔥

نکته 8:
‏SQLite مفهوم کاربر (User) و حق دسترسی (Permission) رو نداره، چون یه دیتابیس تک‌کاربره است. این یکی از تفاوت‌های اصلیش با SQL Server یا PostgreSQL است. 🚫👥

نکته 9:
‏با اینکه نوع داده BOOLEAN تو استاندارد هست، SQLite برای ذخیره کردن مقادیر منطقی (True/False) از INTEGER (0 و 1) استفاده می‌کنه. کاربردی و ساده. 🔢

نکته 10:
‏بهترین نکته: اگرچه SQLite صد در صد استاندارد نیست، اما این سادگی و کمبود ویژگی‌های پیچیده است که اون رو سبک و سریع نگه داشته. برای اپلیکیشن‌های کوچک، عالیه! 😎


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

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

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

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

🟣 موضوع : ‏یادگیری ماشین: شبکه‌های مولد تخاصمی (GAN) - کاربردها - شبیه‌سازی داده‌های پزشکی و افزایش دیتاست‌ها

نکته :

‏با داده‌های ساده‌تر مثل عکس‌های رادیولوژی (X-ray) شروع کنین، بعد برین سراغ اسکن‌های سه‌بعدی پیچیده. اینجوری کار راحت‌تر دستتون میاد! 👨‍⚕️💡


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

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

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

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

🟣 موضوع : ‏Cost Optimization در سرویس‌های ابری NoSQL

نکته :

‏ببین کدام سرویس NoSQL ارائه دهنده تخفیف برای استفاده طولانی مدت داره. این می‌تونه کلی هزینه‌هات رو کم کنه. 💰


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

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

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

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

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

نکته 1:
‏تابع json_array یک تابع سازنده (Constructor Function) در SQLite است که برای تولید یک آرایه JSON معتبر (Valid JSON Array) از مجموعه‌ای از مقادیر ورودی به کار می‌رود.

نکته 2:
‏نحو استفاده از این تابع به صورت json_array(value1, value2, ...) است؛ هر آرگومان ورودی به عنوان یک عنصر مجزا در آرایه JSON خروجی قرار می‌گیرد.

نکته 3:
‏مقادیر ورودی به تابع json_array می‌توانند از انواع داده‌ای مختلف باشند، شامل اعداد صحیح، اعشاری، رشته‌های متنی، مقادیر بولی و مقادیر تهی SQL (NULL).

نکته 4:
‏اگر یکی از مقادیر ورودی خود یک رشته JSON معتبر باشد، json_array آن را به عنوان یک عنصر JSON در آرایه نهایی درج می‌کند، نه صرفاً یک رشته متنی خام.

نکته 5:
‏مقدار خروجی تابع json_array همیشه یک رشته متنی است که حاوی ساختار آرایه JSON تولید شده، مطابق با استاندارد رسمی JSON، می‌باشد.

نکته 6:
‏این تابع امکان تجمیع ستون‌ها یا نتایج محاسباتی را به صورت ساختار یافته در یک آرایه JSON واحد فراهم می‌آورد که در گزارش‌گیری‌های داده‌ای تو در تو مفید است.

نکته 7:
‏استفاده از jsonarray در ترکیب با توابعی نظیر GROUP BY و GROUPCONCAT می‌تواند برای جمع‌آوری چندین مقدار از یک گروه در یک ستون آرایه JSON به کار رود.

نکته 8:
‏در صورت ارائه یک مقدار تهی SQL (NULL) به عنوان آرگومان، json_array آن را به مقدار تهی JSON (null) تبدیل کرده و در آرایه درج می‌نماید.

نکته 9:
‏تابع json_array در مواردی که نیاز است داده‌های رابطه‌ای برای انتقال به سامانه‌های مبتنی بر JSON، مانند APIها، به فرمت آرایه استاندارد تبدیل شوند، کاربرد دارد.

نکته 10:
‏این تابع قابلیت ترکیب با سایر توابع JSON، مانند jsonobject یا jsoninsert را دارد تا ساختارهای JSON پیچیده‌تر از قبیل آرایه‌ای از اشیاء، تولید شود.


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

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

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

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

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

نکته :

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


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

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

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

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

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

‏حواست به شرط ON باشه! اگه یادت بره، به جای چند تا ردیف، یه عالمه ردیف تکراری و بی‌ربط می‌گیری که اصلاً نمی‌خواستی! 🤯

‏ستون‌های اشتباهی رو به هم وصل نکن! مثل اینه که کلید خونه همسایه رو تو قفل در خودت بچرخونی. 🔑 مطمئن شو users.id به posts.user_id وصل میشه، نه چیز دیگه!

‏شرط JOIN رو تو ON بنویس، نه WHERE. اینجوری کوئری‌ت تمیزتر و خواناتر می‌مونه، مخصوصاً وقتی بعداً بخوای LEFT JOIN هم اضافه کنی. 🧼

‏INNER JOIN فقط ردیف‌هایی رو میاره که تو هر دو تا جدول جفت داشته باشن. اگه ردیف‌های جدول اول رو حتی بدون جفت هم می‌خوای، باید از LEFT JOIN استفاده کنی. 😉

‏برای جدول‌هات اسم مستعار (alias) بذار! مثلاً FROM users u JOIN profiles p. اینجوری کوئری‌هات کوتاه‌تر و خوشگل‌تر میشن و خوندنشون راحت‌تره. 😎

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

‏مطمئن شو نوع داده‌ی ستون‌هایی که JOIN می‌کنی یکسانه (مثلاً هر دو INT). اگه یکی INT و یکی VARCHAR باشه، سرعت کوئری‌ت خیلی میاد پایین. 🐢

‏اگه هر دو جدول یه ستون با اسم مشابه دارن (مثلاً id)، حتماً اسم جدول رو هم قبلش بیار: users.id. وگرنه MySQL گیج میشه که کدوم id رو می‌خوای! 🤔

‏روی ستون‌هایی که باهاشون JOIN می‌کنی حتماً ایندکس (Index) بذار. ایندکس مثل یه فهرست سرعتی عمل می‌کنه و سرعت JOIN رو فوق‌العاده بالا می‌بره! ⚡️🔥

‏حواست به بزرگی و کوچکی حروف (Case-Sensitivity) باشه! ممکنه تو دیتابیس تو 'Ali' با 'ali' فرق داشته باشه و JOIN شما به خاطر همین چیز ساده کار نکنه. 🕵️‍♂️💡


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

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

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

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

🟣 موضوع : ‏مثال‌های معروف Graph (Neo4j، JanusGraph)

نکته :

‏برای شروع سریع با Neo4j، حتماً Neo4j Desktop رو امتحان کن. 💻 خیلی راحت بالا میاد و می‌تونی کد بزنی!


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

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

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

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

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

نکته 1:
‏کلید خارجی (FOREIGN KEY) یک قید مرجع است که برای برقراری و اجرای یکپارچگی ارجاعی (Referential Integrity) بین دو جدول در پایگاه داده SQLite به کار می‌رود.

نکته 2:
‏کلید خارجی ستونی (یا مجموعه‌ای از ستون‌ها) در جدول فرزند (Child Table) است که به ستون کلید اصلی (PRIMARY KEY) یا کلید منحصر به فرد (UNIQUE KEY) در جدول والد (Parent Table) ارجاع می‌دهد.

نکته 3:
‏برای فعال‌سازی پشتیبانی از کلیدهای خارجی در SQLite، باید عبارت PRAGMA foreign_keys = ON; را پیش از اجرای هرگونه عملیات دستکاری داده‌ها (DML) اجرا نمود.

نکته 4:
‏قید کلید خارجی تضمین می‌کند که هر مقداری در ستون کلید خارجی، حتماً یک مقدار متناظر در ستون ارجاعی جدول والد داشته باشد، یا مقدار آن NULL باشد.

نکته 5:
‏SQLite از اعمال‌های ارجاعی (Referential Actions) پشتیبانی می‌کند که واکنش سیستم را هنگام حذف (ON DELETE) یا به‌روزرسانی (ON UPDATE) سطر در جدول والد مشخص می‌سازد.

نکته 6:
‏اعمال‌های ارجاعی شامل: NO ACTION (جلوگیری از تغییر)، RESTRICT (عملکردی شبیه به NO ACTION)، CASCADE (اعمال تغییر به سطرهای مرتبط فرزند)، SET NULL (مقداردهی NULL به کلید خارجی فرزند) و SET DEFAULT هستند.

نکته 7:
‏گزینه ON DELETE CASCADE تضمین می‌کند که با حذف یک سطر از جدول والد، تمامی سطرهای متناظر در جدول فرزند که به آن ارجاع داده‌اند، به صورت خودکار حذف شوند.

نکته 8:
‏گزینه ON UPDATE CASCADE تضمین می‌کند که با به‌روزرسانی کلید اصلی در جدول والد، مقدار متناظر در ستون کلید خارجی جدول فرزند نیز به صورت خودکار به‌روزرسانی شود.

نکته 9:
‏در SQLite، ستون‌های کلید خارجی، برخلاف کلید اصلی، لزومی به داشتن اندیس ندارند، اما ایجاد اندیس بر روی آن‌ها می‌تواند کارایی عملیات اتصال (JOIN) و بررسی قیدها را به طور قابل توجهی بهبود بخشد.

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

نکته 11:
`


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

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

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

آدرس وبسایت:
https://Tutorial24.ir
🔵 کوییز T-SQL - مبانی SELECT #پایگاه_داده #sql_server #t_sql

🟣 سوال: آیا می‌توان از اپراتور LIKE برای جستجوی داده‌های غیرمتنی استفاده کرد؟

🟢 پاسخ: خیر، اپراتور LIKE تنها برای جستجو در داده‌های متنی مناسب است و برای مقادیر عددی باید از سایر اپراتورها مانند = یا BETWEEN استفاده کرد.
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

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

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

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


هشدار جدی وزارت ارتباطات به سازمان غذا و دارو: راه‌اندازی سامانه ملی بدون مجوز ممنوع!



🌿🌿 وزارت ارتباطات با ارسال نامه‌ای رسمی به رئیس سازمان غذا و دارو، هشدار داده است که هرگونه راه‌اندازی سامانه جدید با گستره ملی، تنها با کسب مجوز از این وزارتخانه امکان‌پذیر خواهد بود.

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


🔴 همچنین، سازمان غذا و دارو موظف شده تا زمان تعیین تکلیف نهایی این موضوع، از ادامه اقدامات برای ایجاد این سامانه خودداری کند.


🔵 پیش‌تر در کمیسیون راهبری اقتصاد دیجیتال نیز اعلام شده بود که دستورالعمل ایجاد «سامانه مرجع» سازمان غذا و دارو، مغایر با قانون برنامه و قانون دوام (مدیریت داده‌ها و اطلاعات ملی) است. این قوانین صراحتاً راه‌اندازی هر سامانه‌ای در دولت را به کسب مجوز از وزارت ارتباطات و فناوری اطلاعات منوط کرده‌اند.


#وزارت_ارتباطات #سازمان_غذا_و_دارو #سامانه_ملی #مجوز #اقتصاد_دیجیتال


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

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

آدرس کانال اصلی:

https://t.me/Tu_24

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

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

نکته 1:
‏عبارت PRAGMA tableinfo(tablename) به عنوان ابزاری برای بازرسی ساختار داخلی یک جدول مشخص، شامل فهرست ستون‌ها و جزئیات آن‌ها، به کار می‌رود.

نکته 2:
‏خروجی PRAGMA table_info شامل مجموعه‌ای از ردیف‌ها است که هر ردیف معرف یک ستون بوده و شامل اطلاعاتی نظیر cid (شناسه ستون)، name (نام ستون) و type (نوع داده) می‌باشد.

نکته 3:
‏ستون type در خروجی این PRAGMA، نوع داده‌ای را که در زمان تعریف جدول (DDL) برای ستون تعیین شده است، نمایش می‌دهد، هرچند که SQLite دارای نوع‌بندی پویا است.

نکته 4:
‏ستون notnull در خروجی این تابع، وضعیت اعمال محدودیت NOT NULL را برای ستون مشخص می‌کند؛ مقدار 1 نشان‌دهنده الزام به داشتن مقدار غیرتهی است.

نکته 5:
‏ستون dflt_value (مقدار پیش‌فرض) در خروجی، مقدار تعریف شده برای ستون را در صورت عدم ارائه صریح مقدار در زمان درج (INSERT) نمایش می‌دهد.

نکته 6:
‏ستون pk (کلید اصلی) یک شاخص عددی است که وضعیت ستون را به عنوان بخشی از کلید اصلی (Primary Key) مشخص می‌کند؛ مقادیر بزرگتر از صفر نشان‌دهنده عضویت در کلید اصلی مرکب است.

نکته 7:
‏PRAGMA tableinfo یک روش استاندارد و مستقل از پلتفرم برای استخراج فراداده‌ها (Metadata) یا شمای جدول در محیط SQLite، بدون نیاز به پرس‌وجو از جدول سیستمی sqlitemaster، است.

نکته 8:
‏از PRAGMA table_info می‌توان در برنامه‌های کاربردی برای اعتبارسنجی یا مهاجرت شمای داده (Schema Migration) با بازیابی خودکار ساختار جدول استفاده نمود.

نکته 9:
‏این تابع اطلاعاتی در مورد اندیس‌های ثانویه یا محدودیت‌های کلید خارجی مرتبط با جدول را مستقیماً ارائه نمی‌دهد و برای این منظور نیاز به توابع PRAGMA دیگری نظیر PRAGMA index_list است.

نکته 10:
‏خروجی PRAGMA table_info به صورت یک مجموعه نتایج جدولی ارائه می‌شود که امکان پردازش و تحلیل آن را با استفاده از APIهای برنامه‌نویسی یا ابزارهای خط فرمان فراهم می‌سازد.


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

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

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

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

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

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

نکته 2:
‏تراکنش‌ها برای تضمین ویژگی‌های ACID (Atomicity, Consistency, Isolation, Durability) در پایگاه داده ضروری هستند و صحت و قابلیت اطمینان داده‌ها را حفظ می‌کنند.

نکته 3:
‏Atomicity (اتمیسیته) تضمین می‌کند که تمامی عملیات‌های درون یک تراکنش به طور کامل انجام شوند (COMMIT) یا در صورت بروز مشکل به طور کامل لغو شوند (ROLLBACK).

نکته 4:
‏Durability (ماندگاری) اطمینان می‌دهد که پس از موفقیت‌آمیز بودن یک COMMIT، تغییرات اعمال شده به طور دائمی در فایل پایگاه داده ذخیره شده و در برابر خرابی‌های سیستم مقاوم باشند.

نکته 5:
‏SQLite به صورت پیش‌فرض در حالت Auto-commit عمل می‌کند، به این معنا که هر دستور DML به صورت خودکار به عنوان یک تراکنش مستقل تلقی شده و بلافاصله COMMIT می‌شود.

نکته 6:
‏برای اجرای چندین دستور به صورت یک تراکنش واحد، باید از عبارت BEGIN TRANSACTION یا BEGIN IMMEDIATE/DEFERRED استفاده کرده و در نهایت با COMMIT یا ROLLBACK آن را پایان داد.

نکته 7:
‏Isolation (ایزوله‌سازی) تضمین می‌کند که تغییرات ایجاد شده توسط یک تراکنش، تا زمان COMMIT شدن، برای سایر تراکنش‌های در حال اجرا قابل مشاهده نباشد.

نکته 8:
‏SQLite از قفل‌گذاری در سطح فایل برای مدیریت همزمانی (Concurrency) استفاده می‌کند که اجرای تراکنش‌های همزمان را در محیط‌های چند کاربره مدیریت می‌نماید.

نکته 9:
‏استفاده از حالت Write-Ahead Logging (WAL) می‌تواند ایزوله‌سازی و همزمانی را در عملیات خواندن و نوشتن بهبود بخشد، زیرا خواندن‌ها را بدون قفل کردن فایل اصلی داده امکان‌پذیر می‌سازد.

نکته 10:
‏ROLLBACK به عنوان سازوکاری برای بازگرداندن پایگاه داده به وضعیت پایدار قبل از شروع تراکنش عمل می‌کند و تمامی تغییرات موقت اعمال شده در طول آن تراکنش را خنثی می‌سازد.


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

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

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

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

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

‏اگر داری SELF JOIN می‌زنی، حتماً از Alias استفاده کن! 🤯 اینجوری می‌تونی به جداولت اسم‌های مستعار بدی و بفهمی هر ستون از کجا میاد. 😉

‏وقتی SELF JOIN داری، Alias ها کمک می‌کنن که بین دو تا جدول یهویی قاطی نکنی. 🤔 مثلاً یه جدول داری و می‌خوای ارتباطات داخلش رو ببینی. با Alias راحت‌تر میشه. 🤓

‏Alias ها مثل اسم کوچیک هستن. بجای اینکه همش اسم کامل جدول رو تایپ کنی، با Alias کارت راحت‌تر میشه. 😎

‏اگه Alias نزنی، SQL گیج میشه و نمی‌فهمه کدوم ستون رو باید انتخاب کنه. 😅 پس Alias بزن تا SQLت خوشحال بشه! 😊

‏فرض کن یه جدول داری برای لیست دوستا. با Alias می‌تونی ببینی کی دوست کیه. 🤩 بدون Alias، اصلاً نمی‌شه این کارو کرد! 🤦‍♀️

‏یه Alias خوب، اسمش باید معنی‌دار باشه. 💡 مثلاً جای "table1" بذار "دوست_اول". اینجوری کدت خواناتر میشه. 🤌

‏SELF JOIN با Alias خیلی قدرتمنده! 🔥 می‌تونی ساختارهای پیچیده رو توی دیتابیس خودت مدل‌سازی کنی. 💪

‏یادت باشه، Alias زدن باعث میشه SQLت سریع‌تر عمل کنه. 🚀 پس Alias بزن و سرعت دیتابیس‌تو ببر بالا! 📈

‏وقتی Alias می‌زنی، دیگه نیازی نیست کل اسم جدول رو تکرار کنی. فقط اسم مستعار رو می‌نویسی و کارت راه می‌افته. 👌

‏خلاصه، Alias تو SELF JOIN یه چیز ضروریه! 👍 نذار کدت پیچیده بشه و از Alias استفاده کن! 😉


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

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

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

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

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏استفاده از حافظه کش (Buffer Cache)

نکته 1:
‏بافر کَش (Buffer Cache) چیه؟ 🤔 مثل یه میز کار بزرگ تو حافظه RAM می‌مونه که SQLite داده‌هایی رو که زیاد لازم داره، روش می‌ذاره تا سریع بهشون دسترسی پیدا کنه. 🧠

نکته 2:
‏هدف اصلی کش اینه که نیاز به خواندن کند از دیسک رو کم کنه. اگه داده تو کش باشه، سرعتت مثل موشک می‌شه! 🚀🔥

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

نکته 4:
‏تو می‌تونی با دستور PRAGMA cache_size به SQLite بگی که می‌خوای کش چقدر بزرگ باشه (بر حسب تعداد صفحات). معمولاً هرچی بزرگتر باشه، بهتره! 📏

نکته 5:
‏اگه کش کوچیک باشه، SQLite مجبوره مدام صفحات قدیمی رو از کش بیرون بندازه تا جا برای صفحات جدید باز بشه. این یعنی کندی! 🐌

نکته 6:
‏وقتی یه داده رو تغییر می‌دی، اول تغییرات روی نسخه‌ی داخل کش اعمال می‌شه، بعداً (موقع COMMIT) روی دیسک نوشته می‌شه. 📝💾

نکته 7:
‏اگه از WAL Mode (Write-Ahead Logging) استفاده کنی، مدیریت کش SQLite خیلی هوشمندتر می‌شه و کارایی خواندن‌ها حین نوشتن بالا می‌ره. 📈

نکته 8:
‏اگه حجم کاریت بیشتر خواندن هست، بزرگ کردن کش یه سرمایه‌گذاری عالی برای بهینه‌سازی عملکرد دیتابیسه. هرچند که فضای بیشتری از RAM می‌گیره. 💰

نکته 9:
‏یه نکته جالب: وقتی COMMIT می‌زنی، SQLite نسخه‌هایی از صفحات تغییر یافته تو کش رو مجبور می‌کنه که روی دیسک ذخیره بشن. این تضمین ماندگاری داده‌هاست. 🔒

نکته 10:
‏می‌تونی با PRAGMA incremental_vacuum از SQLite بخوای که فقط یه بخش از فضای خالی دیتابیس رو بازیابی کنه، این کار فقط روی صفحات کش‌شده انجام می‌شه. کاربردی و عملی! 😎


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

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

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

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

🟣 موضوع : ‏تاریخچه و تکامل NoSQL

نکته :

‏NoSQL هنوزم در حال تغییره و بهتر شدنه. 🔄 همیشه چیز جدیدی برای یادگیری هست! 🔥 پس کنجکاو بمون. 👀


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

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

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

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

🟣 موضوع : ‏Database Migration و ابزارها (Flyway, Liquibase)

نکته :

‏تغییرات رو کوچیک و incremental اعمال کن! 🐢 به جای اینکه یه migration خیلی بزرگ بنویسی که کلی تغییرات داره، سعی کن هر migration یه تغییر کوچیک و مشخص رو انجام بده. اینجوری مدیریت و دیباگ کردنشون خیلی آسون‌تر میشه و ریسک خطا کم میشه. قدم به قدم جلو برو! 👣


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

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

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

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

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

‏خودتو بهتر بشناس! Self JOIN مثل اینه که یه عکس از خودت بگیری و بعد باهاش مقایسه‌ش کنی، تا مثلاً ببینی کی از همه بلندتره! 🕵️‍♀️💪

‏فکر کن یه جدول داری از کارمندها و مدیرهاشون. Self JOIN بهت کمک می‌کنه ببینی کی مدیر کیه، بدون اینکه بخوای یه جدول جدید بسازی! 🧑‍💼➡️🧑‍💼

‏اگه می‌خوای یه لیست از همه محصولاتت داشته باشی که قیمت‌شون از میانگین قیمتشون بیشتره، Self JOIN یه قهرمانه! 💰📈

‏با Self JOIN می‌تونی روابط پیچیده توی داده‌هات رو مثل نمودار درختی باز کنی. خیلی باحاله، نه؟ 🌳

‏وقتی می‌خوای مقایسه‌های بین ردیف‌های مختلف توی همون جدول رو انجام بدی، Self JOIN رو صدا بزن. رفیق فابریکته! 🤝

‏فرض کن یه جدول داری از شهرها و کشورهاشون. Self JOIN می‌تونه بهت بگه کدوم شهرها توی کدوم کشورها هستن. 🏙️🌍

‏برای پیدا کردن الگوهای تکراری یا روابط زنجیره‌ای توی داده‌هات، Self JOIN رو امتحان کن. مثل پیدا کردن ردپا! 🐾🔍

‏قبلاً فکر می‌کردی Self JOIN خیلی سخته؟ اصلاً اینطور نیست! مثل بازی کردن با قطعات لگو هست، فقط باید بفهمی چطور وصلشون کنی. 🧩💡

‏اگه می‌خوای ببینی کدوم مشتری‌هات بیشتر از بقیه خرید کردن، Self JOIN می‌تونه کمکت کنه. مشتری‌های ویژه رو پیدا کن! 🌟🛍️

‏یادت باشه، Self JOIN فقط برای جدول‌های تودرتو نیست. برای مقایسه‌های ساده‌تر هم خیلی کاربردیه. خلاق باش! 😉🚀


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

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

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

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

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

نکته 1:
‏ACID چیه؟ 🤔 مثل یه قول و قراره که دیتابیس (مثل SQLite) بهت می‌ده تا مطمئن شی کارهاش رو درست و امن انجام می‌ده. تضمین کیفیت! 🤝

نکته 2:
‏A مخفف Atomicity (تجزیه‌ناپذیری) هست. یعنی یه تراکنش یا کامل انجام می‌شه، یا اصلاً انجام نمی‌شه (همه یا هیچ). وسط راه موندن نداریم! 🚫

نکته 3:
‏C مخفف Consistency (سازگاری) هست. یعنی هر تراکنش دیتابیس رو از یه حالت معتبر به یه حالت معتبر دیگه می‌بره. اطلاعاتت همیشه قانون‌مند باقی می‌مونن. ⚖️

نکته 4:
‏I مخفف Isolation (انزوا) هست. یعنی اگه چند تا تراکنش همزمان در حال اجرا باشن، هیچ‌کدوم کار اون یکی رو مزاحم نمی‌شن. انگار هر کدوم تو اتاق خودشونن. 🚪

نکته 5:
‏D مخفف Durability (ماندگاری) هست. یعنی وقتی یه تراکنش با موفقیت COMMIT می‌شه، تغییراتش حتی اگه برق قطع شه یا سیستم کرش کنه، ثبت شده و از بین نمیره. هاردکور! 💾🔥

نکته 6:
‏برای فهم بهتر Atomicity، انتقال پول رو تصور کن: اگه پول از حساب اول کم بشه ولی به حساب دوم اضافه نشه، Rollback می‌شه. یا جابه‌جا می‌شه یا نمی‌شه! 💰

نکته 7:
‏SQLite با استفاده از فایل‌های Journal (گزارش‌نویسی) و مکانیزم‌های قفل‌گذاری، سعی می‌کنه اصول ACID رو تا جای ممکن رعایت کنه. 🛠️💡

نکته 8:
‏Isolation توی SQLite یه کم با بقیه دیتابیس‌های بزرگ فرق داره. معمولاً از روش Serializable یا قفل کردن کل دیتابیس استفاده می‌کنه تا سادگی‌اش حفظ بشه. 🤏

نکته 9:
‏Durability یعنی اطمینان پیدا کن که وقتی COMMIT رو زدی، داده‌ها واقعاً روی دیسک ذخیره شدن، نه فقط توی حافظه موقت. (با دستور PRAGMA synchronous = FULL سختگیرتر می‌شه). 💯

نکته 10:
‏در نهایت، هدف از رعایت ACID اینه که بتونی به دیتای دیتابیست اعتماد کامل کنی. اگه دیتابیس ACID نباشه، زندگی برنامه‌نویس خیلی سخت می‌شه! 😩😎


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

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

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

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