Apache Cassandra হলো একটি ওপেন-সোর্স, ডিস্ট্রিবিউটেড NoSQL ডাটাবেস ম্যানেজমেন্ট সিস্টেম, যা বিশেষভাবে বড় আকারের ডেটা স্টোরেজ এবং হাই-অ্যাভেইলেবিলিটি নিশ্চিত করার জন্য ডিজাইন করা হয়েছে। এটি মূলত Facebook এ তৈরি হয়েছিল এবং পরে Apache Software Foundation এর অধীনে রিলিজ করা হয়েছে। Cassandra অত্যন্ত স্কেলেবল এবং ডিস্ট্রিবিউটেড আর্কিটেকচার ব্যবহার করে, যা বড় ডেটা সেটগুলিকে বিভিন্ন সার্ভারে ছড়িয়ে স্টোর করতে এবং দ্রুত অ্যাক্সেস করতে সাহায্য করে।
Apache Cassandra একটি ওপেন-সোর্স, ডিস্ট্রিবিউটেড NoSQL ডেটাবেস ম্যানেজমেন্ট সিস্টেম, যা বড় আকারের ডেটা সংরক্ষণ এবং উচ্চতর স্কেলেবিলিটি ও অভ্যন্তরীণ স্থায়িত্ব নিশ্চিত করে। এটি বিগ ডেটা এবং রিয়েল-টাইম ডেটা প্রসেসিং এর জন্য ব্যবহৃত হয় এবং মূলত CAP theorem অনুসারে Availability এবং Partition Tolerance এর মধ্যে ভারসাম্য বজায় রাখে।
Cassandra মূলত Facebook এ তৈরি হয়েছিল, তবে এখন এটি বিভিন্ন বড় প্রতিষ্ঠান যেমন Netflix, Twitter, এবং Instagram এ ব্যবহার করা হয়। এটি এমন ডেটাবেস আর্কিটেকচারে তৈরি হয়েছে, যেখানে Single Point of Failure (SPOF) নেই, এবং এটি বড় আকারের ডেটাবেস ম্যানেজমেন্ট এবং দ্রুত write-heavy অপারেশন পরিচালনা করতে পারে।
Cassandra এর আর্কিটেকচার Peer-to-Peer ভিত্তিক, যেখানে প্রতিটি নোড সমান ক্ষমতার অধিকারী এবং Master-Slave সম্পর্ক নেই। এর ফলে Single Point of Failure (SPOF) এর সমস্যা নেই। নিচে Cassandra এর আর্কিটেকচারের মূল উপাদানগুলো নিয়ে আলোচনা করা হলো:
Cassandra ক্লাস্টার হল একাধিক নোডের সমন্বয়, যেখানে ডেটা সংরক্ষণ এবং প্রক্রিয়াজাত করা হয়। একটি ক্লাস্টার বিভিন্ন ডাটা সেন্টারে বিভক্ত হতে পারে এবং ক্লাস্টারের প্রতিটি নোড সমানভাবে ডেটা স্টোর এবং প্রোসেস করতে সক্ষম।
Node হল Cassandra-তে ডেটা সংরক্ষণের একক ইউনিট, যেখানে ডেটার একটি অংশ রাখা হয়। প্রতিটি নোড একে অপরের সাথে যোগাযোগ করতে সক্ষম এবং ডেটার একটি কপি বা অংশ সংরক্ষণ করে। যখন একটি নোডে ডেটা লেখা বা পড়া হয়, তখন সেই ডেটা বিভিন্ন নোডে ছড়িয়ে পড়ে।
Keyspace হল একটি লজিক্যাল ডেটাবেস, যেখানে এক বা একাধিক টেবিল থাকে। Keyspace টেবিলের স্টোরেজ এবং Replication এর কনফিগারেশন সংরক্ষণ করে। এটি মূলত ডেটাবেসের মতো কাজ করে।
Cassandra-তে Table হল যেখানে ডেটা রো এবং কলামের আকারে সংরক্ষণ করা হয়। এটি RDBMS এর মতো টেবিল, তবে এখানে স্কিমালেস ফিচার রয়েছে, যা ডেটার ফিল্ডগুলো নমনীয় করে তোলে।
Cassandra ডেটাকে বিভিন্ন Partition আকারে বিভক্ত করে। প্রতিটি Partition একটি নির্দিষ্ট নোডে সংরক্ষণ করা হয়। Partition এর মাধ্যমে Cassandra বড় ডেটাসেটকে ছোট ছোট অংশে ভাগ করে এবং ডেটা দ্রুত রিড এবং রাইট করতে সক্ষম হয়।
Cassandra তে ডেটার Replication ব্যবস্থাপনা খুবই গুরুত্বপূর্ণ। Replication Factor দ্বারা নির্ধারিত হয় যে ডেটার কতটি কপি তৈরি হবে এবং সেগুলো কত নোডে বিতরণ হবে।
Cassandra তে Consistency Level নির্ধারণ করা যায়, যার মাধ্যমে নির্ধারণ করা হয় একটি রিড বা রাইট অপারেশনে কতটি নোড থেকে সঠিক ফলাফল আশা করা হচ্ছে। এটি Eventual Consistency এবং Strong Consistency এর মধ্যে ভারসাম্য তৈরি করতে সাহায্য করে।
Cassandra ব্যবহার করতে হলে প্রথমে এটি আপনার সিস্টেমে ইনস্টল করতে হবে। নিচে Ubuntu সিস্টেমে Cassandra ইনস্টল করার ধাপগুলো দেওয়া হলো:
Cassandra চালানোর জন্য Java প্রয়োজন। যদি Java ইন্সটল না থাকে, তাহলে নিচের কমান্ড দিয়ে Java ইন্সটল করুন:
sudo apt update
sudo apt install openjdk-11-jdk
Cassandra ডাউনলোড এবং ইনস্টল করতে নিম্নলিখিত ধাপগুলো অনুসরণ করুন:
echo "deb http://www.apache.org/dist/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
তারপর Cassandra এর GPG key যোগ করুন:
curl https://www.apache.org/dist/cassandra/KEYS | sudo apt-key add -
Cassandra ইনস্টল করতে:
sudo apt update
sudo apt install cassandra
Cassandra সার্ভার চালাতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
sudo systemctl start cassandra
Cassandra সার্ভার চালু হয়েছে কিনা তা যাচাই করতে:
nodetool status
Cassandra এর CQL (Cassandra Query Language) শিখতে এবং ব্যবহার করতে, cqlsh ব্যবহার করা হয়। CQL চালাতে:
cqlsh
এখন আপনি Cassandra তে SQL-এর মতো কুয়েরি লিখে ডেটা ম্যানেজ করতে পারবেন।
Cassandra-তে SQL এর মতো Cassandra Query Language (CQL) ব্যবহার করা হয়। নিচে কিছু মৌলিক CQL কুয়েরি দেখানো হলো:
Keyspace তৈরি করতে নিচের কুয়েরি ব্যবহার করা হয়:
CREATE KEYSPACE mykeyspace WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
Keyspace এর মধ্যে Table তৈরি করতে:
CREATE TABLE mykeyspace.users (
id UUID PRIMARY KEY,
name TEXT,
email TEXT
);
টেবিলে ডেটা ইনসার্ট করতে:
INSERT INTO mykeyspace.users (id, name, email) VALUES (uuid(), 'John Doe', 'john@example.com');
ডেটা রিট্রিভ করতে:
SELECT * FROM mykeyspace.users;
টেবিলের ডেটা আপডেট করতে:
UPDATE mykeyspace.users SET email = 'john.doe@example.com' WHERE id = ;
ডেটা ডিলিট করতে:
DELETE FROM mykeyspace.users WHERE id = ;
| বৈশিষ্ট্য | Apache Cassandra | MongoDB | HBase |
|---|---|---|---|
| ডেটা মডেল | Wide Column Store | Document Store | Wide Column Store |
| স্কেলেবিলিটি | Horizontal Scalability | Horizontal Scalability | Horizontal Scalability |
| কনসিসটেন্সি | Tunable Consistency | Strong Consistency | Strong Consistency |
| প্রসেসিং টাইপ | রিয়েল-টাইম ডেটা প্রসেসিং | রিয়েল-টাইম এবং ব্যাচ প্রসেসিং | ব্যাচ প্রসেসিং |
| Replication and Failover | Multi-datacenter replication, Fault-tolerant | Replica Sets, Sharding | Master-Slave Architecture |
| ব্যবহার ক্ষেত্র | বড় ডেটা অ্যাপ্লিকেশন, IoT, টাইম-সিরিজ ডেটা | ডকুমেন্ট স্টোরেজ, ওয়েব অ্যাপ্লিকেশন | বড় ডেটা প্রসেসিং, Hadoop ইন্টিগ্রেশন |
Apache Cassandra হল একটি শক্তিশালী, স্কেলযোগ্য, এবং নির্ভরযোগ্য NoSQL ডেটাবেস, যা বড় আকারের ডেটা ম্যানেজমেন্ট এবং দ্রুত রাইট অপারেশনগুলোর জন্য আদর্শ। এর ডিস্ট্রিবিউটেড আর্কিটেকচার, ডেটা রেপ্লিকেশন, এবং পার্টিশন টলারেন্স এর মতো বৈশিষ্ট্যগুলি এটি বড় প্রতিষ্ঠান এবং রিয়েল-টাইম ডেটা প্রসেসিং এর জন্য উপযুক্ত করে তোলে।
যদিও Consistency এবং Read Performance কিছু ক্ষেত্রে একটি চ্যালেঞ্জ হতে পারে, তবে Cassandra এর high scalability এবং high availability ফিচারগুলো একে বড় আকারের ডেটাবেস ব্যবস্থাপনার জন্য একটি কার্যকরী সমাধান হিসেবে তুলে ধরে।
Apache Cassandra হলো একটি ওপেন-সোর্স, ডিস্ট্রিবিউটেড NoSQL ডাটাবেস ম্যানেজমেন্ট সিস্টেম, যা বিশেষভাবে বড় আকারের ডেটা স্টোরেজ এবং হাই-অ্যাভেইলেবিলিটি নিশ্চিত করার জন্য ডিজাইন করা হয়েছে। এটি মূলত Facebook এ তৈরি হয়েছিল এবং পরে Apache Software Foundation এর অধীনে রিলিজ করা হয়েছে। Cassandra অত্যন্ত স্কেলেবল এবং ডিস্ট্রিবিউটেড আর্কিটেকচার ব্যবহার করে, যা বড় ডেটা সেটগুলিকে বিভিন্ন সার্ভারে ছড়িয়ে স্টোর করতে এবং দ্রুত অ্যাক্সেস করতে সাহায্য করে।
Apache Cassandra একটি ওপেন-সোর্স, ডিস্ট্রিবিউটেড NoSQL ডেটাবেস ম্যানেজমেন্ট সিস্টেম, যা বড় আকারের ডেটা সংরক্ষণ এবং উচ্চতর স্কেলেবিলিটি ও অভ্যন্তরীণ স্থায়িত্ব নিশ্চিত করে। এটি বিগ ডেটা এবং রিয়েল-টাইম ডেটা প্রসেসিং এর জন্য ব্যবহৃত হয় এবং মূলত CAP theorem অনুসারে Availability এবং Partition Tolerance এর মধ্যে ভারসাম্য বজায় রাখে।
Cassandra মূলত Facebook এ তৈরি হয়েছিল, তবে এখন এটি বিভিন্ন বড় প্রতিষ্ঠান যেমন Netflix, Twitter, এবং Instagram এ ব্যবহার করা হয়। এটি এমন ডেটাবেস আর্কিটেকচারে তৈরি হয়েছে, যেখানে Single Point of Failure (SPOF) নেই, এবং এটি বড় আকারের ডেটাবেস ম্যানেজমেন্ট এবং দ্রুত write-heavy অপারেশন পরিচালনা করতে পারে।
Cassandra এর আর্কিটেকচার Peer-to-Peer ভিত্তিক, যেখানে প্রতিটি নোড সমান ক্ষমতার অধিকারী এবং Master-Slave সম্পর্ক নেই। এর ফলে Single Point of Failure (SPOF) এর সমস্যা নেই। নিচে Cassandra এর আর্কিটেকচারের মূল উপাদানগুলো নিয়ে আলোচনা করা হলো:
Cassandra ক্লাস্টার হল একাধিক নোডের সমন্বয়, যেখানে ডেটা সংরক্ষণ এবং প্রক্রিয়াজাত করা হয়। একটি ক্লাস্টার বিভিন্ন ডাটা সেন্টারে বিভক্ত হতে পারে এবং ক্লাস্টারের প্রতিটি নোড সমানভাবে ডেটা স্টোর এবং প্রোসেস করতে সক্ষম।
Node হল Cassandra-তে ডেটা সংরক্ষণের একক ইউনিট, যেখানে ডেটার একটি অংশ রাখা হয়। প্রতিটি নোড একে অপরের সাথে যোগাযোগ করতে সক্ষম এবং ডেটার একটি কপি বা অংশ সংরক্ষণ করে। যখন একটি নোডে ডেটা লেখা বা পড়া হয়, তখন সেই ডেটা বিভিন্ন নোডে ছড়িয়ে পড়ে।
Keyspace হল একটি লজিক্যাল ডেটাবেস, যেখানে এক বা একাধিক টেবিল থাকে। Keyspace টেবিলের স্টোরেজ এবং Replication এর কনফিগারেশন সংরক্ষণ করে। এটি মূলত ডেটাবেসের মতো কাজ করে।
Cassandra-তে Table হল যেখানে ডেটা রো এবং কলামের আকারে সংরক্ষণ করা হয়। এটি RDBMS এর মতো টেবিল, তবে এখানে স্কিমালেস ফিচার রয়েছে, যা ডেটার ফিল্ডগুলো নমনীয় করে তোলে।
Cassandra ডেটাকে বিভিন্ন Partition আকারে বিভক্ত করে। প্রতিটি Partition একটি নির্দিষ্ট নোডে সংরক্ষণ করা হয়। Partition এর মাধ্যমে Cassandra বড় ডেটাসেটকে ছোট ছোট অংশে ভাগ করে এবং ডেটা দ্রুত রিড এবং রাইট করতে সক্ষম হয়।
Cassandra তে ডেটার Replication ব্যবস্থাপনা খুবই গুরুত্বপূর্ণ। Replication Factor দ্বারা নির্ধারিত হয় যে ডেটার কতটি কপি তৈরি হবে এবং সেগুলো কত নোডে বিতরণ হবে।
Cassandra তে Consistency Level নির্ধারণ করা যায়, যার মাধ্যমে নির্ধারণ করা হয় একটি রিড বা রাইট অপারেশনে কতটি নোড থেকে সঠিক ফলাফল আশা করা হচ্ছে। এটি Eventual Consistency এবং Strong Consistency এর মধ্যে ভারসাম্য তৈরি করতে সাহায্য করে।
Cassandra ব্যবহার করতে হলে প্রথমে এটি আপনার সিস্টেমে ইনস্টল করতে হবে। নিচে Ubuntu সিস্টেমে Cassandra ইনস্টল করার ধাপগুলো দেওয়া হলো:
Cassandra চালানোর জন্য Java প্রয়োজন। যদি Java ইন্সটল না থাকে, তাহলে নিচের কমান্ড দিয়ে Java ইন্সটল করুন:
sudo apt update
sudo apt install openjdk-11-jdk
Cassandra ডাউনলোড এবং ইনস্টল করতে নিম্নলিখিত ধাপগুলো অনুসরণ করুন:
echo "deb http://www.apache.org/dist/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
তারপর Cassandra এর GPG key যোগ করুন:
curl https://www.apache.org/dist/cassandra/KEYS | sudo apt-key add -
Cassandra ইনস্টল করতে:
sudo apt update
sudo apt install cassandra
Cassandra সার্ভার চালাতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
sudo systemctl start cassandra
Cassandra সার্ভার চালু হয়েছে কিনা তা যাচাই করতে:
nodetool status
Cassandra এর CQL (Cassandra Query Language) শিখতে এবং ব্যবহার করতে, cqlsh ব্যবহার করা হয়। CQL চালাতে:
cqlsh
এখন আপনি Cassandra তে SQL-এর মতো কুয়েরি লিখে ডেটা ম্যানেজ করতে পারবেন।
Cassandra-তে SQL এর মতো Cassandra Query Language (CQL) ব্যবহার করা হয়। নিচে কিছু মৌলিক CQL কুয়েরি দেখানো হলো:
Keyspace তৈরি করতে নিচের কুয়েরি ব্যবহার করা হয়:
CREATE KEYSPACE mykeyspace WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
Keyspace এর মধ্যে Table তৈরি করতে:
CREATE TABLE mykeyspace.users (
id UUID PRIMARY KEY,
name TEXT,
email TEXT
);
টেবিলে ডেটা ইনসার্ট করতে:
INSERT INTO mykeyspace.users (id, name, email) VALUES (uuid(), 'John Doe', 'john@example.com');
ডেটা রিট্রিভ করতে:
SELECT * FROM mykeyspace.users;
টেবিলের ডেটা আপডেট করতে:
UPDATE mykeyspace.users SET email = 'john.doe@example.com' WHERE id = ;
ডেটা ডিলিট করতে:
DELETE FROM mykeyspace.users WHERE id = ;
| বৈশিষ্ট্য | Apache Cassandra | MongoDB | HBase |
|---|---|---|---|
| ডেটা মডেল | Wide Column Store | Document Store | Wide Column Store |
| স্কেলেবিলিটি | Horizontal Scalability | Horizontal Scalability | Horizontal Scalability |
| কনসিসটেন্সি | Tunable Consistency | Strong Consistency | Strong Consistency |
| প্রসেসিং টাইপ | রিয়েল-টাইম ডেটা প্রসেসিং | রিয়েল-টাইম এবং ব্যাচ প্রসেসিং | ব্যাচ প্রসেসিং |
| Replication and Failover | Multi-datacenter replication, Fault-tolerant | Replica Sets, Sharding | Master-Slave Architecture |
| ব্যবহার ক্ষেত্র | বড় ডেটা অ্যাপ্লিকেশন, IoT, টাইম-সিরিজ ডেটা | ডকুমেন্ট স্টোরেজ, ওয়েব অ্যাপ্লিকেশন | বড় ডেটা প্রসেসিং, Hadoop ইন্টিগ্রেশন |
Apache Cassandra হল একটি শক্তিশালী, স্কেলযোগ্য, এবং নির্ভরযোগ্য NoSQL ডেটাবেস, যা বড় আকারের ডেটা ম্যানেজমেন্ট এবং দ্রুত রাইট অপারেশনগুলোর জন্য আদর্শ। এর ডিস্ট্রিবিউটেড আর্কিটেকচার, ডেটা রেপ্লিকেশন, এবং পার্টিশন টলারেন্স এর মতো বৈশিষ্ট্যগুলি এটি বড় প্রতিষ্ঠান এবং রিয়েল-টাইম ডেটা প্রসেসিং এর জন্য উপযুক্ত করে তোলে।
যদিও Consistency এবং Read Performance কিছু ক্ষেত্রে একটি চ্যালেঞ্জ হতে পারে, তবে Cassandra এর high scalability এবং high availability ফিচারগুলো একে বড় আকারের ডেটাবেস ব্যবস্থাপনার জন্য একটি কার্যকরী সমাধান হিসেবে তুলে ধরে।
আপনি আমাকে যেকোনো প্রশ্ন করতে পারেন, যেমনঃ
Are you sure to start over?