آموزش دیتاساینس و ماشین‌لرنینگ
1.91K subscribers
161 photos
9 videos
134 links
🔴 آموزش مباحث حوزه دیتا شامل علم داده، یادگیری ماشین و تحلیل داده (رضا شکرزاد)

🌀 کانال اخبار و منابع هوش مصنوعی:
@DSLanders

🌀 مشاوره و ارتباط مستقیم:
https://t.me/dslanders_admin

یوتیوب:
Youtube.com/@RezaShokrzad

دوره‌ها:
cafetadris.com/datascience
Download Telegram
💡مرور مطالب گفته شده با بررسی یک کوئری

فرض کنید که سه جدول Employees شامل اطلاعات کارمندان، Departments شامل اطلاعات دپارتمان‌ها و جدول Sales شامل اطلاعات فروش‌ رو داریم.

هدف اینکه مجموع فروش‌های انجام‌شده توسط هر کارمند رو در سال 2023 محاسبه کنیم، بعد فقط کارمندانی که مجموع فروش‌شون بیشتر از 50,000 واحد هست رو نشون بدیم و نتایج رو به ترتیب نزولی مجموع فروش مرتب کنیم.

🔵 ساختار جداول و کوئری

CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
EmployeeName NVARCHAR(50),
DepartmentID INT
);

CREATE TABLE Departments (
DepartmentID INT PRIMARY KEY,
DepartmentName NVARCHAR(50)
);

CREATE TABLE Sales (
SaleID INT PRIMARY KEY,
EmployeeID INT,
SaleAmount DECIMAL(10, 2),
SaleDate DATE
);


SELECT 
E.EmployeeName,
D.DepartmentName,
SUM(S.SaleAmount) AS TotalSales
FROM
Employees E
JOIN
Sales S ON E.EmployeeID = S.EmployeeID
JOIN
Departments D ON E.DepartmentID = D.DepartmentID
WHERE
S.SaleDate >= '2023-01-01' AND S.SaleDate <= '2023-12-31'
GROUP BY
E.EmployeeName, D.DepartmentName
HAVING
SUM(S.SaleAmount) > 50000
ORDER BY
TotalSales DESC;


🔵 بررسی جزئیات کوئری

🔵انتخاب ستون‌ها: در اینجا سه ستون EmployeeName (نام کارمند)، DepartmentName (نام دپارتمان) و SUM(S.SaleAmount) AS TotalSales (مجموع فروش‌ها به عنوان TotalSales) انتخاب می‌شن.
SELECT E.EmployeeName, D.DepartmentName, SUM(S.SaleAmount) AS TotalSales


🔵منبع داده و ارتباط جداول: در این بخش، جدول Employees با جدول Sales بر اساس EmployeeID و جدول Departments بر اساس DepartmentID مرتبط شدن.
FROM Employees E
JOIN Sales S ON E.EmployeeID = S.EmployeeID
JOIN Departments D ON E.DepartmentID = D.DepartmentID


🔵شرط‌ها (WHERE): این قسمت مشخص می‌کنه که فقط فروش‌هایی که در سال 2023 انجام شدن، انتخاب شن.
WHERE S.SaleDate >= '2023-01-01' AND S.SaleDate <='2023-12-31'


🔵گروه‌بندی (GROUP BY): داده‌ها بر اساس نام کارمند و نام دپارتمان گروه‌بندی می‌شن.
GROUP BY E.EmployeeName, D.DepartmentName 


🔵شرط‌ها برای گروه‌ها (HAVING): فقط گروه‌هایی که مجموع فروش‌شون بیشتر از 50000 واحده، انتخاب می‌شن.
HAVING SUM(S.SaleAmount) > 50000


🔵مرتب‌سازی (ORDER BY): نتایج بر اساس مجموع فروش به ترتیب نزولی مرتب می‌شن.
ORDER BY TotalSales DESC   


#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42👏1👌1
👨‍🎓 ساب‌کوئری‌ در کوئری‌های دیتابیس

زیرپرس‌وجو یا Subquery، یک کوئری تودرتو (nested query) هست که داخل کوئری دیگه قرار می‌گیره. به عبارت دیگه، ساب‌کوئری یک پرس‌وجوی SQL هست که به عنوان بخشی از یک کوئری دیگه اجرا می‌شه. ساب‌کوئری می‌تونه در بخش‌های مختلف یک کوئری اصلی مثل SELECT، FROM، WHERE، HAVING و حتی در دستورهای UPDATE و DELETE استفاده شه.

🔵 انواع Subquery

🔵ساب‌کوئری‌های تک‌ارزش (Scalar Subqueries): یک مقدار منفرد رو برمی‌گردونن. این ساب‌کوئری‌ها معمولا در عبارات WHERE یا SELECT استفاده می‌شن. در مثال زیر، ساب‌کوئری میانگین حقوق رو محاسبه کرده و اون رو به کوئری اصلی برمی‌گردونه تا کارمندانی که حقوقشون بالاتر از میانگینه رو انتخاب کنه.

SELECT name
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);


🔵ساب‌کوئری‌های چندارزش (Multi-Value Subqueries): یک مجموعه‌ای از مقادیر رو برمی‌گردونن و معمولاً با عملگرهایی مثل IN استفاده می‌شن. در این مثال، ساب‌کوئری لیست شناسه‌های دپارتمان‌های واقع در نیویورک رو برمی‌گردونه و کوئری اصلی کارمندانی رو انتخاب می‌کنه که در این دپارتمان‌ها مشغول به کار هستن.

SELECT name
FROM employees
WHERE department_id IN (SELECT department_id FROM departments WHERE location = 'New York');


🔵ساب‌کوئری‌های وابسته (Correlated Subqueries): به کوئری اصلی وابسته هستن و برای هر ردیف از کوئری اصلی یک بار اجرا می‌شن. در این مثال، ساب‌کوئری برای هر ردیف از کوئری اصلی اجرا می‌شه و میانگین حقوق رو برای دپارتمان خاص اون ردیف محاسبه می‌کنه.

SELECT name
FROM employees e1
WHERE salary > (SELECT AVG(salary) FROM employees e2 WHERE e1.department_id = e2.department_id);


🔵 استفاده از ساب‌کوئری‌ها در بخش‌های مختلف کوئری

🔵ساب‌کوئری در عبارت SELECT: ساب‌کوئری‌ها می‌تونن به عنوان یک ستون در عبارت SELECT استفاده شن. در مثال زیر، تعداد پروژه‌هایی که هر کارمند مدیریت می‌کنه به عنوان یک ستون اضافی در نتایج کوئری اصلی نشون داده می‌شه.

SELECT name, (SELECT COUNT(*) FROM projects WHERE manager_id = e.employee_id) AS project_count
FROM employees e;


🔵ساب‌کوئری در عبارت FROM: ساب‌کوئری‌ها می‌تونن به عنوان یک جدول موقت در عبارت FROM استفاده شن. در مثال زیر، ساب‌کوئری میانگین حقوق هر دپارتمان رو محاسبه می‌کنه و به عنوان یک جدول موقت (sub) استفاده می‌شه تا دپارتمان‌هایی که میانگین حقوقشون بالاتر از ۵۰۰۰۰ هست انتخاب شن.

SELECT sub.department_id, sub.avg_salary
FROM (SELECT department_id, AVG(salary) AS avg_salary FROM employees GROUP BY department_id) sub
WHERE sub.avg_salary > 50000;


🔵 مزایا ساب‌کوئری‌: انعطاف‌پذیری بالایی دارن و امکان ایجاد کوئری‌های پیچیده و پویا رو فراهم می‌کنن. همچنین، استفاده ازشون خوانایی کوئری رو بهبود می‌بخشه و به جداسازی منطق پیچیده از کوئری اصلی کمک می‌کنن.

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

🔵 بهینه‌سازی ساب‌کوئری‌ها: ایجاد ایندکس‌ روی ستون‌هایی که در ساب‌کوئری‌ها استفاده می‌کنن سرعت اجرای کوئری رو افزایش می‌ده. در بعضی موارد می‌شه ساب‌کوئری‌ رو با JOIN جایگزین کرد تا کارایی بهتری داشته باشن؛ تقسیم کوئری‌های پیچیده به کوئری‌های کوچک‌تر و ساده‌تر به بهبود کارایی و خوانایی کمک می‌کنه.

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👏2👌2👨‍💻21
👨‍🎓 بررسی مفهوم ساب‌کوئری با یک مثال

دو جدول مشتری با ستون‌های customer_name و customer_id و سفارشات با ستون‌های order_date، customer_id و order_id داریم. برای پیدا کردن نام مشتریانی که تعداد سفارش‌هاشون بیشتر از میانگین تعداد سفارش‌های همه مشتریانه، از یک Subquery استفاده می‌کنیم.

🥇اول، تعداد سفارش‌ها برای هر مشتری رو محاسبه می‌کنیم:
SELECT customer_id, COUNT(order_id) AS order_count
FROM Orders
GROUP BY customer_id


🥈بعد میانگین تعداد سفارش‌ها رو از این نتایج محاسبه می‌کنیم:
SELECT AVG(order_count)
FROM (
SELECT customer_id, COUNT(order_id) AS order_count
FROM Orders
GROUP BY customer_id
) AS subquery


🥉در نهایت، مشتریانی که تعداد سفارش‌هاشون بیشتر از این میانگینه رو انتخاب می‌کنیم:
SELECT customer_name
FROM Customers
WHERE customer_id IN (
SELECT customer_id
FROM Orders
GROUP BY customer_id
HAVING COUNT(order_id) > (
SELECT AVG(order_count)
FROM (
SELECT customer_id, COUNT(order_id) AS order_count
FROM Orders
GROUP BY customer_id
) AS subquery
)
);


#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5👏2👌1
👨‍🎓 ابزارها و نرم‌افزارهای پایگاه داده

دو نوع اصلی پایگاه داده‌ها SQL و NoSQL هستن که هر کدوم از این دو نوع پایگاه داده ابزارها و نرم‌افزارهای خاص خودشون رو دارن.

🔵 پایگاه داده‌های SQL

🔵یکی از محبوب‌ترین پایگاه داده‌های متن‌باز MySQL هست که توسط شرکت Oracle توسعه و پشتیبانی می‌شه. این پایگاه داده به دلیل سرعت بالا، کارایی مناسب و امنیت قابل قبول در بین توسعه‌دهندگان بسیار محبوبه. MySQL به طور گسترده در وب‌سایت‌ها، برنامه‌های وب و سیستم‌های مدیریت محتوا مثل وردپرس استفاده می‌شه.

🔵پایگاه داده‌ی رابطه‌ای متن‌باز دیگه PostgreSQL به دلیل پشتیبانی از ویژگی‌های پیشرفته و سازگاری با استانداردهای SQL، شناخته شده. این پایگاه داده قابلیت‌های متنوعی مثل پشتیبانی از داده‌های JSON، نسخه‌سازی داده‌ها و پشتیبانی از تراکنش‌های ACID رو داراست که اون رو برای برنامه‌های پیچیده مناسب می‌کنه.

🔵پایگاه داده‌ی Microsoft SQL Server توسط شرکت مایکروسافت توسعه پیدا کرده. این پایگاه داده به دلیل یکپارچگی با محصولات مایکروسافت مثل ویژوال استودیو و Azure، امنیت بالا و امکانات پیشرفته‌ی مدیریت داده‌ها، در بین شرکت‌ها و سازمان‌های بزرگ محبوبیت داره.

🔵پایگاه داده‌های رابطه‌ای Oracle Database توسط شرکت اوراکل توسعه پیدا کرده و به دلیل پشتیبانی از پردازش موازی، مدیریت حجم‌های بزرگ داده و امنیت بالا معروفه و به همین دلیل در برنامه‌های حیاتی و سیستم‌های بزرگ مالی و بانکی استفاده می‌شه.

🔵 پایگاه داده‌های NoSQL

🔵پایگاه داده‌ی MongoDB داده‌ها رو به صورت JSON-like ذخیره می‌کنه و به دلیل انعطاف‌پذیری در ساختار داده‌ها، مقیاس‌پذیری بالا و پشتیبانی از ویژگی‌هایی مثل جستجوی کامل متن و تجمع داده‌ها، بسیار محبوبه. MongoDB در برنامه‌های وب، برنامه‌های موبایل و تحلیل داده‌ها به طور گسترده استفاده می‌شه.

🔵یک پایگاه داده‌ی ستونی توزیع‌شده Cassandra هست که توسط Apache Software Foundation توسعه پیدا کرده. این پایگاه داده به دلیل مقیاس‌پذیری بالا، تحمل خطای زیاد و کارایی مناسب در مدیریت حجم‌های بزرگ داده، در بین شرکت‌های نت‌فلیکس و توییتر استفاده می‌شه.

🔵یک پایگاه داده‌ی کلید-مقدار در حافظه Redis هست که برای ذخیره و مدیریت داده‌های موقتی و دایمی استفاده می‌شه. Redis به دلیل سرعت بسیار بالا، پشتیبانی از ساختارهای داده‌ی پیچیده و قابلیت اجرای عملیات ACID، در برنامه‌های وب، کش‌های توزیع‌شده و پیام‌رسانی بلادرنگ استفاده می‌شه.

🔵 ابزارهای مدیریت و توسعه پایگاه داده

علاوه بر نرم‌افزارهای اصلی پایگاه داده، ابزارهای متعددی برای مدیریت و توسعه پایگاه داده‌ها وجود دارن. بعضی از این ابزارها عبارتند از:

🔵ابزار تحت وب phpMyAdmin برای مدیریت پایگاه داده‌های MySQL و MariaDB هست. phpMyAdmin به دلیل رابط کاربری ساده و قابلیت‌های گسترده، بسیار محبوبه.

🔵ابزار pgAdmin برای مدیریت پایگاه داده‌های PostgreSQL هست. این ابزار امکان مدیریت و توسعه پایگاه داده‌های PostgreSQL را از طریق یک رابط کاربری گرافیکی فراهم می‌کنه.

🔵ابزار MongoDB Compass برای مدیریت پایگاه داده‌های MongoDB هست. این ابزار به کاربران امکان می‌ده تا داده‌ها رو به صورت بصری مشاهده و ویرایش کنن، کوئری‌های پیچیده رو اجرا کنن و شاخص‌ها رو مدیریت کنن.

🔵یک ابزار جامع و چند‌منظوره برای مدیریت پایگاه داده‌ها DBeaver هست که از انواع مختلف پایگاه داده‌ها، SQL و NoSQL، پشتیبانی می‌کنه.

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🔥1👨‍💻1
🔖بهترین ابزارهای نرم‌افزاری علم داده

🔠پایگاه داده: PostgreSQL، DuckDB
🔠استخراج داده‌های وب: Beautiful Soup، Zyte
🔠تحلیل داده: Python، R، Tableau
🔠یادگیری ماشین: FastAI، TensorFlow
🔠گزارش‌دهی: Jupyter Notebook

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51👏1👌1
پست‌های هفته‌ای که گذشت رو این‌جا پیدا کنین!

🔺 آموزشی

🔵عملیات CRUD در پایگاه‌های داده
📎 https://t.me/data_ml/630

🔵پرس‌وجو یا Query در پایگاه داده
📎 https://t.me/data_ml/633

🔵به‌کارگیری شرط (WHERE) در پرس‌وجوها
📎 https://t.me/data_ml/636

🔵مفاهیم Group By و Order By در پایگاه‌ داده‌ها
📎 https://t.me/data_ml/639

🔵آشنایی با Subquery یا زیرپرس‌وجو
📎https://t.me/data_ml/642

🔵ابزارها و نرم‌افزارهای پایگاه داده
📎 https://t.me/data_ml/646

🔺 کوئیز

🔵کوییز شماره ۱۷۳: مزایای استفاده از Stored Procedures
📎 https://t.me/data_ml/631

🔵کوییز شماره ۱۷۴: عبارت MERGE در SQL
📎 https://t.me/data_ml/634

🔵کوییز شماره ۱۷۵: بررسی یک کوئری
📎 https://t.me/data_ml/637

🔵کوییز شماره ۱۷۶: از GROUP BY با ROLLUP
📎 https://t.me/data_ml/640

🔵کوییز شماره ۱۷۷: عملگر EXISTS در Subquery
📎 https://t.me/data_ml/644

🔵کوییز شماره ۱۷۸: یک ابزار برای یکپارچه سازی داده
📎 https://t.me/data_ml/647

🔺 نکته

🔵 بلاگ زبان SQL و دستورهای آن برای دیتا ساینس
📎 https://t.me/data_ml/632

🔵تفاوت پایگاه‌های داده SQL و NoSQL
📎 https://t.me/data_ml/635

🔵متداول‌ترین سوالات مصاحبه SQL
📎 https://t.me/data_ml/638

🔵بررسی کامل یک کوئری
📎 https://t.me/data_ml/641

🔵بررسی مفهوم ساب‌کوئری با یک مثال
📎 https://t.me/data_ml/645

🔵بهترین ابزارهای نرم‌افزاری علم داده
📎 https://t.me/data_ml/648

#Weekend
#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍2👏2
👩‍🎓 برنامه آموزشی هفته: پایگاه داده‌ها - بخش دوم

🟠شنبه: نرمال‌سازی

🔵یک‌شنبه: ایندکس‌گذاری

🟢دوشنبه: انواع جوین

🔴سه‌شنبه: انبار داده یا Warehousing

🟠چهارشنبه: پایگاه‌های داده NoSQL

🔵پنج‌شنبه: پشتیبان‌گیری و بازیابی

🟢جمعه: جمع‌بندی

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31👏1👌1
👨‍🎓 نرمال‌سازی و نرمال‌زدایی در پایگاه‌های داده

در پایگاه‌های داده، مدیریت بهینه داده‌ها اهمیت خاصی داره. دو تکنیک اساسی که برای بهبود عملکرد و یکپارچگی داده‌ها به کار می‌رن، نرمال‌سازی و نرمال‌زدایی (Normalization and Denormalization) هستن. انتخاب بین این دو روش باید بر اساس نیازها و الزامات سیستم انجام شه تا بهترین عملکرد و کارایی به دست بیاد.

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

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

🔵مراحل یا تکنیک‌های نرمال‌سازی: نرمال‌سازی به مراحل مختلفی تقسیم می‌شه که به هر کدوم از این مراحل، فرم نرمال می‌گن. بعضی از مهم‌ترین فرم‌های نرمال عبارتند از:

-فرم نرمال اول (1NF): در این فرم، همه ستون‌های جدول باید atomic باشن، یعنی هر ستون باید تنها یک مقدار منحصر به فرد داشته باشه و جداول باید بدون تکرار و چندتایی باشن.

-فرم نرمال دوم (2NF): برای رسیدن به فرم نرمال دوم، اول باید جدول به فرم نرمال اول رسیده باشه. بعد همه ستون‌های غیر کلیدی باید به کلید اصلی به‌طور کامل وابسته باشن، یعنی نباید هیچ‌گونه وابستگی جزئی وجود داشته باشه.

-فرم نرمال سوم (3NF): برای رسیدن به فرم نرمال سوم، اول باید جدول به فرم نرمال دوم رسیده باشه. بعد هیچ‌ کدوم از ستون‌های غیر کلیدی نباید به ستون‌های غیر کلیدی دیگه وابستگی Transitive داشته باشن.

وابستگی ترانزیتی (Transitive Dependency) در پایگاه‌های داده به وضعیتی گفته می‌شه که یک ستون غیر کلیدی به یک ستون غیر کلیدی دیگه وابسته باشه، نه به کلید اصلی.

-فرم نرمال بویس-کاد (Boyce-Codd Normal Form - BCNF): این فرم تکمیل‌کننده فرم نرمال سومه و اطمینان حاصل می‌کنه که هر وابستگی تابعی در جدول، باید تنها و تنها به کلید اصلی وابسته است.

-فرم نرمال چهارم (4NF): این فرم از چند مقدار بودن جداول جلوگیری می‌کنه تا هیچ ترکیب چند مقداری از داده‌ها در یک جدول وجود نداشته باشه.

-فرم نرمال پنجم (5NF): این فرم اطمینان می‌ده که هیچ وابستگی پیوستی در جدول وجود نداره و جداول باید به نحوی باشن که بدون از دست دادن اطلاعات بشه اونها رو به بخش‌های کوچک‌تر تقسیم کرد.

وابستگی پیوستی (Join Dependency) زمانی اتفاق می‌افته که یک جدول نمی‌تونه بدون از دست دادن اطلاعات به جداول کوچکتر تقسیم شه. به عبارت دیگه، اگه جدول به جداول کوچکتر تقسیم شه، برای بازسازی اطلاعات اصلی نیاز به پیوندهای پیچیده (Join) خواهد بود.

🔵 نرمال‌زدایی: نرمال‌زدایی فرآیندیه که طی اون جداول نرمال‌سازی شده به منظور بهبود عملکرد سیستم و کاهش تعداد جستجوها (joins) به شکل اولیه‌شون بازگردانده می‌شن. در واقع، نرمال‌زدایی به معنی اضافه کردن افزونگی کنترل شده به پایگاه داده است.

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

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

🔵کاربردهای نرمال‌زدایی: نرمال‌زدایی بیشتر در سیستم‌هایی که نیاز به خوندن سریع داده‌ها دارن و عملیات نوشتن و به‌روزرسانی کمتر انجام می‌شه، به کار می‌ره. مثال‌هایی از این سیستم‌ها شامل پایگاه‌های داده‌ی تحلیلی و انبارهای داده (Data Warehouses) هستن.

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍3👏2👌1
👨‍🎓 مروری بر تکنیک‌های نرمال‌زدایی

✔️ معرفی ستون‌های افزونه (Redundant Columns): اطلاعات اضافی که به‌صورت مکرر در چند جدول استفاده می‌شن، در یک جدول نگهداری می‌شن. این روش باعث کاهش تعداد Join در پرس‌وجوها و بهبود عملکرد می‌شه.

مثال: اضافه کردن نام مشتری به جدول سفارشات تا نیاز به پیوند جدول مشتریان و سفارشات کاهش پیدا کنه.

✔️ تقسیم جدول به صورت عمودی (Vertical Table Splitting): تقسیم جدول بر اساس ستون‌ها و کلید اصلی برای هر بخش استفاده می‌شه. این روش زمانی مفیده که بعضی از ستون‌ها بیشتر از بقیه استفاده شن.

مثال: تقسیم جدول بیماران به دو جدول Patient_Details و Patient_Medical_History برای جدا کردن اطلاعات عمومی بیماران از سوابق پزشکی‌شون.

✔️ تقسیم جدول به صورت افقی (Horizontal Table Splitting): تقسیم سطرهای جدول به جداول کوچک‌تره. هر جدول دارای ستون‌های یکسانیه و این روش برای مدیریت داده‌های جداگانه بر اساس منطقه یا دسته‌بندی خاص مفیده.

مثال: تقسیم جدول اطلاعات دانشجویان به جداول جداگانه بر اساس دانشکده‌های مختلف.

✔️ افزودن ستون‌های مشتق‌شده (Derived Columns): اضافه شدن ستون‌های جدیدی که دارای مقادیر محاسبه‌شده یا مشتق‌شده از ستون‌های دیگه هستن. در نتیجه نیاز به محاسبات مکرر در پرس‌وجوها کاهش پیدا می‌کنه.

مثال: اضافه کردن ستون مجموع نمرات به جدول دانشجویان برای جلوگیری از محاسبه مجدد مجموع نمرات در هر پرس‌وجو.

✔️ استفاده از جداول آینه‌ای (Mirrored Tables): ایجاد یک نسخه کامل یا جزئی از یک جدول موجود که به صورت جداگانه نگهداری می‌شه و برای بهبود عملکرد پرس‌وجوهای خواندنی بهینه‌سازی شده. این جداول معمولاً برای بار کاری سنگین Read only استفاده می‌شن.

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

✔️ نماهای ذخیره‌شده (Materialized Views): نماهای ذخیره‌شده نتایج پرس‌وجوهای پیش‌محاسبه‌شده هستن که به‌صورت جداگانه در یک جدول ذخیره می‌شن. این تکنیک برای پرس‌وجوهای پیچیده و سنگین که نتایج مکرراً استفاده می‌شن، مناسبه.

مثال: ایجاد یک Materialized Views برای نمایش مجموع فروش ماهانه که نیاز به پیوند جداول فروش و محصولات رو کاهش می‌ده.

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍1🔥1👏1
👨‍🎓 مفهوم ایندکس‌گذاری در پایگاه‌های داده

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

🔵 انواع ایندکس‌ها

🔵ایندکس‌گذاری اولیه (Primary Index): ایندکس‌گذاری اولیه معمولاً روی کلید اولیه (Primary Key) یک جدول ایجاد می‌شه. کلید اولیه هر رکورد رو به صورت یکتا شناسایی می‌کنه و بنابراین ایندکس اولیه هم باید منحصر به فرد باشه. این ایندکس به پایگاه داده کمک می‌کنه تا سریعاً رکوردها رو بر اساس کلید اولیه پیدا کنه.

🔵ایندکس‌گذاری ثانویه (Secondary Index): ایندکس‌های ثانویه برای افزایش سرعت جستجو بر اساس ستون‌های دیگه که کلید اولیه نیستن، ایجاد می‌شن. این ایندکس‌ها می‌تونن غیر یکتا باشن و معمولاً برای بهبود کارایی جستجوهای مکرر روی یک یا چند ستون خاص استفاده می‌شن.

🔵 روش‌های ایجاد ایندکس

🔵ایجاد ایندکس با استفاده از SQL: برای ایجاد ایندکس در پایگاه داده می‌شه از دستورات SQL استفاده کرد. دستور CREATE INDEX به همراه مشخص کردن نام ایندکس، نام جدول و ستون یا ستون‌هایی که باید ایندکس شن، به کار می‌رن. برای مثال:
CREATE INDEX idx_name ON table_name(column_name);


🔵ایندکس‌گذاری اتوماتیک: بعضی از سیستم‌های مدیریت پایگاه داده (DBMS) به صورت خودکار ایندکس‌هایی رو بر اساس تحلیل استفاده و جستجوهای مکرر ایجاد می‌کنن. این ویژگی به بهبود کارایی بدون نیاز به دخالت مستقیم مدیریت پایگاه داده کمک می‌کنه.

🔵 به‌روزرسانی و حذف ایندکس‌ها: ایندکس‌ها هم مثل داده‌ها نیاز به مدیریت دارن. به‌روزرسانی ایندکس‌ها زمانی که داده‌های اصلی تغییر می‌کنن، انجام می‌شه. همچنین، در صورتی که به وجود یک ایندکس دیگه نیاز نباشه می‌شه حذفش کرد.

🔵 پیاده‌سازی ایندکس‌ها

🔵ایندکس‌های B-tree: یکی از رایج‌ترین ساختارهای داده‌ای B-tree است که برای پیاده‌سازی ایندکس‌ها در پایگاه‌های داده استفاده می‌شه. B-tree یک درخت خود-متعادل (Self-balancing) است که هر گره‌اش می‌تونه تعداد زیادی فرزند داشته باشه. این ویژگی باعث می‌شه که ارتفاع درخت نسبتاً کم باشه و دسترسی به داده‌ها سریع انجام شه.

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

- معایب: نیاز به فضای ذخیره‌سازی زیاده داره چون باید اطلاعات ساختاری درخت رو ذخیره کنه. همچنین، مدیریت و نگهداری یک B-tree می‌تونه پیچیده باشه، به ویژه در پایگاه‌های داده با حجم زیاد تغییرات و اطلاعات.

🔵 ایندکس‌های هش (Hash Index): بر اساس جداول هش (Hash Tables) ساخته می‌شن. در این نوع ایندکس، هر مقدار کلید از طریق یک تابع هش به یک مکان خاص در جدول هش نگاشت می‌شه و این مکان خاص به داده مربوطه اشاره می‌کنه.

- مزایا: سرعت بسیار بالا در جستجوهای دقیق (Exact Match) و ایندکس‌های هش نسبت به B-tree ساده‌تر پیاده‌سازی و مدیریت می‌شن، که در نتیجه باعث کاهش پیچیدگی در فرآیندهای نگهداری و به‌روزرسانی ایندکس‌ها می‌شه.

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

🔵 ایندکس‌های ترکیبی (Composite Index): ایندکس ترکیبی یک ایندکسه که روی بیشتر از یک ستون ایجاد می‌شه و برای جستجوهایی که نیاز به ترکیب چند ستون دارن، بهینه شده‌.

- مزایا: افزایش کارایی جستجوهای ترکیبی؛ به این معنی که ایندکس‌های ترکیبی می‌تونن سرعت جستجوهایی که بر اساس چند ستون انجام می‌شن رو بهبود بدن.

- معایب: مدیریت ایندکس‌های ترکیبی ممکنه پیچیده باشه، به خصوص اگه تعداد ستون‌های ایندکس شده زیاد باشن و هر بار که داده‌ها در ستون‌های ایندکس شده تغییر می‌کنن، ایندکس ترکیبی هم باید به‌روز شه که هزینه‌بره.

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥53👍2👏1
💡 مقایسه انبار داده و پایگاه داده

انبار داده (Data Warehouse):
- تحلیل داده‌ها
- ذخیره داده‌های خلاصه‌شده
- استفاده از OLAP (پردازش تحلیلی آنلاین) که بر اساس مدل داده چندبعدیه
- انجام عملیات پیچیده روی داده‌ها برای تحلیل
- نیاز به به‌روزرسانی داده‌ها برای دریافت اطلاعات جدید
- معمولاً برای استفاده چند برنامه کاربردی و بخش‌های مختلف سازمان طراحی می‌شه
- معمولاً برای پشتیبانی از تصمیم‌گیری و تحلیل‌های کلان استفاده می‌شه

پایگاه داده (Database):
- ثبت داده‌ها و تراکنش‌ها
- ذخیره داده‌های جزئی و دقیق
- استفاده از OLTP (پردازش تراکنش آنلاین) که اجرای لحظه‌ای تعداد زیادی از تراکنش‌های پایگاه داده رو ممکن می‌کنه
- انجام عملیات اساسی روی داده‌ها
- دسترسی لحظه‌ای به داده‌ها رو فراهم می‌کنه
- استفاده از داده‌ها از چند برنامه کاربردی
- معمولاً برای پشتیبانی از عملیات روزمره و تراکنش‌های جاری استفاده می‌شه

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64👌2👨‍💻1
👨‍🎓 انواع JOIN در پایگاه داده‌ها

جوین‌ها در SQL به ما امکان می‌دن داده‌ها رو از چند جدول با هم ترکیب کنیم. درک صحیح از انواع مختلف JOIN و نحوه استفاده از اونها، برای هر برنامه‌نویس پایگاه داده ضروریه.

🔵 پیوند چپ یا LEFT JOIN تمام رکوردهای جدول سمت چپ (A) رو به همراه رکوردهای مطابقت‌یافته از جدول سمت راست (B) برمی‌گردونه. اگه هیچ رکوردی در جدول سمت راست مطابقت نداشته باشه، مقدار NULL برای ستون‌های جدول سمت راست برمی‌گردونه.

🔵فرض کنید دو جدول employees و departments داریم. می‌خوایم تمام کارمندان رو همراه با نام دپارتمان‌هاشون نشون بدیم، حتی اگه کارمندی دپارتمان نداشته باشه.

SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;


🔵 پیوند راست یا RIGHT JOIN تمام رکوردهای جدول سمت راست (B) رو به همراه رکوردهای مطابقت‌یافته از جدول سمت چپ (A) برمی‌گردونه. اگه هیچ رکوردی در جدول سمت چپ مطابقت نداشته باشه، مقدار NULL برای ستون‌های جدول سمت چپ برمی‌گردونه.

🔵فرض کنید دو جدول products و orders داریم. می‌خوایم تمام سفارش‌ها رو همراه با جزئیات محصولاتشون نشون بدیم، حتی اگه محصولی در سفارش‌ها نباشه.

SELECT orders.order_id, products.product_name
FROM orders
RIGHT JOIN products ON orders.product_id = products.id;


🔵 پیوند خارجی کامل یا FULL OUTER JOIN تمام رکوردهای هر دو جدول (A و B) رو برمی‌گردوند. اگه مطابقتی بین رکوردها نباشه، مقدار NULL برای ستون‌های جدول دیگه برمی‌گردوند.

🔵فرض کنید دو جدول students و courses داریم. می‌خوایم تمام دانشجویان و تمام دوره‌ها رو نشون بدیم، حتی اگه دانشجویی در دوره‌ای ثبت‌نام نکرده باشه یا دوره‌ای دانشجو نداشته باشه.

SELECT students.name, courses.course_name
FROM students
FULL OUTER JOIN courses ON students.course_id = courses.id;


🔵 پیوند داخلی یا INNER JOIN فقط رکوردهایی رو برمی‌گردونه که در هر دو جدول (A و B) مطابقت دارن.

🔵فرض کنید دو جدول authors و books داریم. می‌خوایم تمام کتاب‌ها رو همراه با نویسندگان نشون بدیم، فقط اگه کتابی نویسنده‌ای داشته باشه.

SELECT authors.name, books.title
FROM authors
INNER JOIN books ON authors.id = books.author_id;


🔵 پیوند چپ بدون پیوند داخلی یا LEFT JOIN EXCLUDING INNER JOIN رکوردهایی رو از جدول چپ (A) برمی‌گردونه که در جدول راست (B) مطابقت ندارن. این عملیات با ترکیب LEFT JOIN و WHERE IS NULL انجام می‌شه.

SELECT A.*
FROM A
LEFT JOIN B ON A.id = B.id
WHERE B.id IS NULL;


🔵 پیوند راست بدون پیوند داخلی یا RIGHT JOIN EXCLUDING INNER JOIN رکوردهایی رو از جدول راست (B) برمی‌گردونه که در جدول چپ (A) مطابقت ندارن. این عملیات با ترکیب RIGHT JOIN و WHERE IS NULL انجام می‌شه.

SELECT B.*
FROM A
RIGHT JOIN B ON A.id = B.id
WHERE A.id IS NULL;


🔵 پیوند خارجی کامل بدون پیوند داخلی یا FULL OUTER JOIN EXCLUDING INNER JOIN رکوردهایی رو از هر دو جدول (A و B) برمی‌گردونه که در جدول دیگه مطابقت ندارن. این عملیات با ترکیب FULL OUTER JOIN و WHERE IS NULL انجام می‌شه.

SELECT A.*, B.*
FROM A
FULL OUTER JOIN B ON A.id = B.id
WHERE A.id IS NULL OR B.id IS NULL;


#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍3🔥2👌1
💡 مقایسه انبار داده و دریاچه داده

انبار داده (Data Warehouse):
- قابلیت ذخیره‌سازی داده‌های ساختاریافته و پردازش‌شده
- دارای حجم کمتری از داده‌ها در حدود ترابایت
- شامل داده‌های تاریخی و رابطه‌ای
- بیشتر توسط تحلیل‌گران کسب‌وکار استفاده می‌شه
- کاربرد در پردازش دسته‌ای و گزارش‌دهی هوش تجاری
- دارای امنیت بالا و کامل
- ساختار انبار داده از قبل تعریف شده و برای پرس‌وجوهای خاص بهینه شده

دریاچه داده (Data Lake):
- قابلیت ذخیره‌سازی مقادیر زیادی از داده‌های ساختاریافته، نیمه‌ساختاریافته، غیرساختاریافته و خام
- دارای حجم بسیار زیادی از داده‌ها در حدود پتابایت
- داده‌ها می‌تونن برای انواع مختلفی از کاربردها مثل یادگیری ماشین، تحلیل‌ جریان داده و هوش مصنوعی استفاده شن
- بیشتر توسط دانشمندان داده و تحلیل‌گران داده استفاده می‌شه
- امنیت‌اش می‌تونه متغیر باشه و نیاز به مدیریت دقیق داره
- انعطاف‌پذیری بیشتری در ذخیره‌سازی و پردازش داده‌ها داره

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍2🔥2👌1
👨‍🎓 انبار داده یا Data Warehousing

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

🔵 مزایای انبار داده

🔵تجمیع داده‌ها: انبار داده اطلاعات رو از منابع مختلف جمع‌آوری و در یک مکان واحد ذخیره می‌کنه. این کار باعث می‌شه که کاربران بتونن به داده‌های یکپارچه دسترسی داشته باشن و تحلیل‌های جامع‌تری انجام بدن.

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

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

🔵 معماری انبار داده

🔵لایه استخراج، تبدیل و بارگذاری (ETL): این لایه شامل فرآیندهای استخراج داده از منابع مختلف، تبدیل داده‌ها به فرمتی مناسب و بارگذاری اونها در انبار داده است. این مرحله مهم‌ترین بخش از فرآیند انبار داده است که به بهبود کیفیت و یکپارچگی داده‌ها کمک می‌کنه.

🔵لایه ذخیره‌سازی: در این لایه، داده‌ها در ساختاری منظم و بهینه ذخیره می‌شه تا به راحتی قابل بازیابی و تحلیل باشن. معمولاً از پایگاه‌های داده رابطه‌ای (Relational Databases) برای این منظور استفاده می‌شه.

🔵لایه دسترسی و تحلیل: این لایه شامل ابزارها و رابط‌هایی هست که به کاربران اجازه می‌ده به داده‌ها دسترسی پیدا کنن و تحلیل‌های مورد نیازشون رو انجام بدن. ابزارهایی مثل ابزارهای هوش تجاری (Business Intelligence) و داشبوردهای تحلیلی در این لایه قرار دارن.

🔵 ابزارها و فناوری‌های مرتبط با انبار داده

🔵ابزارهای ETL: ابزارهای ETL مثل Informatica، Talend و Apache Nifi به استخراج، تبدیل و بارگذاری داده‌ها کمک می‌کنن. این ابزارها قابلیت‌های متنوعی برای پاک‌سازی، تبدیل و یکپارچه‌سازی داده‌ها ارائه می‌دن.

🔵ابزارهای هوش تجاری: ابزارهای هوش تجاری مثل Tableau، Power BI و QlikView به تحلیل و بصری‌سازی داده‌ها کمک می‌کنن. این ابزارها قابلیت‌های گسترده‌ای برای ایجاد گزارش‌ها و داشبوردهای تعاملی ارائه می‌دن.

🔵 چالش‌های انبار داده

🔵حجم بالای داده‌ها: یکی از چالش‌های اصلی انبار داده، مدیریت حجم بالای داده‌هاست. با افزایش حجم داده‌ها، نیاز به زیرساخت‌های قوی‌تر و بهینه‌سازی‌های پیچیده‌تر افزایش پیدا می‌کنه.

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

🔵امنیت داده‌ها: حفظ امنیت و محرمانگی داده‌ها در انبار داده بسیار مهمه. دسترسی به داده‌ها باید به صورت محدود و کنترل‌شده باشه تا از افشای اطلاعات حساس جلوگیری شه.

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63🔥1👌1
👨‍🎓 آشنایی با معماری Data Vault 2.0

معماری Data Vault 2.0 یک روش پیشرفته برای طراحی انبار داده‌هاست که هدفش فراهم کردن قابلیت توسعه‌پذیری، انعطاف‌پذیری و استحکام در مدیریت داده‌های بزرگ و پیچیده است. Data Vault 2.0 به عنوان یک توسعه از مدل اصلی Data Vault طراحی شده.

🔵 ویژگی‌های کلیدی Data Vault 2.0
🔵قابلیت توسعه‌پذیری: به دلیل استفاده از معماری ماژولار، به راحتی قابل گسترشه و به سازمان‌ها اجازه می‌ده که به تدریج داده‌های جدید رو اضافه کنن؛ بدون اینکه ساختار کلی تغییر کنه.

🔵انعطاف‌پذیری: به دلیل استفاده از جداول مختلف برای ذخیره‌سازی داده‌ها، انعطاف‌پذیره و توانایی سازگاری سریع با تغییرات رو داره.

🔵یکپارچگی تاریخی: تضمین می‌کنه که تاریخچه تمامی تغییرات داده‌ها به صورت کامل و دقیق نگهداری می‌شن.

🔵 اجزای اصلی Data Vault 2.0
🔵جداول Hub Tables اطلاعات مهم موجودیت‌ها رو ذخیره و به عنوان نقطه اصلی اتصال داده‌ها عمل می‌کنن.

🔵جداول Link Tables روابط بین موجودیت‌ها رو نشون می‌دن و ارتباطات بین Hub Tables رو تعریف می‌کنن.

🔵جداول Satellite Tables اطلاعات توصیفی و تغییرات زمانی داده‌ها رو ذخیره می‌کنن و به Hub و Link Tables متصل هستن.

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍1🔥1👨‍💻1
👨‍🎓 پایگاه داده‌های NoSQL

پایگاه داده‌های NoSQL یک دسته‌بندی از سیستم‌های مدیریت پایگاه داده (DBMS) است که برای کار با داده‌های غیرسازمانی و حجم‌های بزرگ داده طراحی شدن. برخلاف پایگاه داده‌های رابطه‌ای (SQL) که از جداول و روابط ساختار یافته استفاده می‌کنن، پایگاه داده‌های NoSQL انعطاف‌پذیری بیشتری در مدل‌سازی داده‌ها ارائه می‌دن.

🔵 دلایل استفاده از پایگاه داده‌های NoSQL
🔵مقیاس‌پذیری: یکی از مزایای اصلی پایگاه داده‌های NoSQL، مقیاس‌پذیری افقیه. در حالی که پایگاه داده‌های سنتی SQL معمولاً برای افزایش ظرفیت نیاز به ارتقای سخت‌افزاری دارن، پایگاه داده‌های NoSQL می‌تونن با اضافه کردن سرورهای بیشتری به خوشه، مقیاس‌پذیری داشته باشن.

🔵انعطاف‌پذیری در مدل‌سازی داده‌ها: پایگاه داده‌های NoSQL از مدل‌های داده متنوعی مانند سندی (Document-Based)، ستونی (Column-Based)، گراف (Graph-Based) و کلید-مقدار (Key Value) پشتیبانی و امکان ذخیره و مدیریت داده‌های پیچیده و غیرسازمانی رو فراهم می‌کنن.

🔵عملکرد بالا: پایگاه داده‌های NoSQL برای دسترسی سریع به داده‌ها و عملیات نوشتن بهینه‌سازی شدن، که این ویژگی‌ها اونها رو برای برنامه‌هایی با حجم داده بالا و نیاز به سرعت بالا مناسب می‌سازه.

🔵 انواع پایگاه داده‌های NoSQL
🔵پایگاه داده‌های سندی (Document Databases): این نوع پایگاه داده‌ها از ساختار داده‌ای مشابه JSON یا BSON استفاده می‌کنن. هر سند می‌تونه حاوی مقادیر متنوعی از داده‌ها باشه و بدون نیاز به تغییر ساختار کلی پایگاه داده، گسترش پیدا کنه. MongoDB و CouchDB مثال‌هایی از این نوع هستن.

🔵پایگاه داده‌های کلید-مقدار (Key-Value Stores): در این مدل، داده‌ها به صورت جفت‌های کلید-مقدار ذخیره می‌شن. این مدل برای ذخیره‌سازی ساده و سریع داده‌ها که نیاز به جستجوی پیچیده ندارن، مناسبه. Redis و DynamoDB مثال‌هایی از این نوع هستن.

🔵پایگاه داده‌های ستونی (Column-Family Stores): این نوع پایگاه داده‌ها داده‌ها رو در ستون‌ها سازماندهی می‌کنن و برای پرس و جوهای تحلیلی بزرگ بهینه‌سازی شدن. Apache Cassandra و HBase مثال‌هایی از این نوع هستن.

🔵پایگاه داده‌های گراف (Graph Databases): پایگاه داده‌های گراف برای مدیریت و ذخیره داده‌هایی که ارتباطات پیچیده‌ای دارن، مثل شبکه‌های اجتماعی یا سیتم‌های توصیه‌گر، مناسبن. Neo4j و OrientDB مثال‌هایی از این نوع هستن.

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

🔵 معایب
🔵عدم سازگاری با SQL: برای کسانی که با SQL آشنایی دارن، یادگیری ممکنه زمان‌بر باشه.
🔵پیچیدگی مدیریت: مدیریت داده‌ها و یکپارچگی در برخی موارد می‌تونه پیچیده‌تر باشه.
🔵نبود استانداردهای واحد: نبود استانداردهای واحد ممکنه باعث ناسازگاری و پیچیدگی بیشتر شه.

🔵 موارد استفاده
🔵برنامه‌های وب و موبایل: بسیاری از برنامه‌های وب و موبایل که نیاز به عملکرد بالا و مقیاس‌پذیری دارن، از پایگاه داده‌های NoSQL استفاده می‌کنن.

🔵کلان داده (Big Data): در تحلیل داده‌های بزرگ و پیچیده، پایگاه داده‌های NoSQL با قابلیت پردازش سریع و انعطاف‌پذیری مدل داده‌ها، نقش مهمی دارن.

🔵اینترنت اشیا (IoT): پایگاه داده‌های NoSQL برای مدیریت حجم بالای داده‌های تولید شده توسط دستگاه‌های IoT بسیار مناسب هستن.

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍2🔥2👌2
🧑‍🎓 تفاوت پایگاه‌های داده SQL و NoSQL چیه و هر کدوم چه کاربردهایی دارن؟

پایگاه‌های داده SQL به مدل‌های ساختاریافته و رابطه‌ای تأکید می‌کنن، درحالی‌که پایگاه‌های داده NoSQL با رویکردی برای مدیریت داده‌های متنوع و پویا با تأکید بیشتر بر مقیاس‌پذیری و سرعت دارن. این مطلب تفاوت‌های بین این دو سیستم پایگاه داده رو بررسی می‌کنه.

🟢برای مطالعه بیشتر کلیک کنین:
👉📎 http://ctdrs.ir/ds0282

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62👏2👌1
👨‍🎓 پشتیبان‌گیری و بازیابی در پایگاه‌های داده

🔵 پشتیبان‌گیری (Backup): پشتیبان‌گیری به فرآیند ذخیره‌سازی نسخه‌ای از داده‌ها در یک محل امن گفته می‌شه تا در صورت بروز مشکل در سیستم اصلی، امکان استفاده از این نسخه وجود داشته باشه. انواع مختلفی از پشتیبان‌گیری وجود داره که هر کدوم مزایا و معایب خاص خودشون رو دارن.

🔵پشتیبان‌گیری کامل (Full Backup): در این روش، تمام داده‌های موجود در پایگاه داده در یک فایل پشتیبان ذخیره می‌شن. این روش زمان‌بره و فضای زیادی اشغال می‌کنه، اما بازیابی داده‌ها در این روش سریع و آسونه. مثال این نوع پشتیبان‌گیری در SQL Server:

     BACKUP DATABASE MyDatabase TO DISK = 'C:\Backups\MyDatabaseFull.bak';


🔵پشتیبان‌گیری تفاضلی (Differential Backup): در این روش، فقط تغییرات ایجاد شده از زمان آخرین پشتیبان‌گیری کامل ذخیره می‌شه. سریع‌تر از پشتیبان‌گیری کامله و فضای کمتری نیاز داره. مثال این نوع پشتیبان‌گیری در SQL Server:

     BACKUP DATABASE MyDatabase TO DISK = 'C:\Backups\MyDatabaseDiff.bak' WITH DIFFERENTIAL;


🔵پشتیبان‌گیری افزایشی (Incremental Backup): در این روش، تنها تغییرات ایجاد شده از آخرین پشتیبان‌گیری، چه کامل و چه افزایشی، ذخیره می‌شه. این روش کمترین فضای ذخیره‌سازی رو نیاز داره، اما بازیابی‌اش پیچیده‌تره. مثال این نوع پشتیبان‌گیری در Oracle RMAN:

     RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;


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

🔵 نکات فنی در پشتیبان‌گیری
🔵فشرده‌سازی: استفاده از الگوریتم‌های فشرده‌سازی برای کاهش فضای مورد نیاز.
🔵رمزنگاری: رمزنگاری فایل‌های پشتیبان برای افزایش امنیت.
🔵ذخیره‌سازی خارجی: ذخیره نسخه‌های پشتیبان در محل‌های مختلف، مثل فضای ابری.

🔵 بازیابی (Restore): بازیابی به فرآیندی گفته می‌شه که طی اون داده‌ها از نسخه پشتیبان به سیستم اصلی برگردونده می‌شن.

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

🔵 انواع بازیابی
🔵بازیابی کامل (Full Restore): برگردوندن کامل پایگاه داده به وضعیت آخرین پشتیبان کامل. مثال این نوع پشتیبان‌گیری در SQL Server:

     RESTORE DATABASE MyDatabase FROM DISK = 'C:\Backups\MyDatabaseFull.bak';


🔵بازیابی تفاضلی (Differential Restore): برگردوندن پایگاه داده به وضعیت آخرین پشتیبان تفاضلی به همراه پشتیبان کامل. مثال این نوع پشتیبان‌گیری در SQL Server:

     RESTORE DATABASE MyDatabase FROM DISK = 'C:\Backups\MyDatabaseFull.bak' WITH NORECOVERY;
RESTORE DATABASE MyDatabase FROM DISK = 'C:\Backups\MyDatabaseDiff.bak' WITH RECOVERY;


🔵بازیابی نقطه‌ای (Point-in-Time Restore): برگردوندن پایگاه داده به یک نقطه زمانی خاص با استفاده از پشتیبان‌های لاگ تراکنش. مثال این نوع پشتیبان‌گیری در SQL Server:

     RESTORE DATABASE MyDatabase FROM DISK = 'C:\Backups\MyDatabaseFull.bak' WITH NORECOVERY;
RESTORE LOG MyDatabase FROM DISK = 'C:\Backups\MyDatabaseLog.bak' WITH STOPAT = '2024-07-11T14:30:00', RECOVERY;


🔵 ابزارها و تکنولوژی‌ها
🔵SQL Server Management Studio (SSMS)
ابزار گرافیکی برای مدیریت پشتیبان‌گیری و بازیابی در SQL Server
🔵Oracle Recovery Manager (RMAN)
ابزار پشتیبان‌گیری و بازیابی در Oracle Database
🔵MySQL Enterprise Backup
ابزاری برای پشتیبان‌گیری و بازیابی پایگاه‌های داده MySQL
🔵pg_dump و pg_restore
ابزارهای خط فرمانی برای پشتیبان‌گیری و بازیابی در PostgreSQL

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62👏2👌2
💡 مروری بر انواع وابستگی در پایگاه داده‌ها

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

🔵 وابستگی تابعی (Functional Dependency)
این وابستگی یعنی اگه در یک جدول، یک ستون خاص باشه که با دونستن مقدارش، بتونیم به طور قطعی مقدار یک ستون دیگه رو بگیم. مثلاً اگه شماره ملی یک نفر رو بدونیم، می‌تونیم نام و نام خانوادگی‌اش رو هم بفهمیم. بنابراین، شماره ملی تعیین‌کننده نام و نام خانوادگیه.

🔵 وابستگی چندمقداری (Multivalued Dependency)
این نوع وابستگی زمانی رخ می‌ده که یک ستون می‌تونه به چند مقدار مستقل از یک ستون دیگه مربوط باشه. مثلاً اگه یک دانشجو چند شماره تماس و همچنین چند آدرس ایمیل داشته باشه، شماره تماس‌ها و آدرس‌های ایمیل به طور مستقل از هم هستن، اما هر دو به یک دانشجو مربوط می‌شن.

🔵 وابستگی ترانزیتیو (Transitive Dependency)
این وابستگی زمانی رخ می‌ده که یک ستون به طور غیرمستقیم به ستون دیگه وابسته باشه. مثلاً اگر بدونیم درس یک دانشجو چیه و بر اساسش استاد درس رو بدونیم، بعد اگه از روی استاد بتونیم دانشکده رو بفهمیم، اون وقت بین درس و دانشکده هم یک وابستگی غیرمستقیم (Transitive) وجود داره.

🔵 وابستگی پیوست (Join Dependency)
این وابستگی زمانی مطرح می‌شه که یک جدول بتونه به چند زیرجدول تقسیم شه و با ترکیب مجدد این زیرجدول‌ها، جدول اصلی دوباره ساخته شه. یعنی اطلاعات به شکلی تقسیم شده که بشه با اتصال اونها دوباره به داده‌های اولیه رسید.

🔵 وابستگی بیرونی (Domain-Key Normal Form - DKNF)
این وابستگی زمانی مطرح می‌شه که تمام محدودیت‌ها در جدول تنها به وسیله دامنه مجاز مقادیر ستون‌ها و کلیدهای اصلی تعیین شه. در این صورت، جدول در بالاترین سطح نرمال‌سازی قرار داره.

🔵 وابستگی تطابق (Inclusion Dependency)
این وابستگی بیان می‌کنه که مقدار یک ستون یا مجموعه‌ای از ستون‌ها در یک جدول باید با مقدار یک ستون یا مجموعه‌ای از ستون‌ها در جدول دیگه مطابقت داشته باشه. مثلاً شماره دانشجویی در جدول نمرات باید با شماره دانشجویی در جدول اطلاعات دانشجو تطابق داشته باشه.

🔵 وابستگی حلقوی (Cyclic Dependency)
این نوع وابستگی زمانی رخ می‌ده که مجموعه‌ای از وابستگی‌ها یک حلقه تشکیل بدن. مثلاً اگه ستون A به ستون B وابسته باشه، ستون B به ستون C و ستون C دوباره به ستون A وابسته باش، این یک حلقه است.

🔵 وابستگی انتزاعی (Partial Dependency)
این وابستگی زمانی رخ می‌ده که یک ستون غیرکلیدی به بخشی از کلید ترکیبی وابسته باشه. مثلاً اگه یک کلید ترکیبی شامل دو ستون کد درس و شماره کلاس باشه و ستون نام استاد فقط به کد درس وابسته باشه، این وابستگی انتزاعیه.

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍1🔥1👏1
پست‌های هفته‌ای که گذشت رو این‌جا پیدا کنین!

🔺 آموزشی

🔵نرمال‌سازی و نرمال‌زدایی در پایگاه‌های داده
📎 https://t.me/data_ml/652

🔵مفهوم ایندکس‌گذاری در پایگاه‌های داده
📎 https://t.me/data_ml/656

🔵انواع JOIN در پایگاه داده‌ها
📎 https://t.me/data_ml/660

🔵انبار داده یا Data Warehousing
📎 https://t.me/data_ml/663

🔵پایگاه داده‌های NoSQL
📎 https://t.me/data_ml/667

🔵پشتیبان‌گیری و بازیابی در پایگاه‌های داده
📎 https://t.me/data_ml/669

🔺 کوئیز

🔵کوییز شماره ۱۷۹: شرایطی استفاده از Materialized Views در نرمال‌زدایی
📎 https://t.me/data_ml/654

🔵کوییز شماره ۱۸۰: توصیفی از ایندکس خوشه‌بندی شده در پایگاه‌داده‌ها
📎 https://t.me/data_ml/658

🔵کوییز شماره ۱۸۱: HASH JOIN در پایگاه داده
📎 https://t.me/data_ml/661

🔵کوییز شماره ۱۸۲: امکان بارگذاری موازی و مقیاس‌پذیری بالا در Data Vault 2.0
📎 https://t.me/data_ml/665

🔵کوییز شماره ۱۸۳: تکنیک Log Shipping در SQL Server
📎 https://t.me/data_ml/670

🔺 نکته

🔵 مروری بر تکنیک‌های نرمال‌زدایی
https://t.me/data_ml/655

🔵مقایسه انبار داده و پایگاه داده
📎 https://t.me/data_ml/659

🔵مقایسه انبار داده و دریاچه داده
📎 https://t.me/data_ml/662

🔵آشنایی با معماری Data Vault 2.0
📎 https://t.me/data_ml/666

🔵تفاوت پایگاه‌های داده SQL و NoSQL
📎 https://t.me/data_ml/668

🔵مروری بر انواع وابستگی در پایگاه داده‌ها
📎 https://t.me/data_ml/671

#Weekend
#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51🔥1👏1