Cassandra তে Data Definition Language (DDL) একটি গুরুত্বপূর্ণ ভূমিকা পালন করে, কারণ এটি ডেটাবেসের কাঠামো তৈরি বা পরিবর্তন করার জন্য ব্যবহৃত হয়। DDL দিয়ে আপনি Keyspace, Tables, Indexes এবং অন্যান্য ডেটাবেস অবজেক্ট তৈরি, পরিবর্তন এবং ডিলিট করতে পারবেন। Cassandra তে DDL এর মাধ্যমে আপনি ডেটা মডেল তৈরি, কনফিগারেশন এবং স্কিমা ডিজাইন করতে পারবেন যা আপনার ডেটাবেসের কার্যকারিতা এবং পারফরম্যান্স নিশ্চিত করে।
1. Cassandra DDL এর মূল কমান্ডস
Cassandra তে DDL কমান্ডগুলো দিয়ে আমরা Keyspace, Table, Column এবং Index তৈরি, পরিবর্তন এবং মুছে ফেলতে পারি। নিচে Cassandra DDL কমান্ডগুলোর কিছু প্রধান ব্যবহার দেওয়া হলো:
1.1 Keyspace তৈরি করা
Keyspace হলো Cassandra ডেটাবেসের সবচেয়ে বড় ইউনিট, যেখানে টেবিলগুলো সংরক্ষিত থাকে। Keyspace তৈরি করার জন্য CREATE KEYSPACE কমান্ড ব্যবহার করা হয়।
CREATE KEYSPACE <keyspace_name>
WITH replication = {'class': '<replication_strategy>', 'replication_factor': <factor>};
এখানে replication_strategy হলো ডেটার কপি করার কৌশল এবং replication_factor হলো কপির সংখ্যা। Cassandra তে সাধারণত দুই ধরনের রিপ্লিকেশন কৌশল ব্যবহার হয়: SimpleStrategy (একটি ডেটা সেন্টারে ডেটা সংরক্ষণ) এবং NetworkTopologyStrategy (মাল্টি-ডেটা সেন্টারের মধ্যে ডেটা সংরক্ষণ)।
উদাহরণ:
CREATE KEYSPACE IF NOT EXISTS ecommerce
WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
এটি ecommerce নামে একটি Keyspace তৈরি করবে, যেখানে ডেটার ৩টি কপি তিনটি আলাদা নোডে রাখা হবে।
1.2 Table তৈরি করা
Cassandra তে Table তৈরি করার জন্য CREATE TABLE কমান্ড ব্যবহার করা হয়। একটি টেবিলের মধ্যে কলাম এবং ডেটা টাইপ নির্ধারণ করা হয়, এবং সঠিক Primary Key ও Clustering Key উল্লেখ করা হয়।
CREATE TABLE <keyspace_name>.<table_name> (
<column1> <datatype>,
<column2> <datatype>,
...
PRIMARY KEY (<partition_key>, <clustering_key>)
);
উদাহরণ:
CREATE TABLE IF NOT EXISTS ecommerce.users (
user_id UUID PRIMARY KEY,
username TEXT,
email TEXT,
age INT
);
এটি ecommerce Keyspace-এ users নামে একটি টেবিল তৈরি করবে, যেখানে user_id হলো Primary Key এবং বাকি কলামগুলোতে গ্রাহক সম্পর্কিত তথ্য থাকবে।
1.3 Column পরিবর্তন করা
Cassandra তে ALTER TABLE কমান্ড দিয়ে আপনি টেবিলের কলামগুলোর পরিবর্তন করতে পারেন, যেমন নতুন কলাম যোগ করা, কলামের নাম পরিবর্তন করা বা কলাম ডিলিট করা।
New Column Add:
ALTER TABLE <keyspace_name>.<table_name> ADD <column_name> <datatype>;উদাহরণ:
ALTER TABLE ecommerce.users ADD phone_number TEXT;এটি users টেবিলে একটি নতুন
phone_numberকলাম যোগ করবে।Rename Column:
ALTER TABLE <keyspace_name>.<table_name> RENAME <old_column_name> TO <new_column_name>;উদাহরণ:
ALTER TABLE ecommerce.users RENAME email TO user_email;এটি
emailকলামটির নাম পরিবর্তন করেuser_emailকরবে।Drop Column:
ALTER TABLE <keyspace_name>.<table_name> DROP <column_name>;উদাহরণ:
ALTER TABLE ecommerce.users DROP age;এটি
usersটেবিল থেকেageকলামটি মুছে ফেলবে।
1.4 Index তৈরি করা
Cassandra তে Index তৈরি করার জন্য CREATE INDEX কমান্ড ব্যবহার করা হয়। এটি ডেটার অনুসন্ধান এবং অ্যাক্সেসের গতি উন্নত করে। সাধারণত, কোনো কলাম বা ডেটা ফিল্ডের উপর ইনডেক্স তৈরি করা হয়, যার মাধ্যমে সিলেক্ট অপারেশন দ্রুত করা যায়।
CREATE INDEX <index_name> ON <keyspace_name>.<table_name> (<column_name>);
উদাহরণ:
CREATE INDEX ON ecommerce.users (email);
এটি users টেবিলের email কলামের উপর একটি ইনডেক্স তৈরি করবে, যাতে ওই কলামের মাধ্যমে দ্রুত অনুসন্ধান করা যায়।
1.5 Table বা Keyspace মুছে ফেলা
Cassandra তে DROP কমান্ড ব্যবহার করে একটি Keyspace বা Table মুছে ফেলা যায়।
Drop Table:
DROP TABLE <keyspace_name>.<table_name>;উদাহরণ:
DROP TABLE ecommerce.users;এটি users টেবিল মুছে ফেলবে।
Drop Keyspace:
DROP KEYSPACE <keyspace_name>;উদাহরণ:
DROP KEYSPACE ecommerce;এটি ecommerce Keyspace মুছে ফেলবে।
2. DDL কমান্ড এর ব্যবহার
Cassandra-তে DDL কমান্ডের মাধ্যমে ডেটাবেস কাঠামো তৈরি, পরিবর্তন এবং মুছে ফেলা হয়, যা একটি schema বা structure তৈরি করে এবং ডেটার স্টোরেজ ও অ্যাক্সেস নিশ্চিত করে।
- CREATE KEYSPACE: একটি নতুন Keyspace তৈরি করার জন্য ব্যবহৃত হয়।
- CREATE TABLE: একটি নতুন টেবিল তৈরি করার জন্য ব্যবহৃত হয়।
- ALTER TABLE: টেবিলের কলাম বা কাঠামো পরিবর্তন করার জন্য ব্যবহৃত হয়।
- DROP: টেবিল বা Keyspace মুছে ফেলার জন্য ব্যবহৃত হয়।
- CREATE INDEX: টেবিলের কোনো কলামে ইনডেক্স তৈরি করার জন্য ব্যবহৃত হয়।
3. Cassandra DDL এর Limitations
Cassandra-তে DDL কমান্ডের কিছু সীমাবদ্ধতা রয়েছে, যা রিলেশনাল ডেটাবেসে পাওয়া যায় না:
- JOIN অপারেশন নেই: Cassandra তে JOIN অপারেশন সমর্থিত নয়, তাই আপনি একই টাইপের ডেটা একাধিক টেবিলের মধ্যে সংযুক্ত করতে পারবেন না।
- পরিবর্তন সীমাবদ্ধতা: Cassandra তে ডেটাবেস কাঠামো বা schema পরিবর্তন করা তুলনামূলকভাবে কষ্টসাধ্য হতে পারে, যেমন টেবিলের কলাম পরিবর্তন করার সময় অ্যাপ্লিকেশনে সমস্যা সৃষ্টি হতে পারে।
- ACID সমর্থন নেই: Cassandra তে ACID ট্রানজেকশন সমর্থিত নয়, বরং এটি BASE মডেল ব্যবহার করে, যেখানে eventual consistency ব্যবহৃত হয়।
সারাংশ
Data Definition Language (DDL) Cassandra তে ডেটাবেস কাঠামো তৈরি, পরিবর্তন এবং মুছে ফেলার জন্য ব্যবহৃত হয়। DDL কমান্ডের মাধ্যমে Keyspace, Table, Index তৈরি করা এবং মুছে ফেলা হয়, যা ডেটাবেস সিস্টেমের কার্যকারিতা এবং স্কেলেবিলিটি নিশ্চিত করে। Cassandra তে DDL এর মাধ্যমে ডেটার কাঠামো পরিবর্তন করা, ডেটা মডেল ডিজাইন করা এবং ডিস্ট্রিবিউটেড সিস্টেমে দ্রুত অ্যাক্সেস ও পারফরম্যান্স নিশ্চিত করা সম্ভব।
Read more