Cassandra Query Language (CQL) হল Apache Cassandra ডেটাবেসের সাথে যোগাযোগ এবং ডেটা পরিচালনা করার জন্য ব্যবহৃত একটি ভাষা, যা SQL-এর মতো দেখতে হলেও কিছু পার্থক্য রয়েছে। Data Manipulation Language (DML) Cassandra তে ডেটা নির্বাচন, যোগ করা, আপডেট করা এবং মুছে ফেলার জন্য ব্যবহৃত কমান্ডগুলির একটি সেট। CQL DML কমান্ডের মাধ্যমে Cassandra ডেটাবেসে ডেটা পরিচালনা করা যায়।
CQL-এর DML কমান্ডগুলো সাধারণত INSERT, SELECT, UPDATE, এবং DELETE হিসেবে ব্যবহৃত হয়। এই কমান্ডগুলির মাধ্যমে ডেটা ইনসার্ট করা, পরিবর্তন করা, নির্বাচন করা এবং মুছে ফেলা যায়।
1. INSERT (ডেটা ইনসার্ট করা)
INSERT কমান্ড ব্যবহার করে Cassandra তে ডেটা যোগ করা হয়। Cassandra ডেটাবেসে একটি রেকর্ড ইনসার্ট করার জন্য INSERT INTO কমান্ড ব্যবহৃত হয়। CQL-এ, INSERT কমান্ড সাধারণত টেবিলের primary key এবং অন্যান্য কলামগুলোর জন্য মান প্রদান করে।
Syntax:
INSERT INTO <keyspace_name>.<table_name> (<column1>, <column2>, ...)
VALUES (<value1>, <value2>, ...);
INSERT উদাহরণ:
INSERT INTO ecommerce.users (user_id, username, email, age)
VALUES (uuid(), 'john_doe', 'john.doe@example.com', 28);
এটি users টেবিলে একটি নতুন রেকর্ড ইনসার্ট করবে, যেখানে user_id একটি নতুন UUID হবে, এবং অন্যান্য ফিল্ডে নির্দিষ্ট মান ইনসার্ট করা হবে।
বিস্তারিত উদাহরণ:
ধরা যাক, orders টেবিলের মধ্যে একটি নতুন অর্ডার ইনসার্ট করা হচ্ছে:
INSERT INTO ecommerce.orders (order_id, user_id, product_id, quantity, order_date)
VALUES (uuid(), '123e4567-e89b-12d3-a456-426614174000', '456e7890-b12c-34f5-d678-987654321abc', 2, '2024-12-10 10:30:00');
এটি orders টেবিলে একটি নতুন অর্ডার ইনসার্ট করবে।
2. SELECT (ডেটা নির্বাচন করা)
SELECT কমান্ড CQL তে ডেটা নির্বাচন বা রিড করার জন্য ব্যবহৃত হয়। আপনি SELECT কমান্ডের মাধ্যমে Cassandra টেবিল থেকে এক বা একাধিক কলামের মান নির্বাচন করতে পারেন।
Syntax:
SELECT <column1>, <column2>, ... FROM <keyspace_name>.<table_name> WHERE <condition>;
SELECT উদাহরণ:
SELECT * FROM ecommerce.users WHERE age > 25;
এটি users টেবিল থেকে এমন সব রেকর্ড নির্বাচন করবে যাদের বয়স ২৫ এর বেশি।
SELECT এর বিকল্প উদাহরণ:
SELECT username, email FROM ecommerce.users WHERE user_id = '123e4567-e89b-12d3-a456-426614174000';
এটি users টেবিল থেকে নির্দিষ্ট user_id এর জন্য username এবং email কলাম নির্বাচিত করবে।
3. UPDATE (ডেটা আপডেট করা)
UPDATE কমান্ড ব্যবহার করে Cassandra তে ইতিমধ্যেই সঞ্চিত ডেটা আপডেট করা হয়। CQL-এ UPDATE কমান্ডটি একটি রেকর্ডের কলামের মান পরিবর্তন করার জন্য ব্যবহৃত হয়। Cassandra-তে, UPDATE কমান্ড Primary Key এর উপর ভিত্তি করে একটি নির্দিষ্ট রেকর্ড খুঁজে পায় এবং তারপর শুধুমাত্র সংশ্লিষ্ট কলামগুলি আপডেট করে।
Syntax:
UPDATE <keyspace_name>.<table_name>
SET <column1> = <value1>, <column2> = <value2>, ...
WHERE <condition>;
UPDATE উদাহরণ:
UPDATE ecommerce.users SET age = 29 WHERE user_id = '123e4567-e89b-12d3-a456-426614174000';
এটি users টেবিলের user_id অনুযায়ী ব্যবহারকারীর বয়স 29 এ আপডেট করবে।
UPDATE এর বিকল্প উদাহরণ:
UPDATE ecommerce.orders SET quantity = 3 WHERE order_id = '12345';
এটি orders টেবিলে order_id অনুযায়ী পণ্যের পরিমাণ পরিবর্তন করবে।
4. DELETE (ডেটা মুছে ফেলা)
DELETE কমান্ড ব্যবহার করে Cassandra তে ডেটা মুছে ফেলা হয়। DELETE কমান্ডের মাধ্যমে একটি নির্দিষ্ট রেকর্ড বা কলাম মুছে ফেলা সম্ভব। CQL-এ, DELETE কমান্ড Primary Key বা Clustering Key এর উপর ভিত্তি করে ডেটার মুছে ফেলার অপারেশন চালানো হয়।
Syntax:
DELETE FROM <keyspace_name>.<table_name> WHERE <condition>;
DELETE উদাহরণ:
DELETE FROM ecommerce.users WHERE user_id = '123e4567-e89b-12d3-a456-426614174000';
এটি users টেবিল থেকে নির্দিষ্ট user_id এর রেকর্ড মুছে ফেলবে।
DELETE এর বিকল্প উদাহরণ:
DELETE email FROM ecommerce.users WHERE user_id = '123e4567-e89b-12d3-a456-426614174000';
এটি users টেবিল থেকে নির্দিষ্ট user_id এর email কলাম মুছে ফেলবে।
5. BATCH (একাধিক অপারেশন একত্রে চালানো)
Cassandra তে একাধিক INSERT, UPDATE, অথবা DELETE অপারেশন একসাথে একক batch কমান্ডের মাধ্যমে একত্রে চালানো যেতে পারে। এটি ডেটাবেসে একাধিক কাজ একযোগে কার্যকর করতে সহায়তা করে এবং সিস্টেমের পারফরম্যান্স উন্নত করে।
Syntax:
BEGIN BATCH
<operation1>;
<operation2>;
...
APPLY BATCH;
BATCH উদাহরণ:
BEGIN BATCH
INSERT INTO ecommerce.users (user_id, username, email, age) VALUES (uuid(), 'alice_smith', 'alice.smith@example.com', 24);
INSERT INTO ecommerce.orders (order_id, user_id, product_id, quantity, order_date) VALUES (uuid(), '123e4567-e89b-12d3-a456-426614174000', '456e7890-b12c-34f5-d678-987654321abc', 1, '2024-12-12 09:00:00');
APPLY BATCH;
এই কমান্ডটি একসাথে দুটি ইনসার্ট অপারেশন চালাবে।
6. CQL DML এর সীমাবদ্ধতা
- ACID ট্রানজেকশন সমর্থন না: Cassandra তে ACID ট্রানজেকশন নেই, তাই multi-table transaction বা join অপারেশন সমর্থিত নয়।
- লিমিটেড JOIN: Cassandra তে JOIN অপারেশন ব্যবহার করা যাবে না, কারণ এটি একটি NoSQL ডেটাবেস এবং ডেটা সাধারণত ডেনর্মালাইজড আকারে থাকে।
সারাংশ
Cassandra Data Manipulation Language (DML) একটি গুরুত্বপূর্ণ অংশ যা Cassandra ডেটাবেসের মাধ্যমে ডেটা পরিচালনা করতে ব্যবহৃত হয়। CQL-এর DML কমান্ডগুলো, যেমন INSERT, SELECT, UPDATE, এবং DELETE, Cassandra ডেটাবেসে ডেটা ইনসার্ট, নির্বাচন, আপডেট এবং মুছে ফেলতে ব্যবহৃত হয়। Cassandra-তে DML কমান্ডগুলি ব্যবহারের মাধ্যমে ডেটা ম্যানিপুলেশন সহজ এবং দ্রুত করা যায়, তবে এতে কিছু সীমাবদ্ধতা যেমন ACID ট্রানজেকশন এর অভাব এবং JOIN অপারেশন নিষিদ্ধ রয়েছে।
Read more