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/bn/2-Working-With-Data/06-non-relational/README.md

158 lines
26 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-06T07:07:51+00:00",
"source_file": "2-Working-With-Data/06-non-relational/README.md",
"language_code": "bn"
}
-->
# ডেটা নিয়ে কাজ করা: নন-রিলেশনাল ডেটা
|![ [(@sketchthedocs)](https://sketchthedocs.dev) এর স্কেচনোট ](../../sketchnotes/06-NoSQL.png)|
|:---:|
|নোএসকিউএল ডেটা নিয়ে কাজ করা - _[@nitya](https://twitter.com/nitya) এর স্কেচনোট_ |
## [পূর্ব-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ds/quiz/10)
ডেটা শুধুমাত্র রিলেশনাল ডেটাবেসে সীমাবদ্ধ নয়। এই পাঠে নন-রিলেশনাল ডেটার উপর ফোকাস করা হয়েছে এবং স্প্রেডশিট ও নোএসকিউএল-এর মৌলিক বিষয়গুলো আলোচনা করা হবে।
## স্প্রেডশিট
স্প্রেডশিট ডেটা সংরক্ষণ এবং বিশ্লেষণের একটি জনপ্রিয় মাধ্যম কারণ এটি সেটআপ এবং শুরু করার জন্য কম কাজের প্রয়োজন হয়। এই পাঠে আপনি একটি স্প্রেডশিটের মৌলিক উপাদান, পাশাপাশি ফর্মুলা এবং ফাংশন সম্পর্কে শিখবেন। উদাহরণগুলো Microsoft Excel দিয়ে দেখানো হবে, তবে অন্যান্য স্প্রেডশিট সফটওয়্যারের সাথে তুলনা করলে বেশিরভাগ অংশ এবং বিষয়ের নাম ও ধাপগুলো একই রকম হবে।
![Microsoft Excel-এর একটি খালি ওয়ার্কবুক যেখানে দুটি ওয়ার্কশিট রয়েছে](../../../../2-Working-With-Data/06-non-relational/images/parts-of-spreadsheet.png)
স্প্রেডশিট একটি ফাইল এবং এটি কম্পিউটার, ডিভাইস বা ক্লাউড-ভিত্তিক ফাইল সিস্টেমে অ্যাক্সেসযোগ্য হবে। সফটওয়্যারটি ব্রাউজার-ভিত্তিক হতে পারে অথবা একটি অ্যাপ্লিকেশন যা কম্পিউটারে ইনস্টল করতে হবে বা অ্যাপ হিসেবে ডাউনলোড করতে হবে। Excel-এ এই ফাইলগুলোকে **ওয়ার্কবুক** বলা হয় এবং এই পাঠের বাকি অংশে এই শব্দটি ব্যবহার করা হবে।
একটি ওয়ার্কবুকের মধ্যে এক বা একাধিক **ওয়ার্কশিট** থাকে, যেখানে প্রতিটি ওয়ার্কশিট ট্যাব দ্বারা লেবেল করা হয়। একটি ওয়ার্কশিটের মধ্যে রয়েছে আয়তক্ষেত্রাকার **সেল**, যা প্রকৃত ডেটা ধারণ করে। একটি সেল হলো একটি সারি এবং কলামের ছেদবিন্দু, যেখানে কলামগুলো বর্ণমালার অক্ষর দিয়ে এবং সারিগুলো সংখ্যাসূচকভাবে লেবেল করা হয়। কিছু স্প্রেডশিটে সেলের ডেটা বর্ণনা করার জন্য প্রথম কয়েকটি সারিতে হেডার থাকে।
Excel ওয়ার্কবুকের এই মৌলিক উপাদানগুলো দিয়ে, আমরা [Microsoft Templates](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) এ তালিকাভুক্ত।
## নোএসকিউএল
নোএসকিউএল হলো নন-রিলেশনাল ডেটা সংরক্ষণের বিভিন্ন পদ্ধতির জন্য একটি ছাতার শব্দ এবং এটি "নন-এসকিউএল", "নন-রিলেশনাল" বা "শুধু এসকিউএল নয়" হিসেবে ব্যাখ্যা করা যেতে পারে। এই ধরনের ডেটাবেস সিস্টেমগুলোকে চারটি ভাগে শ্রেণীবদ্ধ করা যায়।
![একটি কী-ভ্যালু ডেটা স্টোরের গ্রাফিকাল উপস্থাপনা যেখানে ৪টি অনন্য সংখ্যাসূচক কী রয়েছে যা ৪টি বিভিন্ন মানের সাথে যুক্ত](../../../../2-Working-With-Data/06-non-relational/images/kv-db.png)
> [Michał Białecki Blog](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)
> [Microsoft](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 ডেটাবেস "শুধু এসকিউএল নয়" সংজ্ঞার সাথে মিলে যায়, যেখানে Cosmos DB-এর ডকুমেন্ট ডেটাবেস SQL ব্যবহার করে ডেটা অনুসন্ধান করে। SQL-এর উপর [পূর্ববর্তী পাঠ](../05-relational-databases/README.md) ভাষার মৌলিক বিষয়গুলো কভার করে, এবং আমরা এখানে ডকুমেন্ট ডেটাবেসে কিছু একই অনুসন্ধান প্রয়োগ করতে পারব। আমরা 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 এমুলেটর দিয়ে ডেটা অন্বেষণ করা
আপনি [Windows-এর জন্য এখানে](https://aka.ms/cosmosdb-emulator) এমুলেটর ডাউনলোড এবং ইনস্টল করতে পারেন। macOS এবং Linux-এর জন্য এমুলেটর চালানোর বিকল্প সম্পর্কে এই [ডকুমেন্টেশন](https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator?tabs=ssl-netstd21#run-on-linux-macos) দেখুন।
এমুলেটর একটি ব্রাউজার উইন্ডো চালু করে, যেখানে Explorer ভিউ আপনাকে ডকুমেন্টগুলো অন্বেষণ করতে দেয়।
![Cosmos DB এমুলেটরের Explorer ভিউ](../../../../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 এমুলেটর দিয়ে ডকুমেন্ট ডেটা অনুসন্ধান করা
আমরা নতুন SQL Query বোতামে ক্লিক করে (বাম থেকে দ্বিতীয় বোতাম) নমুনা ডেটা অনুসন্ধান করতে পারি।
`SELECT * FROM c` কন্টেইনারের সমস্ত ডকুমেন্ট ফেরত দেয়। চলুন একটি where clause যোগ করি এবং বছরের কম বয়সীদের খুঁজে বের করি।
`SELECT * FROM c where c.age < 40`
![Cosmos DB এমুলেটরে নমুনা ডেটার উপর একটি SELECT অনুসন্ধান চালানো, যেখানে 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 কন্টেইনারে আপলোড করতে পারেন।
বেশিরভাগ ক্ষেত্রে, JSON ডেটা ফেরত দেয় এমন API সরাসরি ডকুমেন্ট ডেটাবেসে স্থানান্তরিত এবং সংরক্ষণ করা যেতে পারে। নিচে আরেকটি ডকুমেন্ট রয়েছে, এটি Microsoft Twitter অ্যাকাউন্টের টুইটগুলো উপস্থাপন করে যা Twitter 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. উপরের ডানদিকে নতুন কন্টেইনার বোতামে ক্লিক করা
1. বিদ্যমান ডেটাবেস (SampleDB) নির্বাচন করা এবং কন্টেইনারের জন্য একটি id তৈরি করা
1. পার্টিশন কী `/id` সেট করা
1. OK ক্লিক করা (আপনার মেশিনে স্থানীয়ভাবে চলমান এই ছোট ডেটাসেটের জন্য এই ভিউতে বাকি তথ্য উপেক্ষা করতে পারেন)
1. আপনার নতুন কন্টেইনার খুলুন এবং `Upload Item` বোতামের মাধ্যমে Twitter Data ফাইল আপলোড করুন
কিছু 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)
## পর্যালোচনা ও স্ব-অধ্যয়ন
- এই স্প্রেডশিটে কিছু অতিরিক্ত ফরম্যাটিং এবং বৈশিষ্ট্য যোগ করা হয়েছে যা এই পাঠে আলোচনা করা হয়নি। Excel সম্পর্কে আরও জানতে আগ্রহী হলে Microsoft-এর একটি [বড় ডকুমেন্টেশন এবং ভিডিও লাইব্রেরি](https://support.microsoft.com/excel) রয়েছে।
- নন-রিলেশনাল ডেটার বিভিন্ন ধরনের বৈশিষ্ট্য সম্পর্কে বিস্তারিত জানতে এই স্থাপত্য ডকুমেন্টেশনটি দেখুন: [নন-রিলেশনাল ডেটা এবং নোএসকিউএল](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data)
- Cosmos DB একটি ক্লাউড-ভিত্তিক নন-রিলেশনাল ডেটাবেস যা এই পাঠে উল্লেখিত বিভিন্ন নোএসকিউএল ধরনের ডেটা সংরক্ষণ করতে পারে। এই [Cosmos DB Microsoft Learn Module](https://docs.microsoft.com/en-us/learn/paths/work-with-nosql-data-in-azure-cosmos-db/) এ এই ধরনের সম্পর্কে আরও জানুন।
## অ্যাসাইনমেন্ট
[Soda Profits](assignment.md)
---
**অস্বীকৃতি**:
এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না।