Apache Cassandra হলো একটি শক্তিশালী, স্কেলেবল এবং ডিস্ট্রিবিউটেড NoSQL ডেটাবেস যা বড় পরিমাণ ডেটা প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়। Cassandra তে ডেটা সংরক্ষণ এবং সংগঠনের জন্য দুটি প্রধান উপাদান Keyspace এবং Table ব্যবহার করা হয়। এই দুটি উপাদান ক্যাসান্দ্রায় ডেটা মডেলিং এবং সংরক্ষণের ভিত্তি তৈরি করে।
1. Keyspace
Keyspace হলো Cassandra ডেটাবেসের একটি যুক্তিবদ্ধ ইউনিট বা ক্যাটালগ যেখানে একটি বা একাধিক টেবিল সংরক্ষিত থাকে। এটি রিলেশনাল ডেটাবেসের database এর মতো কাজ করে। Keyspace তৈরি করার মাধ্যমে Cassandra সিস্টেমে ডেটা সঞ্চয় এবং ব্যবস্থাপনা শুরু করা হয়।
Keyspace এর বৈশিষ্ট্য:
- Replication Factor: Keyspace তৈরি করার সময় আপনি replication factor নির্ধারণ করতে পারেন, যা সিদ্ধান্ত নেবে আপনার ডেটার কপি কতটি নোডে থাকবে। এটি ডেটার উচ্চলভ্যতা (availability) নিশ্চিত করে।
- Durable Writes: এটি নির্ধারণ করে যে, ডেটার লেখা কার্যক্রম কতটা স্থায়ী হবে।
- Strategy: Keyspace তৈরি করার সময় আপনি রিপ্লিকেশন স্ট্র্যাটেজি নির্ধারণ করতে পারেন, যেমন SimpleStrategy (একটি সিঙ্গেল ডেটা সেন্টারে ডেটা সঞ্চয় করা) এবং NetworkTopologyStrategy (মাল্টি-ডেটা সেন্টারের মধ্যে ডেটা সঞ্চয় করা)।
Keyspace তৈরি করার Syntax:
CREATE KEYSPACE IF NOT EXISTS <keyspace_name>
WITH replication = {'class': '<replication_strategy>', 'replication_factor': <factor>};
উদাহরণ:
CREATE KEYSPACE IF NOT EXISTS test_keyspace
WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
এই কমান্ডটি একটি test_keyspace তৈরি করবে যেখানে ডেটার তিনটি কপি তিনটি আলাদা নোডে সংরক্ষিত থাকবে।
2. Table
Table হলো Cassandra-তে ডেটা সংরক্ষণের জন্য ব্যবহৃত মূল কাঠামো। এটি রিলেশনাল ডেটাবেসের টেবিলের মতো কাজ করে, তবে Cassandra তে টেবিল সাধারণত column family হিসাবে পরিচিত।
Table এর বৈশিষ্ট্য:
- Primary Key: প্রতিটি টেবিলের একটি primary key থাকে, যা টেবিলের মধ্যে ডেটা সনাক্ত করতে ব্যবহৃত হয়। Primary Key দুটি অংশে বিভক্ত হয়:
- Partition Key: ডেটার কোন নোডে রাখা হবে তা নির্ধারণ করে।
- Clustering Columns: একাধিক রেকর্ডের মধ্যে ক্রম (ordering) নির্ধারণ করে।
- Columns: Cassandra-তে টেবিলের প্রতিটি কলাম নির্দিষ্ট থাকে না এবং এটি dynamic columns হতে পারে, অর্থাৎ, আপনি টেবিলের মধ্যে নতুন কলাম অ্যাড করতে পারেন যেকোনো সময়।
Table তৈরি করার Syntax:
CREATE TABLE IF NOT EXISTS <keyspace_name>.<table_name> (
<column1_name> <column1_datatype>,
<column2_name> <column2_datatype>,
...
PRIMARY KEY (<partition_key>, <clustering_column>);
);
উদাহরণ:
CREATE TABLE IF NOT EXISTS test_keyspace.users (
user_id UUID PRIMARY KEY,
username TEXT,
email TEXT,
age INT
);
এই কমান্ডটি test_keyspace এ একটি users টেবিল তৈরি করবে, যার মধ্যে user_id একটি ইউনিক আইডেন্টিফায়ার হিসেবে ব্যবহৃত হবে এবং এটি primary key হিসেবে কাজ করবে।
3. Keyspace এবং Table তৈরি উদাহরণ
ধরা যাক, আমরা একটি E-commerce অ্যাপ্লিকেশনের জন্য Keyspace এবং Table তৈরি করতে চাই। আমাদের একটি Keyspace তৈরি করতে হবে যার মধ্যে ডেটা রিপ্লিকেশন স্ট্র্যাটেজি নির্ধারণ করা থাকবে। তারপর, একটি users এবং orders টেবিল তৈরি করব।
3.1 Keyspace তৈরি করা
CREATE KEYSPACE IF NOT EXISTS ecommerce
WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
এই কমান্ডটি ecommerce নামে একটি Keyspace তৈরি করবে, যেখানে ডেটার ৩টি কপি থাকবে।
3.2 users Table তৈরি করা
CREATE TABLE IF NOT EXISTS ecommerce.users (
user_id UUID PRIMARY KEY,
username TEXT,
email TEXT,
age INT
);
এটি users নামে একটি টেবিল তৈরি করবে, যেখানে user_id হবে primary key এবং বাকি ফিল্ডগুলিতে গ্রাহকের তথ্য থাকবে।
3.3 orders Table তৈরি করা
CREATE TABLE IF NOT EXISTS ecommerce.orders (
order_id UUID PRIMARY KEY,
user_id UUID,
product_id UUID,
quantity INT,
order_date TIMESTAMP
);
এটি orders নামে একটি টেবিল তৈরি করবে, যেখানে order_id হবে primary key, এবং এটি গ্রাহকের user_id, পণ্যের product_id, পণ্যের পরিমাণ quantity, এবং অর্ডারের তারিখ order_date সংরক্ষণ করবে।
4. Table-এ ডেটা ইনসার্ট করা
একবার টেবিল তৈরি হলে, আপনি সেখানে ডেটা ইনসার্ট করতে পারবেন। Cassandra তে ডেটা ইনসার্ট করার জন্য INSERT INTO কমান্ড ব্যবহার করা হয়।
INSERT INTO ecommerce.users (user_id, username, email, age)
VALUES (uuid(), 'john_doe', 'john.doe@example.com', 28);
এই কমান্ডটি users টেবিলে একটি নতুন রেকর্ড ইনসার্ট করবে, যেখানে user_id একটি ইউনিক UUID হবে, username, email, এবং age প্রাথমিকভাবে নির্ধারিত মান থাকবে।
5. Table থেকে ডেটা নির্বাচন (SELECT)
Cassandra-তে SELECT কমান্ড ব্যবহার করে টেবিল থেকে ডেটা নির্বাচন করা হয়।
SELECT * FROM ecommerce.users;
এই কমান্ডটি users টেবিল থেকে সমস্ত ডেটা নির্বাচন করবে।
সারাংশ
Keyspace এবং Table হল Cassandra তে ডেটা সংরক্ষণের জন্য অত্যন্ত গুরুত্বপূর্ণ উপাদান। Keyspace হলো Cassandra এর ডেটাবেস, যেখানে একাধিক টেবিল থাকতে পারে, এবং Table হলো ডেটা সংরক্ষণের কাঠামো। Cassandra তে Keyspace তৈরি করার সময় replication factor এবং replication strategy নির্ধারণ করা হয়, যা ডেটার উচ্চলভ্যতা এবং পারফরম্যান্স নিশ্চিত করে। Table তৈরি করার সময় primary key এবং columns নির্ধারণ করা হয়, যা ডেটা সঠিকভাবে সংরক্ষণ এবং পরিচালনা করতে সাহায্য করে।
Cassandra এর এই দুটি উপাদান, Keyspace এবং Table, ব্যবহার করে আপনি ডিস্ট্রিবিউটেড ডেটাবেস সিস্টেমের মধ্যে ডেটা সংরক্ষণ এবং পরিচালনা করতে পারবেন, যা স্কেলেবল এবং হাই পারফরম্যান্স ডেটা সিস্টেম নিশ্চিত করে।
Read more