You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Data-Science-For-Beginners/translations/fa/2-Working-With-Data/06-non-relational/README.md

158 lines
19 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "c182e87f9f80be7e7cdffc7b40bbfccf",
"translation_date": "2025-09-05T14:10:08+00:00",
"source_file": "2-Working-With-Data/06-non-relational/README.md",
"language_code": "fa"
}
-->
# کار با داده‌ها: داده‌های غیررابطه‌ای
|![طرح دستی توسط [(@sketchthedocs)](https://sketchthedocs.dev)](../../sketchnotes/06-NoSQL.png)|
|:---:|
|کار با داده‌های NoSQL - _طرح دستی توسط [@nitya](https://twitter.com/nitya)_ |
## [پیش‌از‌درس: آزمون کوتاه](https://ff-quizzes.netlify.app/en/ds/quiz/10)
داده‌ها محدود به پایگاه‌های داده رابطه‌ای نیستند. این درس بر داده‌های غیررابطه‌ای تمرکز دارد و اصول اولیه صفحات گسترده و NoSQL را پوشش می‌دهد.
## صفحات گسترده
صفحات گسترده یکی از روش‌های محبوب برای ذخیره و بررسی داده‌ها هستند، زیرا راه‌اندازی و شروع کار با آن‌ها نیاز به تلاش کمتری دارد. در این درس، با اجزای اصلی یک صفحه گسترده، فرمول‌ها و توابع آشنا خواهید شد. مثال‌ها با استفاده از Microsoft Excel نشان داده می‌شوند، اما بیشتر بخش‌ها و موضوعات در مقایسه با سایر نرم‌افزارهای صفحات گسترده نام‌ها و مراحل مشابهی خواهند داشت.
![یک فایل خالی Microsoft Excel با دو برگه](../../../../2-Working-With-Data/06-non-relational/images/parts-of-spreadsheet.png)
یک صفحه گسترده یک فایل است که در سیستم فایل یک کامپیوتر، دستگاه یا سیستم فایل ابری قابل دسترسی است. نرم‌افزار ممکن است مبتنی بر مرورگر باشد یا به‌صورت یک برنامه نصب‌شده روی کامپیوتر یا اپلیکیشن دانلودشده باشد. در Excel، این فایل‌ها به‌عنوان **دفترچه‌کار** تعریف می‌شوند و این اصطلاح در ادامه این درس استفاده خواهد شد.
یک دفترچه‌کار شامل یک یا چند **برگه‌کار** است که هر برگه با زبانه‌ها برچسب‌گذاری شده است. درون هر برگه‌کار مستطیل‌هایی به نام **سلول** وجود دارد که داده‌های واقعی را در خود جای می‌دهند. یک سلول محل تقاطع یک ردیف و یک ستون است، جایی که ستون‌ها با حروف الفبایی و ردیف‌ها با اعداد برچسب‌گذاری شده‌اند. برخی صفحات گسترده در چند ردیف اول دارای سرصفحه‌هایی هستند که داده‌های موجود در یک سلول را توصیف می‌کنند.
با این عناصر اصلی یک دفترچه‌کار Excel، از یک مثال از [قالب‌های مایکروسافت](https://templates.office.com/) که بر مدیریت موجودی تمرکز دارد، برای بررسی بخش‌های اضافی یک صفحه گسترده استفاده خواهیم کرد.
### مدیریت موجودی
فایل صفحه گسترده‌ای به نام "InventoryExample" یک صفحه گسترده قالب‌بندی‌شده از اقلام موجود در یک موجودی است که شامل سه برگه‌کار است. زبانه‌های این برگه‌ها با نام‌های "Inventory List"، "Inventory Pick List" و "Bin Lookup" برچسب‌گذاری شده‌اند. ردیف ۴ در برگه Inventory List سرصفحه است که مقدار هر سلول در ستون سرصفحه را توصیف می‌کند.
![یک فرمول برجسته‌شده از یک لیست موجودی در Microsoft Excel](../../../../2-Working-With-Data/06-non-relational/images/formula-excel.png)
در برخی موارد، مقدار یک سلول به مقادیر سایر سلول‌ها وابسته است تا مقدار خود را تولید کند. صفحه گسترده Inventory List هزینه هر آیتم در موجودی را پیگیری می‌کند، اما اگر بخواهیم ارزش کل موجودی را بدانیم چه؟ [**فرمول‌ها**](https://support.microsoft.com/en-us/office/overview-of-formulas-34519a4e-1e8d-4f4b-84d4-d642c4f63263) عملیات‌هایی را روی داده‌های سلول انجام می‌دهند و در این مثال برای محاسبه ارزش موجودی استفاده می‌شوند. این صفحه گسترده از یک فرمول در ستون Inventory Value استفاده کرده است تا ارزش هر آیتم را با ضرب مقدار در ستون QTY در هزینه در ستون COST محاسبه کند. با دوبار کلیک یا برجسته کردن یک سلول، فرمول نمایش داده می‌شود. خواهید دید که فرمول‌ها با علامت مساوی شروع می‌شوند و سپس محاسبه یا عملیات دنبال می‌شود.
![یک تابع برجسته‌شده از یک لیست موجودی در Microsoft Excel](../../../../2-Working-With-Data/06-non-relational/images/function-excel.png)
می‌توانیم از یک فرمول دیگر برای جمع‌کردن تمام مقادیر ستون Inventory Value و به‌دست‌آوردن ارزش کل استفاده کنیم. این کار می‌تواند با جمع‌کردن هر سلول انجام شود، اما این کار می‌تواند خسته‌کننده باشد. Excel دارای [**توابع**](https://support.microsoft.com/en-us/office/sum-function-043e1c7d-7726-4e80-8f32-07b23e057f89) یا فرمول‌های از پیش تعریف‌شده‌ای است که محاسبات را روی مقادیر سلول انجام می‌دهند. توابع به آرگومان‌ها نیاز دارند که مقادیر موردنیاز برای انجام این محاسبات هستند. وقتی توابع به بیش از یک آرگومان نیاز دارند، باید به ترتیب خاصی فهرست شوند، در غیر این صورت ممکن است تابع مقدار صحیحی را محاسبه نکند. این مثال از تابع SUM استفاده می‌کند و مقادیر ستون Inventory Value را به‌عنوان آرگومان برای جمع‌کردن و تولید مقدار کل در ردیف ۳، ستون B (که به‌عنوان B3 نیز شناخته می‌شود) استفاده می‌کند.
## NoSQL
NoSQL یک اصطلاح کلی برای روش‌های مختلف ذخیره داده‌های غیررابطه‌ای است و می‌تواند به‌عنوان "غیر-SQL"، "غیررابطه‌ای" یا "نه فقط SQL" تفسیر شود. این نوع سیستم‌های پایگاه داده را می‌توان به چهار نوع دسته‌بندی کرد.
![نمایش گرافیکی از یک پایگاه داده کلید-مقدار که ۴ کلید عددی منحصربه‌فرد را با ۴ مقدار مختلف مرتبط می‌کند](../../../../2-Working-With-Data/06-non-relational/images/kv-db.png)
> منبع: [وبلاگ Michał Białecki](https://www.michalbialecki.com/2018/03/18/azure-cosmos-db-key-value-database-cloud/)
پایگاه داده‌های [کلید-مقدار](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#keyvalue-data-stores) کلیدهای منحصربه‌فرد را که شناسه‌ای منحصربه‌فرد مرتبط با یک مقدار هستند، جفت می‌کنند. این جفت‌ها با استفاده از یک [جدول هش](https://www.hackerearth.com/practice/data-structures/hash-tables/basics-of-hash-tables/tutorial/) با یک تابع هش مناسب ذخیره می‌شوند.
![نمایش گرافیکی از یک پایگاه داده گراف که روابط بین افراد، علایق و مکان‌ها را نشان می‌دهد](../../../../2-Working-With-Data/06-non-relational/images/graph-db.png)
> منبع: [مایکروسافت](https://docs.microsoft.com/en-us/azure/cosmos-db/graph/graph-introduction#graph-database-by-example)
پایگاه داده‌های [گراف](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#graph-data-stores) روابط در داده‌ها را توصیف می‌کنند و به‌صورت مجموعه‌ای از گره‌ها و یال‌ها نمایش داده می‌شوند. یک گره نمایانگر یک موجودیت است، چیزی که در دنیای واقعی وجود دارد، مانند یک دانش‌آموز یا صورت‌حساب بانکی. یال‌ها رابطه بین دو موجودیت را نشان می‌دهند. هر گره و یال دارای ویژگی‌هایی هستند که اطلاعات اضافی درباره هر گره و یال ارائه می‌دهند.
![نمایش گرافیکی از یک پایگاه داده ستونی که یک پایگاه داده مشتری با دو خانواده ستون به نام‌های Identity و Contact Info را نشان می‌دهد](../../../../2-Working-With-Data/06-non-relational/images/columnar-db.png)
پایگاه داده‌های [ستونی](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#columnar-data-stores) داده‌ها را به ستون‌ها و ردیف‌ها سازماندهی می‌کنند، مشابه ساختار داده رابطه‌ای، اما هر ستون به گروه‌هایی به نام خانواده ستون تقسیم می‌شود، جایی که تمام داده‌های زیر یک ستون مرتبط هستند و می‌توانند به‌عنوان یک واحد بازیابی و تغییر داده شوند.
### ذخیره‌سازی داده‌های سندی با Azure Cosmos DB
پایگاه داده‌های [سندی](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#document-data-stores) بر مفهوم پایگاه داده کلید-مقدار بنا شده‌اند و از مجموعه‌ای از فیلدها و اشیاء تشکیل شده‌اند. این بخش پایگاه داده‌های سندی را با استفاده از شبیه‌ساز Cosmos DB بررسی می‌کند.
پایگاه داده Cosmos DB تعریف "نه فقط SQL" را برآورده می‌کند، جایی که پایگاه داده سندی Cosmos DB برای جستجوی داده‌ها به SQL متکی است. [درس قبلی](../05-relational-databases/README.md) درباره SQL اصول اولیه این زبان را پوشش می‌دهد و می‌توانیم برخی از همان جستجوها را در اینجا روی یک پایگاه داده سندی اعمال کنیم. ما از شبیه‌ساز Cosmos DB استفاده خواهیم کرد که به ما امکان می‌دهد یک پایگاه داده سندی را به‌صورت محلی روی یک کامپیوتر ایجاد و بررسی کنیم. درباره شبیه‌ساز [اینجا](https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator?tabs=ssl-netstd21) بیشتر بخوانید.
یک سند مجموعه‌ای از فیلدها و مقادیر اشیاء است که فیلدها توصیف می‌کنند که مقدار شیء چه چیزی را نشان می‌دهد. در زیر یک مثال از یک سند آورده شده است.
```json
{
"firstname": "Eva",
"age": 44,
"id": "8c74a315-aebf-4a16-bb38-2430a9896ce5",
"_rid": "bHwDAPQz8s0BAAAAAAAAAA==",
"_self": "dbs/bHwDAA==/colls/bHwDAPQz8s0=/docs/bHwDAPQz8s0BAAAAAAAAAA==/",
"_etag": "\"00000000-0000-0000-9f95-010a691e01d7\"",
"_attachments": "attachments/",
"_ts": 1630544034
}
```
فیلدهای مورد توجه در این سند عبارتند از: `firstname`، `id` و `age`. سایر فیلدهایی که با زیرخط شروع می‌شوند توسط Cosmos DB تولید شده‌اند.
#### بررسی داده‌ها با شبیه‌ساز Cosmos DB
می‌توانید شبیه‌ساز را [برای ویندوز از اینجا](https://aka.ms/cosmosdb-emulator) دانلود و نصب کنید. برای گزینه‌های اجرای شبیه‌ساز در macOS و لینوکس به این [مستندات](https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator?tabs=ssl-netstd21#run-on-linux-macos) مراجعه کنید.
شبیه‌ساز یک پنجره مرورگر باز می‌کند که نمای Explorer به شما امکان می‌دهد اسناد را بررسی کنید.
![نمای Explorer شبیه‌ساز Cosmos DB](../../../../2-Working-With-Data/06-non-relational/images/cosmosdb-emulator-explorer.png)
اگر همراهی می‌کنید، روی "Start with Sample" کلیک کنید تا یک پایگاه داده نمونه به نام SampleDB ایجاد شود. اگر SampleDB را با کلیک روی فلش گسترش دهید، یک کانتینر به نام `Persons` پیدا خواهید کرد. کانتینر مجموعه‌ای از آیتم‌ها را نگه می‌دارد که اسناد درون کانتینر هستند. می‌توانید چهار سند جداگانه را زیر `Items` بررسی کنید.
![بررسی داده‌های نمونه در شبیه‌ساز Cosmos DB](../../../../2-Working-With-Data/06-non-relational/images/cosmosdb-emulator-persons.png)
#### جستجوی داده‌های سندی با شبیه‌ساز Cosmos DB
ما همچنین می‌توانیم داده‌های نمونه را با کلیک روی دکمه New SQL Query (دومین دکمه از سمت چپ) جستجو کنیم.
`SELECT * FROM c` تمام اسناد موجود در کانتینر را برمی‌گرداند. بیایید یک عبارت where اضافه کنیم و همه افرادی را که کمتر از ۴۰ سال دارند پیدا کنیم.
`SELECT * FROM c where c.age < 40`
![اجرای یک جستجوی SELECT روی داده‌های نمونه در شبیه‌ساز Cosmos DB برای یافتن اسنادی که مقدار فیلد age آن‌ها کمتر از ۴۰ است](../../../../2-Working-With-Data/06-non-relational/images/cosmosdb-emulator-persons-query.png)
این جستجو دو سند را برمی‌گرداند، توجه کنید که مقدار age برای هر سند کمتر از ۴۰ است.
#### JSON و اسناد
اگر با JavaScript Object Notation (JSON) آشنا باشید، متوجه خواهید شد که اسناد شبیه JSON هستند. یک فایل `PersonsData.json` در این دایرکتوری وجود دارد که می‌توانید آن را از طریق دکمه `Upload Item` به کانتینر Persons در شبیه‌ساز آپلود کنید.
در بیشتر موارد، APIهایی که داده‌های JSON را برمی‌گردانند می‌توانند مستقیماً به پایگاه داده‌های سندی منتقل و ذخیره شوند. در زیر یک سند دیگر آورده شده است که توییت‌هایی از حساب توییتر مایکروسافت را نشان می‌دهد که با استفاده از API توییتر بازیابی شده و سپس در Cosmos DB درج شده است.
```json
{
"created_at": "2021-08-31T19:03:01.000Z",
"id": "1432780985872142341",
"text": "Blank slate. Like this tweet if youve ever painted in Microsoft Paint before. https://t.co/cFeEs8eOPK",
"_rid": "dhAmAIUsA4oHAAAAAAAAAA==",
"_self": "dbs/dhAmAA==/colls/dhAmAIUsA4o=/docs/dhAmAIUsA4oHAAAAAAAAAA==/",
"_etag": "\"00000000-0000-0000-9f84-a0958ad901d7\"",
"_attachments": "attachments/",
"_ts": 1630537000
```
فیلدهای مورد توجه در این سند عبارتند از: `created_at`، `id` و `text`.
## 🚀 چالش
یک فایل `TwitterData.json` وجود دارد که می‌توانید آن را به پایگاه داده SampleDB آپلود کنید. توصیه می‌شود آن را به یک کانتینر جداگانه اضافه کنید. این کار را می‌توان با انجام مراحل زیر انجام داد:
1. کلیک روی دکمه New Container در بالا سمت راست
2. انتخاب پایگاه داده موجود (SampleDB) و ایجاد یک شناسه کانتینر برای کانتینر
3. تنظیم کلید پارتیشن به `/id`
4. کلیک روی OK (می‌توانید بقیه اطلاعات در این نما را نادیده بگیرید زیرا این یک مجموعه داده کوچک است که به‌صورت محلی روی دستگاه شما اجرا می‌شود)
5. باز کردن کانتینر جدید و آپلود فایل Twitter Data با دکمه `Upload Item`
سعی کنید چند جستجوی SELECT اجرا کنید تا اسنادی را پیدا کنید که در فیلد text آن‌ها کلمه Microsoft وجود دارد. نکته: سعی کنید از [کلمه کلیدی LIKE](https://docs.microsoft.com/en-us/azure/cosmos-db/sql/sql-query-keywords#using-like-with-the--wildcard-character) استفاده کنید.
## [پس‌از‌درس: آزمون کوتاه](https://ff-quizzes.netlify.app/en/ds/quiz/11)
## مرور و مطالعه شخصی
- برخی از قالب‌بندی‌ها و ویژگی‌های اضافی به این صفحه گسترده اضافه شده‌اند که این درس آن‌ها را پوشش نمی‌دهد. مایکروسافت دارای [کتابخانه بزرگی از مستندات و ویدیوها](https://support.microsoft.com/excel) درباره Excel است اگر علاقه‌مند به یادگیری بیشتر هستید.
- این مستندات معماری ویژگی‌های انواع مختلف داده‌های غیررابطه‌ای را توضیح می‌دهد: [داده‌های غیررابطه‌ای و NoSQL](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data)
- Cosmos DB یک پایگاه داده غیررابطه‌ای مبتنی بر ابر است که می‌تواند انواع مختلف NoSQL ذکر شده در این درس را نیز ذخیره کند. درباره این انواع در این [ماژول آموزشی Cosmos DB مایکروسافت](https://docs.microsoft.com/en-us/learn/paths/work-with-nosql-data-in-azure-cosmos-db/) بیشتر بیاموزید.
## تکلیف
[سود نوشابه](assignment.md)
---
**سلب مسئولیت**:
این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما برای دقت تلاش می‌کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادقتی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.