Apache Cassandra একটি ডিস্ট্রিবিউটেড NoSQL ডেটাবেস যা ডেটা স্টোরেজ এবং অ্যাক্সেসের জন্য বিশেষভাবে ডিজাইন করা হয়েছে। ক্যাসান্দ্রার মধ্যে ডেটা সঞ্চয় এবং সংগঠনের জন্য Primary Key এবং Clustering Key ব্যবহার করা হয়। এই দুটি কী ডেটার স্কেলেবিলিটি, অ্যাক্সেস টাইম এবং কার্যকারিতা নিশ্চিত করার জন্য অত্যন্ত গুরুত্বপূর্ণ।
1. Primary Key (প্রাইমারি কী)
Primary Key হলো ক্যাসান্দ্রার একটি মৌলিক ধারণা, যা প্রতিটি রেকর্ডকে ইউনিকভাবে চিহ্নিত করে। এটি এক বা একাধিক কলামের সমন্বয়ে গঠিত হতে পারে এবং প্রতিটি রেকর্ডের জন্য একটি অদ্বিতীয় মান প্রদান করে।
Primary Key এর কাজ:
- ইউনিক আইডেন্টিফিকেশন: Primary Key নিশ্চিত করে যে প্রতিটি রেকর্ডের জন্য একটি ইউনিক কী রয়েছে। ক্যাসান্দ্রার মধ্যে ডেটার কোনো রেকর্ড দ্বৈত বা একই কী হতে পারে না।
- ডেটার পার্টিশনিং: Primary Key-তে একটি অংশ Partition Key হিসেবে ব্যবহৃত হয়, যা ডেটাকে বিভিন্ন নোডে ভাগ করতে সহায়তা করে। এটি ডেটার ফিজিক্যাল লোকেশন নির্ধারণ করে।
Primary Key এর গঠন:
- Partition Key: Primary Key-এর প্রথম অংশ। এটি ডেটাকে ক্লাস্টারের মধ্যে বিভিন্ন নোডে বিভক্ত করতে সাহায্য করে। Partition Key এর মাধ্যমে Cassandra ডেটা কিভাবে এবং কোথায় সঞ্চিত হবে তা নির্ধারণ করে।
- Clustering Key: যদি Primary Key-এর মধ্যে একাধিক কলাম থাকে, তবে এর দ্বিতীয় অংশ Clustering Key হিসেবে কাজ করে। Clustering Key ডেটাকে একটি পার্টিশনে সাজাতে সাহায্য করে, যাতে ডেটার নির্দিষ্ট আউটপুট নির্ধারণ করা যায়।
Primary Key এর উদাহরণ:
ধরা যাক, আমরা একটি users টেবিল তৈরি করছি, যেখানে user_id এবং region কলাম থাকবে:
CREATE TABLE users (
user_id UUID,
region TEXT,
name TEXT,
age INT,
PRIMARY KEY (user_id, region)
);
এখানে:
user_idহলো Partition Key, যা ডেটাকে ক্লাস্টারের নোডে ভাগ করতে ব্যবহৃত হয়।regionহলো Clustering Key, যা একইuser_idএর অধীনে ডেটাকে সজ্জিত (sort) করতে ব্যবহৃত হয়।
2. Clustering Key (ক্লাস্টারিং কী)
Clustering Key হলো সেই অংশ যা ডেটাকে একটি নির্দিষ্ট পার্টিশনের মধ্যে সাজানোর (sort) কাজ করে। যখন Primary Key-তে একাধিক কলাম থাকে, তখন তাদের মধ্যে Clustering Key ডেটার সজ্জন এবং অর্ডারিং নিয়ন্ত্রণ করে। এটি ডেটার সিস্টেমের মধ্যে সঠিকভাবে অ্যাক্সেস নিশ্চিত করতে ব্যবহৃত হয়।
Clustering Key এর কাজ:
- ডেটা সজ্জন: Clustering Key নিশ্চিত করে যে একই Partition Key এর অধীনে ডেটা কীভাবে সাজানো হবে। এটি সাধারণত অর্ডারিংয়ের জন্য ব্যবহার হয়, যেমন ক্রম অনুযায়ী ডেটা সাজানো।
- রেঞ্জ কোয়েরি: Clustering Key ডেটার মধ্যে রেঞ্জ কোয়েরি চালানোর জন্য সুবিধা প্রদান করে। অর্থাৎ, একটি নির্দিষ্ট পরিসরে ডেটা খুঁজে বের করা সহজ হয়ে ওঠে।
Clustering Key এর উদাহরণ:
ধরা যাক, users টেবিলে user_id এবং region এর পাশাপাশি created_at কলাম রয়েছে, এবং আমরা চাই user_id এবং region এর ভিত্তিতে ডেটা সাজানো হোক, তবে created_at অনুসারে ক্রমবদ্ধভাবে সাজানো হোক:
CREATE TABLE users (
user_id UUID,
region TEXT,
created_at TIMESTAMP,
name TEXT,
age INT,
PRIMARY KEY (user_id, region, created_at)
);
এখানে:
user_idএবংregionহলো Partition Key।created_atহলো Clustering Key, যা একইuser_idএবংregionএর অধীনে ডেটাকে সময় অনুসারে সাজাবে।
Clustering Key এর কার্যকারিতা:
- ডেটার সজ্জন:
created_atঅনুযায়ী ডেটা সাজানো হবে, যাতে আপনি সহজেই জানেন যে কোন গ্রাহক কখন সাইন আপ করেছে বা সর্বশেষ কবে তাদের তথ্য আপডেট হয়েছে। - রেঞ্জ কোয়েরি: আপনি যদি একটি নির্দিষ্ট সময়ের মধ্যে ডেটা খুঁজে পেতে চান, যেমন "সর্বশেষ ৩০ দিনের ডেটা", তবে Clustering Key এটি সহজে করতে সহায়তা করবে।
3. Primary Key এবং Clustering Key এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Primary Key | Clustering Key |
|---|---|---|
| বৈশিষ্ট্য | ডেটাকে ইউনিকভাবে চিহ্নিত করে। | ডেটাকে একটি পার্টিশনে সাজানোর জন্য ব্যবহৃত হয়। |
| কাজ | ডেটাকে বিভিন্ন নোডে ভাগ করা এবং সংরক্ষণ করা। | একই Partition Key এর অধীনে ডেটাকে সাজানো। |
| উদাহরণ | user_id | region, created_at |
| সাজানোর প্রভাব | পার্টিশন তৈরি এবং ডেটা বিভাজন। | ডেটার সজ্জন এবং অর্ডারিং। |
4. ক্যাসান্দ্রায় Primary Key এবং Clustering Key এর ব্যবহারের সুবিধা
- ডেটার স্কেলিং: Partition Key ব্যবহার করে Cassandra ডেটাকে সমানভাবে বিভিন্ন নোডে বিতরণ করে, যা সিস্টেমের স্কেল এবং পারফরম্যান্স নিশ্চিত করে।
- ডেটা অ্যাক্সেসের গতি: Clustering Key ডেটাকে দ্রুত অ্যাক্সেসযোগ্য করে তোলে, কারণ এটি ডেটাকে একটি নির্দিষ্ট অর্ডারে সাজায়।
- রেঞ্জ কোয়েরি: Clustering Key দিয়ে সিস্টেমের মধ্যে দ্রুত রেঞ্জ কোয়েরি চালানো সম্ভব হয়, যা অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করে।
সারাংশ
Primary Key এবং Clustering Key হলো ক্যাসান্দ্রার গুরুত্বপূর্ণ উপাদান যা ডেটার সঞ্চয়, সংগঠন এবং অ্যাক্সেস পরিচালনা করে। Primary Key ডেটাকে ইউনিকভাবে চিহ্নিত করে এবং Partition Key হিসেবে কাজ করে, যখন Clustering Key ডেটাকে একটি পার্টিশনের মধ্যে সাজায় এবং সঠিকভাবে অ্যাক্সেস করতে সহায়তা করে। এই দুটি কীগুলির সঠিক ব্যবহার ক্যাসান্দ্রার স্কেলেবিলিটি, পারফরম্যান্স এবং অ্যাভেইলেবিলিটি নিশ্চিত করতে সাহায্য করে।
Read more