Cassandra Query Language (CQL) হলো Cassandra ডেটাবেসে ডেটা পরিচালনার জন্য ব্যবহৃত একটি উচ্চ স্তরের ভাষা, যা SQL-এর মতোই দেখতে, কিন্তু NoSQL ডেটাবেসের জন্য উপযুক্তভাবে কাস্টমাইজড। CQL এর মাধ্যমে আপনি ডেটাবেসে ডেটা সন্নিবেশ, নির্বাচন, আপডেট এবং মুছতে পারেন, সেই সাথে টেবিল তৈরি, ড্রপ, এবং স্কিমা পরিবর্তনও করতে পারেন।
1. CQL Syntax Overview
CQL-এর সিনট্যাক্স SQL-এর মতোই, তবে কিছু পরিবর্তন রয়েছে কারণ Cassandra একটি NoSQL ডেটাবেস, যেখানে সম্পর্কিত ডেটা বা জটিল JOIN এবং ট্রানজেকশনের মতো ফিচারগুলো নেই। CQL এর সিনট্যাক্স সহজ এবং পরিষ্কারভাবে ডেটাবেসের সাথে কাজ করার জন্য ডিজাইন করা হয়েছে।
সাধারণ সিনট্যাক্স:
- Keywords:
CREATE,SELECT,INSERT,UPDATE,DELETE,ALTER,DROP, ইত্যাদি। - Identifiers: ডেটাবেসের নাম, টেবিলের নাম, কলামের নাম ইত্যাদি।
- Literals: স্ট্রিং, সংখ্যার মান, ডেটার টাইপ।
2. CQL এর সাধারণ কমান্ড এবং উদাহরণ
2.1 CREATE KEYSPACE
CREATE KEYSPACE কমান্ডটি একটি নতুন কীস্পেস তৈরি করতে ব্যবহৃত হয়। কীস্পেস হল একটি ক্যাসান্দ্রা ডেটাবেসের সংকলন, যা টেবিল এবং অন্যান্য অবজেক্ট ধারণ করে।
CREATE KEYSPACE my_keyspace
WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
- Replication Factor: এটি নির্ধারণ করে যে কতটি নোডে ডেটার কপি থাকবে। এই উদাহরণে ডেটা তিনটি নোডে রিপ্লিকেট হবে।
2.2 USE KEYSPACE
একটি কীস্পেস নির্বাচন করতে USE কমান্ড ব্যবহার করা হয়:
USE my_keyspace;
2.3 CREATE TABLE
CQL-এ টেবিল তৈরি করতে CREATE TABLE কমান্ড ব্যবহার করা হয়। এখানে আপনি টেবিলের নাম এবং কলামগুলি সংজ্ঞায়িত করেন।
CREATE TABLE users (
user_id UUID PRIMARY KEY,
username text,
email text,
created_at timestamp
);
- PRIMARY KEY:
user_idকলামকে প্রাথমিক কী হিসেবে চিহ্নিত করা হয়েছে, যা প্রতিটি রেকর্ডের জন্য ইউনিক আইডেন্টিফায়ার হিসেবে কাজ করবে।
2.4 INSERT INTO
ডেটা সন্নিবেশ করতে INSERT INTO কমান্ড ব্যবহার করা হয়। এতে আপনি নির্দিষ্ট কলামে ডেটা প্রদান করেন।
INSERT INTO users (user_id, username, email, created_at)
VALUES (uuid(), 'john_doe', 'john@example.com', toTimestamp(now()));
- uuid(): এটি একটি ইউনিক ইউজার আইডি জেনারেট করে।
- toTimestamp(now()): বর্তমান সময়ের টাইমস্ট্যাম্প প্রদান করে।
2.5 SELECT
SELECT কমান্ড ডেটা পড়তে ব্যবহৃত হয়। আপনি একাধিক কলাম বা টেবিল থেকে ডেটা নির্বাচন করতে পারেন।
SELECT * FROM users;
- এই কমান্ডটি users টেবিল থেকে সব ডেটা নির্বাচন করবে।
2.6 UPDATE
UPDATE কমান্ড একটি বিদ্যমান রেকর্ড আপডেট করতে ব্যবহৃত হয়।
UPDATE users
SET email = 'new_email@example.com'
WHERE user_id = 123e4567-e89b-12d3-a456-426614174000;
- এখানে,
user_idএর উপর ভিত্তি করে নির্দিষ্ট রেকর্ডের email কলাম আপডেট করা হচ্ছে।
2.7 DELETE
DELETE কমান্ড একটি রেকর্ড মুছতে ব্যবহৃত হয়।
DELETE FROM users
WHERE user_id = 123e4567-e89b-12d3-a456-426614174000;
- এটি একটি নির্দিষ্ট
user_idএর রেকর্ড মুছে ফেলবে।
2.8 DROP TABLE
DROP TABLE কমান্ড একটি টেবিল মুছতে ব্যবহৃত হয়।
DROP TABLE users;
- এটি
usersটেবিলটি পুরোপুরি মুছে ফেলবে।
2.9 ALTER TABLE
ALTER TABLE কমান্ড একটি টেবিলের কাঠামো পরিবর্তন করতে ব্যবহৃত হয়, যেমন কলাম যোগ বা অপসারণ করা।
ALTER TABLE users ADD phone_number text;
- এটি users টেবিলে
phone_numberনামক একটি নতুন কলাম যোগ করবে।
3. CQL এর কিছু বিশেষ বৈশিষ্ট্য
3.1 No JOIN Support
Cassandra NoSQL ডেটাবেস হওয়ায় এতে SQL-এর মতো JOIN অপারেশন সমর্থিত নয়। CQL এ JOIN অপারেশন কনফিগার করা সম্ভব নয়, এবং এটি সম্পর্কিত ডেটা মডেলিং এর জন্য সম্পূর্ণ ভিন্ন ধারণা নিয়ে আসে। সম্পর্কিত ডেটা অ্যাক্সেসের জন্য ডেনরমালাইজেশন বা Denormalization এবং Composite Keys ব্যবহার করা হয়।
3.2 No ACID Transactions
Cassandra সিস্টেমটি ACID (Atomicity, Consistency, Isolation, Durability) ট্রানজেকশন সমর্থন করে না। এটি BASE (Basically Available, Soft state, Eventually consistent) মডেল অনুসরণ করে, যা পারফরম্যান্স এবং স্কেলেবিলিটি নিশ্চিত করে, তবে একেবারে তাত্ক্ষণিক কনসিস্টেন্সি নয়।
3.3 Data Modeling
Cassandra-এর data modeling এর একটি বিশেষ দিক হলো Primary Key এবং Clustering Column ব্যবহার করে ডেটা শূন্য থেকে তৈরি করা হয়। এতে ডেটার পারফরম্যান্স এবং অ্যাক্সেস টাইম দ্রুত হয়।
4. CQL Best Practices
- ডেটা মডেলিং: Cassandra-এ ডেটা মডেলিং করা SQL-এ অনেকটা ভিন্ন। এখানে ডেনরমালাইজেশন এবং কম্পোজিট কী ব্যবহার করতে হয় যাতে দ্রুত ডেটা অ্যাক্সেস সম্ভব হয়।
- প্রাথমিক কী (Primary Key) নির্বাচন: ডেটার অ্যাক্সেস দ্রুত করতে প্রাথমিক কী এবং ক্লাস্টারিং কলামগুলি সঠিকভাবে নির্বাচন করুন।
- ব্যাচ অপারেশন (Batch Operations): Cassandra তে ব্যাচ অপারেশন ব্যবহার করা যেতে পারে, তবে খুব বেশি ব্যাচ অপারেশন করলে সিস্টেমের পারফরম্যান্স কমে যেতে পারে।
- Consistency Levels: Cassandra তে কনসিস্টেন্সি লেভেল কনফিগার করা যেতে পারে। আপনাকে ডেটার কনসিস্টেন্সি এবং পারফরম্যান্সের মধ্যে ব্যালান্স বজায় রাখতে হবে।
সারাংশ
Cassandra Query Language (CQL) হল Cassandra ডেটাবেসে ডেটা পরিচালনা করার জন্য একটি উচ্চ স্তরের ভাষা, যা SQL-এর মতো হলেও কিছু পরিবর্তন রয়েছে। CQL এর মাধ্যমে টেবিল তৈরি, ডেটা ইনসার্ট, আপডেট, নির্বাচন এবং মুছতে পারেন। Cassandra সিস্টেমে ডেটা মডেলিং, প্রাইমারি কী, ক্লাস্টারিং কলাম এবং ডেনরমালাইজেশন গুরুত্বপূর্ণ ভূমিকা পালন করে। Cassandra-এ No JOIN এবং ACID ট্রানজেকশন এর সমর্থন না থাকলেও এটি স্কেলেবিলিটি এবং উচ্চ পারফরম্যান্স নিশ্চিত করতে ব্যবহৃত হয়। CQL এর সাহায্যে Cassandra ডেটাবেসের সাথে কার্যকরভাবে কাজ করা সম্ভব।
Read more