Cassandra এর Read এবং Write Operations

ক্যাসান্দ্রা (Cassandra) - Big Data and Analytics

351

Apache Cassandra একটি ডিস্ট্রিবিউটেড NoSQL ডেটাবেস সিস্টেম, যা বিশেষভাবে স্কেলেবল এবং হাই অ্যাভেইলেবিলিটি নিশ্চিত করতে ডিজাইন করা হয়েছে। Cassandra তে Read এবং Write অপারেশনগুলো খুবই গুরুত্বপূর্ণ, কারণ এই অপারেশনগুলোর মাধ্যমে ডেটার পরিচালনা এবং অ্যাক্সেস নিশ্চিত করা হয়। Cassandra তার ডিসট্রিবিউটেড আর্কিটেকচারের মাধ্যমে এই অপারেশনগুলো খুব দ্রুত এবং কার্যকরভাবে সম্পাদন করতে সক্ষম।

Cassandra তে ডেটা রাইট এবং রিডের জন্য কিছু নির্দিষ্ট কৌশল এবং পদ্ধতি ব্যবহার করা হয়। এখানে আমরা Cassandra এর Read এবং Write অপারেশনগুলোর কাজ করার পদ্ধতি এবং তাদের বৈশিষ্ট্য নিয়ে আলোচনা করব।


1. Write Operation in Cassandra


Write Operation হলো Cassandra তে ডেটা যোগ করা বা আপডেট করার প্রক্রিয়া। Cassandra তে একটি রাইট অপারেশন কয়েকটি ধাপে সম্পন্ন হয় এবং এটি খুব দ্রুত এবং ইফিশিয়েন্টভাবে কাজ করে, কারণ Cassandra তে রাইট অপারেশন asynchronous ভিত্তিতে চলে। এর মানে হলো, ডেটা লেখা হচ্ছে, কিন্তু Cassandra তে সেই রাইটের ফলাফল নিশ্চিত করতে কিছু সময় নেয়। Cassandra তার Write অপারেশনগুলোকে Commit Log, Memtable, এবং SSTable এর মাধ্যমে পরিচালনা করে।

Write Operation এর ধাপসমূহ:

  1. Commit Log:
    • ডেটা রাইটের প্রথম ধাপ হলো Commit Log। এটি একটি লোগ ফাইল যা ডেটা লেখার সময় প্রথমে লেখে এবং ডেটা হারানোর ঝুঁকি রোধ করে। Commit Log ডেটা সিস্টেমে লেখার ইতিহাস রেকর্ড করে রাখে, যাতে কোনো নোড অকেজো হলে ডেটা পুনরুদ্ধার করা যায়।
  2. Memtable:
    • ডেটা যখন Commit Log-এ লেখা হয়, তখন এটি Memtable তেও লেখে। Memtable হলো একটি ইন-মেমরি ডেটা স্ট্রাকচার যেখানে সাম্প্রতিক রাইট অপারেশনগুলি অস্থায়ীভাবে রাখা হয়। Memtable পূর্ণ হলে এটি ডিস্কে SSTable-এ সঞ্চিত হয়।
  3. SSTable:
    • Memtable পূর্ণ হলে, ডেটা ডিস্কে SSTable ফর্মেটে লেখা হয়। SSTable হলো একটি ইমমিউটেবল ফাইল যা ডেটা সঠিকভাবে সংরক্ষণ করে।

Write Operation এর বৈশিষ্ট্য:

  • Asynchronous: Cassandra তে রাইট অপারেশন asynchronous হয়, অর্থাৎ ডেটা লেখার প্রক্রিয়া নোডে একবার শুরু হলে তা অন্য নোডের কাজ থামিয়ে দেয় না। এটি উচ্চ পারফরম্যান্স নিশ্চিত করে।
  • Replica Writing: Cassandra ডেটার একাধিক কপি (replicas) রাখে। রাইট অপারেশন সফল হতে, রেপ্লিকেশন ফ্যাক্টর অনুসারে নির্দিষ্ট সংখ্যক নোডে রাইট সফল হতে হবে।
  • Consistency Level: Cassandra রাইট অপারেশনের জন্য Consistency Level নির্ধারণ করতে পারে, যেমন ONE, QUORUM, এবং ALL

2. Read Operation in Cassandra


Read Operation হলো Cassandra তে ডেটা পড়ার প্রক্রিয়া। Cassandra তে রিড অপারেশন বেশ কিছু ভিন্ন স্তরের সাথে সম্পাদিত হয়, এবং এটি অনেক দ্রুত এবং স্কেলেবলভাবে কাজ করে। Cassandra তে রিড অপারেশন করতে হলে, প্রথমে ডেটার অবস্থান সনাক্ত করতে হয়, তারপর সেই ডেটা থেকে সঠিক ফলাফল বের করা হয়। Cassandra রিড অপারেশনকে Memtable, SSTable, এবং Bloom Filter এর মাধ্যমে দ্রুত সম্পাদন করে।

Read Operation এর ধাপসমূহ:

  1. Bloom Filter:
    • Cassandra তে একটি Bloom Filter ব্যবহার করা হয় যা দ্রুত ডেটার উপস্থিতি চেক করে। এটি একটি probabilistic data structure যা একটি নির্দিষ্ট SSTable ফাইলের মধ্যে কোনো ডেটা রয়েছে কিনা তা দ্রুত যাচাই করে। Bloom Filter ডেটা না পাওয়ার সম্ভাবনাকে দ্রুত হ্রাস করে।
  2. Memtable:
    • যখন রিড অপারেশন সম্পন্ন করা হয়, প্রথমে Cassandra Memtable-এ ডেটা খোঁজে। যদি ডেটা Memtable-এ পাওয়া না যায়, তখন এটি SSTable-এ খোঁজা হয়। Memtable তে শুধু সাম্প্রতিক রাইট ডেটা থাকে, যা flush হওয়ার পর SSTable এ লেখা হয়।
  3. SSTable:
    • Memtable খালি না হলে ডেটা সেখানেই পাওয়া যায়, অন্যথায় Cassandra এক বা একাধিক SSTable তে ডেটা খোঁজে। SSTable হলো একটি ডিস্ক ফাইল, যেখানে Cassandra ডেটার ইমমিউটেবল কপি সংরক্ষণ করে থাকে।
  4. Consistency Level:
    • Cassandra তে রিড অপারেশনের জন্য Consistency Level নির্ধারণ করা যায়, যেমন ONE, QUORUM, ALL, যা ডেটা অ্যাক্সেসের জন্য কতগুলো নোডের সাথে একযোগে সমন্বিত হওয়া প্রয়োজন তা নির্ধারণ করে। রিড অপারেশন কখনো পুরো ক্লাস্টারে সিঙ্ক্রোনাইজড না হয়ে নির্দিষ্ট একাধিক নোডে কার্যকরী হতে পারে।

Read Operation এর বৈশিষ্ট্য:

  • Low Latency: Cassandra রিড অপারেশন খুব কম সময় নেয়, কারণ Bloom Filter, Memtable এবং SSTable এর মাধ্যমে দ্রুত ডেটা অ্যাক্সেস করা হয়।
  • Eventual Consistency: Cassandra তে রিড অপারেশন Eventual Consistency প্রিন্সিপাল অনুসরণ করে, যার মানে হলো রিড অপারেশনটি কিছু সময় পর সিঙ্ক্রোনাইজড হবে, কিন্তু তা তাত্ক্ষণিকভাবে ঘটবে না।
  • Consistency Level: রিড অপারেশনে Consistency Level নির্ধারণ করা যায়, যা ডেটা অ্যাক্সেসের নির্ভরযোগ্যতা এবং গতি নিয়ন্ত্রণ করে।

3. Write এবং Read Operation এর মধ্যে পার্থক্য


ফিচারWrite OperationRead Operation
অপারেশন টাইপডেটা লিখা (Insert/Update)ডেটা পড়া
কমপ্লেক্সিটিCommit Log, Memtable, এবং SSTable এর মাধ্যমে সম্পন্ন হয়Bloom Filter, Memtable, SSTable, এবং Consistency Level ব্যবহৃত হয়
Consistency LevelConsistency Level নির্ধারণ করেConsistency Level নির্ধারণ করে
পারফরম্যান্সAsynchronous হওয়ায় দ্রুত ডেটা লেখা যায়Bloom Filter এবং Memtable এর মাধ্যমে দ্রুত রিড সম্পন্ন হয়
রিপ্লিকেশনডেটার কপি একাধিক নোডে রাখা হয়রিড অপারেশন নির্ভর করে ডেটার রেপ্লিকেশন ফ্যাক্টরের উপর
ফল্ট টলারেন্সCommit Log এবং Replication নিশ্চিত করে ডেটা হারানোর বিরুদ্ধে সুরক্ষাMemtable এবং SSTable দিয়ে দ্রুত রিড নিশ্চিত হয়

সারাংশ

Cassandra এর Read এবং Write অপারেশন উভয়ই অত্যন্ত গুরুত্বপূর্ণ এবং স্কেলেবল। Cassandra তে Write অপারেশন Commit Log, Memtable, এবং SSTable এর মাধ্যমে কার্যকরী হয়, যেখানে ডেটা দ্রুত এবং asynchronous ভাবে লেখা হয়। অপরদিকে, Read অপারেশন Memtable, SSTable, এবং Bloom Filter ব্যবহার করে দ্রুত ডেটা অ্যাক্সেস নিশ্চিত করে। Cassandra ডিস্ট্রিবিউটেড আর্কিটেকচার এবং Consistency Levels ব্যবহার করে এই অপারেশনগুলোর কার্যকারিতা এবং পারফরম্যান্স নিশ্চিত করে, যা এটি বৃহৎ পরিমাণ ডেটা দ্রুত এবং দক্ষতার সাথে প্রক্রিয়া করতে সক্ষম করে।

Content added By

Apache Cassandra একটি ডিস্ট্রিবিউটেড NoSQL ডেটাবেস সিস্টেম যা উচ্চ পারফরম্যান্স এবং স্কেলেবিলিটির জন্য ডিজাইন করা হয়েছে। Cassandra তে ডেটা লেখা (write) এবং পড়া (read) অপারেশন দুটি গুরুত্বপূর্ণ প্রক্রিয়া, এবং এগুলোর মধ্যে কিছু নির্দিষ্ট পাথ বা প্রক্রিয়া রয়েছে যা ডেটা ম্যানিপুলেশন নিশ্চিত করে। এই প্রক্রিয়াগুলি Write Path এবং Read Path নামে পরিচিত, এবং সিস্টেমের কার্যক্ষমতা এবং নির্ভরযোগ্যতা বজায় রাখতে এই দুটি পাথ অত্যন্ত গুরুত্বপূর্ণ।

1. Write Path


Cassandra-তে Write Path হলো সেই প্রক্রিয়া যেখানে ডেটা ডেটাবেসে লেখা হয় এবং সঠিকভাবে সঞ্চিত হয়। Cassandra তে ডেটা লেখা অপারেশন asynchronous প্রক্রিয়া হিসেবে পরিচালিত হয়, যা খুব দ্রুত এবং স্কেলেবল করে তোলে। Write Path অনেক গুরুত্বপূর্ণ কারণ এটি ডেটা নিরাপত্তা, টেকসইতা, এবং পারফরম্যান্স নিশ্চিত করে।

Write Path এর স্টেপগুলি:

  1. Client Request:
    • ক্লায়েন্ট যখন ডেটা লেখার জন্য Cassandra-তে একটি রিকোয়েস্ট পাঠায়, তখন Cassandra প্রথমে commit log এ সেই লেখার রেকর্ডটি যুক্ত করে।
  2. Commit Log:
    • Cassandra তে প্রথমে Commit Log এ ডেটা লেখা হয়। এটি একটি স্বতন্ত্র লগ ফাইল যেখানে ডেটা লেখার সমস্ত রেকর্ড অর্ডারে রাখা হয়। Commit log ব্যবহার করে Cassandra নিশ্চিত করে যে ডেটা হারিয়ে না যায়, কারণ এই লগ ফাইলটি সিস্টেম বন্ধ হলে বা ক্র্যাশ হলে ডেটার পুনরুদ্ধার (recovery) করতে ব্যবহৃত হয়।
  3. Memtable:
    • Commit log থেকে ডেটা পরবর্তী সময়ে Memtable-এ (মেমরি-ভিত্তিক স্টোরেজ) লেখা হয়। Memtable হল একটি ইন-মেমরি ডেটা স্ট্রাকচার যা ডেটাকে সাময়িকভাবে সংরক্ষণ করে, যতক্ষণ না তা ডিস্কে সঞ্চিত হয়।
  4. SSTable:
    • যখন Memtable পূর্ণ হয়ে যায়, তখন এটি SSTable (Sorted String Table) হিসেবে ডিস্কে লেখা হয়। SSTable হলো এক ধরনের ডেটাবেস ফাইল যা স্থায়ীভাবে ডেটা সংরক্ষণ করে। এই ফাইলগুলো পরে আরও কার্যকরীভাবে অনুসন্ধান এবং পুনরুদ্ধারের জন্য ব্যবহৃত হয়।
  5. Replication:
    • Cassandra ডেটা রিপ্লিকেশন নিশ্চিত করতে Replication Factor ব্যবহার করে। ডেটার একাধিক কপি বিভিন্ন নোডে সংরক্ষিত থাকে যাতে ডেটা দ্রুত পাওয়া যায় এবং সিস্টেমের হাই অ্যাভেইলেবিলিটি নিশ্চিত হয়। যখন একটি ডেটা লেখা হয়, এটি অন্যান্য নোডে রিপ্লিকেটেড হয়।

Write Path এর বিভিন্ন ফিচার:

  • Durability: Commit log এবং Memtable দুইটি স্তরের মাধ্যমে ডেটা লেখার নির্ভরযোগ্যতা নিশ্চিত করে।
  • Consistency Level: Write এর Consistency Level নির্ধারণ করা হয়, যেমন ONE, QUORUM, অথবা ALL, যাতে কতো নোডে ডেটা লেখা হবে তা নির্ধারিত হয়।

উদাহরণ:

যখন একজন ব্যবহারকারী INSERT কমান্ড চালায়, Cassandra প্রথমে সেই রেকর্ডটি commit log-এ লেখে, তারপর Memtable-এ সংরক্ষণ করে এবং শেষমেশ SSTable ফাইলে লিখে দেয়।


2. Read Path


Read Path হলো সেই প্রক্রিয়া যেখানে Cassandra ডেটা পড়ে এবং ব্যবহারকারীর জন্য সেটি রিটার্ন করে। Cassandra তে Read Path অনেক বেশি জটিল হতে পারে, কারণ এতে ডেটার সঠিক কপি নির্বাচন করতে হয় এবং ক্লাস্টারের মধ্যে ডেটা সিঙ্ক্রোনাইজেশনের বিষয়টি দেখতে হয়।

Read Path এর স্টেপগুলি:

  1. Client Request:
    • ক্লায়েন্ট যখন একটি রিড রিকোয়েস্ট পাঠায়, তখন Cassandra প্রথমে নির্ধারণ করে কোন নোডে ডেটাটি সংরক্ষিত আছে। Cassandra ডেটা পাঠানোর জন্য Partition Key ব্যবহার করে, যাতে ডেটা নির্দিষ্ট নোডে দ্রুত পাওয়া যায়।
  2. Memtable:
    • Cassandra প্রথমে Memtable-এ খোঁজ করে। Memtable তে আপডেট হওয়া সব ডেটা থাকে, যা ডিস্কে সেভ করা হয়নি। যদি প্রয়োজনীয় ডেটা Memtable-এ পাওয়া যায়, তাহলে তা সরাসরি ব্যবহারকারীকে রিটার্ন করা হয়।
  3. SSTable:
    • যদি Memtable-এ ডেটা না পাওয়া যায়, Cassandra পরবর্তী সময়ে SSTable-এ খোঁজ করে। Cassandra সকল SSTable ফাইলগুলোর মধ্যে ডেটা খুঁজে বের করতে পারে। SSTable ফাইলগুলো ফিজিকালি ডিস্কে সংরক্ষিত থাকে।
  4. Bloom Filter:
    • Bloom Filter একটি পদ্ধতি যা SSTable ফাইলের মধ্যে ডেটার উপস্থিতি দ্রুত চেক করতে ব্যবহৃত হয়। Bloom Filter কোন ফাইলের মধ্যে ডেটা রয়েছে কিনা তা আগে থেকেই চিহ্নিত করে, যাতে Cassandra দ্রুত সিদ্ধান্ত নিতে পারে কোন ফাইলটি পড়তে হবে।
  5. Caching:
    • Cassandra কিছু ক্ষেত্রে Row Cache এবং Key Cache ব্যবহার করে ডেটা দ্রুত প্রাপ্তির জন্য। Row Cache-এ ডেটার একটি কপি রাখা হয় যা বারবার পড়ার জন্য দ্রুত এক্সেসযোগ্য থাকে, এবং Key Cache-এ কী এর জন্য ইনডেক্স তৈরি থাকে।
  6. Consistency Level:
    • Read অপারেশনের জন্য Consistency Level নির্ধারণ করা হয়, যাতে কোন নোড থেকে ডেটা রিট্রিভ করা হবে তা নির্ধারণ করা যায়। উদাহরণস্বরূপ, QUORUM consistency level নিশ্চিত করে যে ডেটা কেবল তখনই পাওয়া যাবে যখন অধিকাংশ নোডে সিঙ্ক্রোনাইজড কপি থাকবে।

Read Path এর বৈশিষ্ট্য:

  • Fast Data Retrieval: Memtable, SSTable, এবং Bloom Filter ব্যবহার করে ডেটা দ্রুত উদ্ধার করা হয়।
  • Consistency Level: Read অপারেশনের কনফিগারেবল Consistency Level নিশ্চিত করে ডেটার সঠিক কপি পাওয়া যাবে।
  • Caching: Row Cache এবং Key Cache ব্যবহার করে ডেটা দ্রুত পড়া যায়।

উদাহরণ:

যদি একজন ব্যবহারকারী SELECT কমান্ড চালায়, Cassandra প্রথমে Memtable চেক করে, যদি সেখানে না থাকে তবে SSTable এর মধ্যে খোঁজে। যদি SSTable-এ পাওয়া যায়, তাহলে Cassandra সেই ডেটা ক্লায়েন্টকে পাঠিয়ে দেয়।


3. Write Path এবং Read Path এর মধ্যে পার্থক্য


ফিচারWrite PathRead Path
প্রক্রিয়াডেটা লেখার প্রক্রিয়াডেটা পড়ার প্রক্রিয়া
প্রথমে কোথায় লেখা হয়Commit LogMemtable বা SSTable
ডেটা সংরক্ষণMemtable এবং SSTableMemtable এবং SSTable
ডেটার উপস্থিতি চেকCommit Log এবং Memtable থেকে ডেটা প্রাপ্তMemtable, SSTable এবং Bloom Filter
পারফরম্যান্সউচ্চ পারফরম্যান্স, কিন্তু ডিস্কে লেখা হয় পরেউচ্চ পারফরম্যান্স, তবে ডেটা খুঁজে পাওয়া জটিল হতে পারে
Consistency LevelWrite Consistency Level (যেমন, ONE, QUORUM, ALL)Read Consistency Level (যেমন, ONE, QUORUM, ALL)

সারাংশ


Cassandra তে Write Path এবং Read Path দুটি গুরুত্বপূর্ণ প্রক্রিয়া যা ডেটা সংরক্ষণ এবং প্রক্রিয়া করার জন্য ব্যবহৃত হয়। Write Path ডেটা Commit Log, Memtable, এবং SSTable-এর মাধ্যমে লিখে, এবং Read Path Memtable, SSTable, এবং Bloom Filter ব্যবহার করে ডেটা দ্রুত উদ্ধার করে। এই প্রক্রিয়াগুলি Cassandra-র পারফরম্যান্স, স্কেলেবিলিটি, এবং নির্ভরযোগ্যতা নিশ্চিত করতে সহায়ক। Cassandra এর Consistency Level এবং Asynchronous Writes ব্যবস্থার মাধ্যমে এগুলি আরো কার্যকরীভাবে কাজ করে।

Content added By

Apache Cassandra একটি ডিস্ট্রিবিউটেড NoSQL ডেটাবেস যা বিশেষভাবে স্কেলেবিলিটি এবং পারফরম্যান্সের জন্য ডিজাইন করা হয়েছে। Cassandra-র ডেটা স্টোরেজ পদ্ধতির একটি গুরুত্বপূর্ণ অংশ হলো Memtable এবং SSTable। এই দুটি উপাদান ডেটার লেখার এবং পড়ার পথ দ্রুত এবং কার্যকরী করে তোলে। Cassandra তে ডেটা প্রথমে Memtable এ লেখা হয় এবং পরে ডিস্কে SSTable ফরম্যাটে সঞ্চিত হয়। এই প্রক্রিয়া ডেটা সুরক্ষিত রাখতে এবং দ্রুত অ্যাক্সেস নিশ্চিত করতে সহায়ক হয়।

1. Memtable: অস্থায়ী মেমরি স্টোরেজ


Memtable হলো একটি ইন-মেমরি ডেটা স্টোরেজ যা ডেটা লেখার সময় প্রথমে সেখানে সংরক্ষিত হয়। এটি একটি write-back cache হিসেবে কাজ করে, যেখানে নতুন ডেটা বা আপডেটেড ডেটা অস্থায়ীভাবে রাখা হয়। যখন Memtable পূর্ণ হয়ে যায় বা সময়সীমা শেষ হয়, তখন এটি ডিস্কে SSTable ফরম্যাটে লেখার জন্য প্রক্রিয়া শুরু করে।

Memtable এর কাজ:

  • Write Path: যখন একটি লেখার (write) অপারেশন সম্পাদিত হয়, Cassandra প্রথমে ডেটা Memtable-এ লেখে। এটি উচ্চ পারফরম্যান্স নিশ্চিত করে কারণ এটি মেমরিতে কাজ করছে, যা ডিস্কের তুলনায় অনেক দ্রুত।
  • Temporary Storage: Memtable হল একটি অস্থায়ী ডেটা স্টোরেজ, যেখানে ডেটার আপডেট করার পর তা স্থায়ীভাবে ডেটাবেসে সংরক্ষিত হওয়ার আগে রাখা হয়।
  • Flush to Disk: Memtable পূর্ণ হলে, এটি ডিস্কে একটি SSTable ফাইলে লেখা হয়।

Memtable এর উদাহরণ:

ধরা যাক, আপনি একটি টেবিলে ডেটা ইনসার্ট করছেন, যেমন:

INSERT INTO users (id, name, age) VALUES (uuid(), 'John', 25);

এই ডেটা প্রথমে Memtable-এ লিখিত হবে এবং পরবর্তীতে এটি SSTable এ স্থায়ীভাবে লেখা হবে।


2. SSTable: স্থায়ী ডেটা স্টোরেজ


SSTable (Sorted String Table) হলো একটি ডিস্ক-ভিত্তিক ডেটা স্টোরেজ ফরম্যাট, যা Cassandra তে ডেটার স্থায়ী সংরক্ষণ নিশ্চিত করে। যখন Memtable পূর্ণ হয়, তখন এটি একটি SSTable ফাইল তৈরি করে এবং সেখানে ডেটা লেখে। SSTable ফাইলগুলি immutable (অপরিবর্তনযোগ্য) হয়, অর্থাৎ একবার লেখা হয়ে গেলে, সেগুলি আর পরিবর্তন করা যায় না।

SSTable এর কাজ:

  • Durable Storage: SSTable হল স্থায়ী স্টোরেজ, যেখানে Memtable থেকে ডেটা সঞ্চিত হয়। এটি ডেটা স্থায়িত্ব নিশ্চিত করে।
  • Column Families: SSTable ফাইলগুলি Column Families হিসেবে সঞ্চিত থাকে। এর মাধ্যমে Cassandra তে ডেটা পার্টিশনিং এবং রিপ্লিকেশন ব্যবস্থা সহজে পরিচালিত হয়।
  • Flush Process: যখন Memtable পূর্ণ হয়, তখন Cassandra SSTable ফাইল তৈরি করতে শুরু করে এবং ডেটা সেখানে সঞ্চিত হয়।

SSTable এর উদাহরণ:

ধরা যাক, একটি users টেবিলের জন্য Memtable পূর্ণ হলে, Cassandra একটি SSTable ফাইল তৈরি করবে (যেমন, users-12345-DataFile). SSTable ফাইলে ডেটা সেভ হয়ে যাবে এবং সেই ডেটার অ্যাক্সেস ডিস্ক থেকে করা হবে।


3. Memtable এবং SSTable এর মধ্যে পার্থক্য


বৈশিষ্ট্যMemtableSSTable
স্থানইন-মেমরি (RAM)ডিস্ক
পদ্ধতিঅস্থায়ী ডেটা স্টোরেজস্থায়ী ডেটা স্টোরেজ
পূর্ণ হলে কি হয়?SSTable এ ডেটা ফ্লাশ করা হয়একবার লেখা হলে, SSTable পরিবর্তনযোগ্য নয়
Write Pathনতুন ডেটা Memtable এ লেখা হয়Memtable এর ডেটা SSTable ফাইলে লেখা হয়
ডেটার অবস্থাঅস্থায়ী (Temporary)স্থায়ী (Permanent)
ফাইল ফরম্যাটনির্দিষ্ট ফরম্যাটে ডেটা থাকে নাফাইল ফরম্যাট: SSTable (Sorted String Table)

4. Memtable এবং SSTable এর মধ্যে প্রক্রিয়া


  1. Write Process: যখন একটি নতুন রেকর্ড লেখা হয়, এটি প্রথমে Memtable এ রাখা হয়। এখানে এটি ইন-মেমরি সঞ্চিত থাকে, যা দ্রুত রাইট অপারেশন নিশ্চিত করে।
  2. Flush to SSTable: Memtable পূর্ণ হলে, এটি flush হয়ে SSTable ফরম্যাটে লেখা হয়। এই পর্যায়ে, SSTable ফাইল ডিস্কে তৈরি হয় এবং সেখানে ডেটা স্থায়ীভাবে সংরক্ষিত থাকে।
  3. Read Process: যখন ডেটা পড়া হয়, Cassandra প্রথমে Memtable এবং তারপর SSTable থেকে ডেটা একত্রিত করে এবং ব্যবহারকারীকে সরবরাহ করে।

5. Memtable এবং SSTable এর মধ্যে সম্পর্ক


Cassandra তে Memtable এবং SSTable এর মধ্যে ঘনিষ্ঠ সম্পর্ক রয়েছে, কারণ Memtable থেকে ডেটা SSTable এ লেখার প্রক্রিয়া পুরো সিস্টেমের পারফরম্যান্স ও স্থায়িত্ব নিশ্চিত করে।

  • Write Path: Memtable লেখার প্রক্রিয়া দ্রুত করার জন্য ব্যবহৃত হয়, এবং যখন এটি পূর্ণ হয়, ডেটা SSTable এ ফ্লাশ করা হয়।
  • Consistency: Memtable এবং SSTable এর মাধ্যমে ডেটার কনসিস্টেন্সি এবং স্থায়িত্ব বজায় রাখা হয়। যেমন, commit log এ সমস্ত লেখার তথ্য সঞ্চিত থাকে, যাতে ডেটার কোনো ক্ষতি না হয়।
  • Recovery: যদি Cassandra সিস্টেম ক্র্যাশ করে, commit log এবং SSTable ব্যবহার করে ডেটার পুনরুদ্ধার করা হয়, কারণ SSTable এর ডেটা স্থায়ী এবং অপরিবর্তনীয়।

6. Memtable এবং SSTable এর ব্যবহারের সুবিধা


  1. পারফরম্যান্স: Memtable ব্যবহার করে Cassandra দ্রুত ডেটা লেখার এবং প্রসেস করার ক্ষমতা রাখে। ডেটা প্রথমে Memtable এ লেখা হয়, যা ইন-মেমরি প্রসেসিংয়ের সুবিধা দেয়।
  2. স্টোরেজ স্থায়িত্ব: SSTable ফরম্যাটের মাধ্যমে ডেটা স্থায়ীভাবে ডিস্কে সংরক্ষিত হয়, যা দীর্ঘমেয়াদী ডেটা অ্যাক্সেস নিশ্চিত করে।
  3. ডেটার নিরাপত্তা: Memtable এবং SSTable এর সংমিশ্রণ ডেটার উচ্চস্তরের নিরাপত্তা এবং পারফরম্যান্স নিশ্চিত করে। Memtable-এ লেখার পর, SSTable-এ সংরক্ষিত ডেটার একটি কপি থাকে, যা ডেটার ক্ষতি প্রতিরোধ করে।
  4. স্কেলেবল স্টোরেজ: SSTable ফাইলগুলি সহজেই স্কেল করতে পারে এবং ডিস্ট্রিবিউটেড ক্লাস্টারে ডেটা সংরক্ষণের জন্য সুবিধাজনক। Cassandra সিস্টেমে ডেটার স্কেল এবং অ্যাভেইলেবিলিটি নিশ্চিত করতে SSTable গুরুত্বপূর্ণ ভূমিকা পালন করে।

সারাংশ


Memtable এবং SSTable হলো Cassandra-র ডেটা সঞ্চয়ের মূল উপাদান। Memtable একটি ইন-মেমরি স্টোরেজ যেখানে ডেটা প্রথমে লেখা হয়, এবং পরে এটি ডিস্কে SSTable ফরম্যাটে সংরক্ষিত হয়। Memtable এবং SSTable এর এই প্রক্রিয়া Cassandra-কে দ্রুত এবং স্কেলেবল ডেটা লেখা এবং পড়ার সক্ষমতা প্রদান করে। এই দুটি উপাদান Cassandra-র পারফরম্যান্স, স্থায়িত্ব এবং ডেটার নিরাপত্তা নিশ্চিত করতে অপরিহার্য।

Content added By

Apache Cassandra একটি ডিস্ট্রিবিউটেড NoSQL ডেটাবেস সিস্টেম যা সিস্টেমের স্কেলেবিলিটি, হাই অ্যাভেইলেবিলিটি এবং ফল্ট টলারেন্স নিশ্চিত করতে বিভিন্ন মেকানিজম ব্যবহার করে। Read Repair এবং Hinted Handoff হলো দুটি গুরুত্বপূর্ণ ফিচার, যা ডেটা এক্সেস এবং ডেটার সঙ্গতি (consistency) বজায় রাখতে সহায়ক। এগুলো ডেটার সঠিকতা এবং অ্যাভেইলেবিলিটি নিশ্চিত করতে ব্যবহৃত হয়, বিশেষত যখন ক্লাস্টারে কোনো নোড ডাউন থাকে বা ডেটা সিঙ্ক্রোনাইজড না থাকে।

1. Read Repair (রিড রিপেয়ার)


Read Repair হলো একটি প্রক্রিয়া যা Cassandra ক্লাস্টারে ডেটা পড়ার সময় কাজ করে এবং ডেটার অসঙ্গতি (inconsistency) মেরামত করার জন্য ব্যবহৃত হয়। এটি তখন ঘটে যখন একটি read request একাধিক নোড থেকে একই ডেটা পড়ে এবং বিভিন্ন নোডে থাকা ডেটার মধ্যে কিছু তফাৎ পাওয়া যায়।

Read Repair এর কাজ:

  • ডেটা চেক করা: যখন কোনো ডেটার জন্য রিড কুয়েরি করা হয়, Cassandra একাধিক নোডে গিয়ে সেই ডেটার কপি চেক করে।
  • অসঙ্গতি সনাক্তকরণ: যদি কোনো নোডে স্টোর করা ডেটা অন্য নোডের তুলনায় পুরনো বা ভুল হয়, তাহলে এটি read repair ট্রিগার করবে।
  • ডেটা সিঙ্ক্রোনাইজেশন: Cassandra সেই ভুল বা পুরনো ডেটা নতুন এবং সঠিক ডেটার সাথে সিঙ্ক্রোনাইজ করবে।

Read Repair এর উদাহরণ:

ধরা যাক, একটি users টেবিলের user_id = 12345 এর জন্য ক্লাস্টারে তিনটি কপি রয়েছে। যখন রিড কুয়েরি পাঠানো হয়, তখন দেখা যায় যে একটি নোডে পুরনো ডেটা রয়েছে। Cassandra তখন এই পুরনো কপিটিকে সঠিক কপির সাথে আপডেট করবে। এটি Cassandra-র Eventual Consistency মডেলকে নিশ্চিত করে।

Read Repair এর সুবিধা:

  • ডেটার এক্সপিরেশন নিয়ন্ত্রণ: ক্লাস্টারে কোনো নোডে ডেটার কপি ভুল বা অসম্পূর্ণ হলে read repair এর মাধ্যমে তা সঠিক করা যায়।
  • হাই অ্যাভেইলেবিলিটি: যেহেতু read repair ডেটা সিঙ্ক্রোনাইজেশন স্বয়ংক্রিয়ভাবে সম্পন্ন করে, সিস্টেমের অ্যাভেইলেবিলিটি বজায় থাকে।

Read Repair এর সীমাবদ্ধতা:

  • পারফরম্যান্সের প্রভাব: কিছু ক্ষেত্রে read repair পারফরম্যান্সে প্রভাব ফেলতে পারে, কারণ এটি রিড অপারেশন সম্পন্ন করার সময় অতিরিক্ত সময় নিতে পারে।

2. Hinted Handoff (হিন্টেড হ্যান্ডঅফ)


Hinted Handoff Cassandra-তে ডেটা একসাথে সিঙ্ক্রোনাইজ করতে এবং ডেটা পুনরুদ্ধারের জন্য ব্যবহৃত হয়, বিশেষত যখন একটি নোড অস্থায়ীভাবে ডাউন থাকে। যখন কোনো নোড ডাউন থাকে এবং ডেটার রাইট অপারেশন সেই নোডে সফলভাবে সম্পন্ন করা যায় না, তখন অন্য নোড ওই ডেটার একটি "hint" সংরক্ষণ করে রাখে। এই hint পরে নোডটি আবার চালু হলে, সঠিক ডেটা নোডে পুনরুদ্ধার করা হয়।

Hinted Handoff এর কাজ:

  • নোডের ডাউন হওয়া: যখন একটি নোড অস্থায়ীভাবে ডাউন হয়ে যায়, এবং ওই নোডে কিছু ডেটা রাইট করার চেষ্টা করা হয়, Cassandra অন্য নোডে ওই রাইট অপারেশনটি হালনাগাদ করে রাখে।
  • Hinted Handoff: সেই ডেটার একটি হিন্ট সংরক্ষণ করা হয় এবং নোডটি পুনরায় চালু হলে সেই ডেটা হিন্টের মাধ্যমে পুনরুদ্ধার করা হয়।
  • ডেটার সিঙ্ক্রোনাইজেশন: যখন ডাউন হওয়া নোডটি আবার চালু হয়, তখন সেই নোড হিন্টেড ডেটা গ্রহণ করে এবং নিজস্ব ডেটা সিঙ্ক্রোনাইজ করে।

Hinted Handoff এর উদাহরণ:

ধরা যাক, user_id = 12345 এর জন্য ডেটা রাইট করার সময় Node 1 ডাউন হয়ে যায়। তখন Node 2 ডেটার একটি হিন্ট সংরক্ষণ করে রাখবে এবং পরবর্তীতে Node 1 আবার চালু হলে, Node 2 সেই হিন্টের মাধ্যমে ডেটা পুনরুদ্ধার করবে।

Hinted Handoff এর সুবিধা:

  • ডেটার ধারাবাহিকতা বজায় রাখা: কোনো নোড ডাউন থাকলে, hinted handoff নিশ্চিত করে যে ডেটা পরে সিঙ্ক্রোনাইজড হবে।
  • সিস্টেমের উচ্চ অ্যাভেইলেবিলিটি: হিন্টেড হ্যান্ডঅফের মাধ্যমে সিস্টেমের অ্যাভেইলেবিলিটি বজায় রাখা যায়, কারণ যখন কোনো নোড ডাউন থাকে তখন অন্য নোডে ডেটা সঞ্চিত থাকে।

Hinted Handoff এর সীমাবদ্ধতা:

  • ডেটা হারানোর ঝুঁকি: হিন্ট শুধু তখন কার্যকরী হয় যখন নোডটি পুনরায় চালু হয়। যদি নোড দীর্ঘ সময় ধরে ডাউন থাকে, তবে ডেটা হারানোর সম্ভাবনা থাকে।
  • Storage Overhead: হিন্টগুলি Cassandra সিস্টেমে সংরক্ষণ করা হয়, যা কিছু অতিরিক্ত স্টোরেজ ব্যবহার করতে পারে।

3. Read Repair এবং Hinted Handoff এর মধ্যে পার্থক্য


বৈশিষ্ট্যRead RepairHinted Handoff
কাজের ধরনরিড অপারেশনের সময় ডেটার সিঙ্ক্রোনাইজেশন।ডাউন থাকা নোডে ডেটা পুনরুদ্ধার করার জন্য হিন্ট সংরক্ষণ।
পরিস্থিতিডেটা যখন বিভিন্ন নোডে ভিন্ন থাকে।নোড ডাউন থাকার সময়।
অপারেশনরিড কুয়েরি চালানোর সময় ডেটার অসঙ্গতি ঠিক করা।ডেটা লিখতে গিয়ে সিঙ্ক্রোনাইজেশন হালনাগাদ করা।
ফলাফলডেটা সঠিকভাবে সিঙ্ক্রোনাইজ হয়ে যায়।ডাউন হওয়া নোডে ডেটা পুনরুদ্ধার করা হয়।
সীমাবদ্ধতাপারফরম্যান্সে প্রভাব ফেলতে পারে।ডাউন হওয়া নোড দীর্ঘ সময় ডাউন থাকলে ডেটা হারাতে পারে।

সারাংশ


Read Repair এবং Hinted Handoff হল দুটি অত্যন্ত গুরুত্বপূর্ণ ফিচার যা Cassandra ডেটাবেসে ডেটার সঠিকতা এবং অ্যাভেইলেবিলিটি নিশ্চিত করতে ব্যবহৃত হয়। Read Repair ডেটার সঠিকতা এবং এক্সপিরেশন নিয়ন্ত্রণ করে, যখন Hinted Handoff ডাউন হওয়া নোডে ডেটার সিঙ্ক্রোনাইজেশন নিশ্চিত করে। এই দুটি মেকানিজম Cassandra এর ডিস্ট্রিবিউটেড আর্কিটেকচারে ডেটার অ্যাভেইলেবিলিটি এবং পারফরম্যান্স নিশ্চিত করতে গুরুত্বপূর্ণ ভূমিকা পালন করে।

Content added By

Apache Cassandra একটি ডিস্ট্রিবিউটেড NoSQL ডেটাবেস যা ডেটা সুরক্ষা, স্কেলেবিলিটি, এবং পারফরম্যান্সের জন্য Tunable Consistency এবং Quorum Read/Write মডেল ব্যবহার করে। এই দুটি ধারণা Cassandra-র ডেটা ম্যানিপুলেশন এবং কোয়েরি প্রক্রিয়াকে শক্তিশালী এবং নমনীয় করে তোলে, যাতে এটি বিভিন্ন প্রয়োজনীয়তার জন্য কনফিগার করা যেতে পারে। এই নিবন্ধে আমরা Tunable Consistency এবং Quorum Read/Write মডেলগুলোকে বিস্তারিতভাবে বিশ্লেষণ করব এবং তাদের কার্যকারিতা বুঝে দেখব।


1. Tunable Consistency


Tunable Consistency হলো Cassandra এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা ব্যবহারকারীদের তাদের সিস্টেমের consistency এবং availability এর মধ্যে ব্যালান্স করতে সহায়তা করে। Cassandra CAP theorem (Consistency, Availability, Partition Tolerance) অনুসরণ করে, তবে এটি Tunable Consistency এর মাধ্যমে ব্যবহারকারীদের কনফিগারেশন এবং পারফরম্যান্স নিয়ন্ত্রণের সুবিধা প্রদান করে।

Consistency Level এর গুরুত্ব:

Cassandra তে, ডেটা রিড এবং রাইট অপারেশনগুলোর জন্য Consistency Level সেট করা যেতে পারে, যা নির্ধারণ করে যে একটি অপারেশন কতগুলো নোডে সফলভাবে সম্পন্ন হওয়া উচিত। এটি ডেটার কনসিস্টেন্সি নিশ্চিত করে এবং সিস্টেমের পারফরম্যান্সের মধ্যে ব্যালান্স বজায় রাখে।

Consistency Level নির্ধারণের জন্য কিছু পদ্ধতি:
  • ONE: ডেটা অপারেশন সফল হওয়ার জন্য কেবলমাত্র একটি নোডে সফল হওয়া প্রয়োজন।
  • QUORUM: ডেটা অপারেশন সফল হওয়ার জন্য ক্লাস্টারের অর্ধেকের কিছু বেশি (মধ্যে) নোডে সফল হতে হবে।
  • ALL: সমস্ত নোডে সফলভাবে অপারেশনটি শেষ হতে হবে।

Tunable Consistency এর সুবিধা:

  1. কাস্টম কনফিগারেশন: ব্যবহারকারী সিস্টেমের প্রয়োজনীয়তার উপর ভিত্তি করে Consistency Level কাস্টমাইজ করতে পারেন।
  2. ফলস সুরক্ষা: যখন নেটওয়ার্ক বিভাজন বা নোড ডাউন থাকে, তখন একটি কম কনসিস্টেন্সি লেভেল ব্যবহার করে অপারেশনটি চালানো যেতে পারে, যাতে সিস্টেমের অ্যাভেইলেবিলিটি বৃদ্ধি পায়।
  3. পারফরম্যান্স এবং সঠিকতা: কনসিস্টেন্সি লেভেল কম রাখলে পারফরম্যান্স দ্রুত হয়, তবে কনসিস্টেন্সি লেভেল উচ্চ রাখলে ডেটার সঠিকতা বেশি থাকে।

2. Quorum Read/Write


Quorum Read/Write হলো একটি কনসিস্টেন্সি মডেল যা Cassandra-তে ডেটা রিড এবং রাইট অপারেশনগুলোর জন্য ব্যবহৃত হয়। এটি Consistency Level হিসাবে কাজ করে এবং নিশ্চিত করে যে ডেটা অপারেশন সফল হতে কেমন পরিমাণ নোডে ডেটা সঠিকভাবে আপডেট বা রিড হতে হবে।

Quorum Read/Write কীভাবে কাজ করে:

  • Quorum Write: একটি রাইট অপারেশনের জন্য ক্লাস্টারের সংখ্যাগরিষ্ঠ (অর্ধেকের কিছু বেশি) নোডে সফলভাবে ডেটা আপডেট হতে হবে।
  • Quorum Read: একটি রিড অপারেশনের জন্য, ডেটা পুনরুদ্ধার করতে ক্লাস্টারের সংখ্যাগরিষ্ঠ (অর্ধেকের কিছু বেশি) নোড থেকে সঠিক ফলাফল পাওয়া উচিত।

Quorum এর কাজ করার প্রক্রিয়া:

  1. Write Operation: যখন কোনো রাইট অপারেশন QUORUM কনসিস্টেন্সি লেভেলে সম্পন্ন হয়, তখন এটি নিশ্চিত করে যে ক্লাস্টারের নির্দিষ্ট সংখ্যক নোডে ডেটা আপডেট হয়েছে। যেমন, যদি রেপ্লিকেশন ফ্যাক্টর (RF) ৩ হয়, তাহলে ২টি নোডে সফলভাবে রাইট হওয়ার পর, এটি ক্লাস্টারের জন্য কনফার্মড হিসেবে গণ্য হয়।
  2. Read Operation: যখন রিড অপারেশন QUORUM কনসিস্টেন্সি লেভেলে চলে, তখন এটি নিশ্চিত করে যে ক্লাস্টারের অর্ধেকের কিছু বেশি নোড থেকে সঠিক ডেটা প্রাপ্ত হয়েছে। এর মাধ্যমে, ক্লাস্টারে বিভ্রান্তি বা নোডের মধ্যে ডেটা অসমঞ্জসতা প্রতিরোধ করা যায়।

Quorum Read/Write এর সুবিধা:

  • নির্ভরযোগ্যতা: QUORUM ব্যবহার করে, রাইট এবং রিড অপারেশনটি সঠিক এবং আপ-টু-ডেট ডেটা প্রদান করে, কারণ এটি সংখ্যাগরিষ্ঠ নোডের কাছ থেকে নিশ্চিতকৃত ডেটা গ্রহণ করে।
  • কম ঝুঁকি: QUORUM কম কনসিস্টেন্সি লেভেলের তুলনায় কম ঝুঁকিপূর্ণ, কারণ এটি অনেক নোডের মাধ্যমে ডেটা নিশ্চিত করে।

3. Consistency Level Options in Cassandra


Cassandra-তে Consistency Level বেশ কিছু স্তরে কনফিগার করা যায়। এই স্তরগুলো নির্ধারণ করে কতগুলো নোডে ডেটা অপারেশন সফল হতে হবে। নিম্নলিখিত কনসিস্টেন্সি লেভেলগুলো আছে:

Consistency Levelবর্ণনা
ONEকমপক্ষে একটি নোডে ডেটা সফলভাবে আপডেট বা রিড করতে হবে।
QUORUMক্লাস্টারের সংখ্যাগরিষ্ঠ (অর্ধেকের কিছু বেশি) নোডে ডেটা সফলভাবে আপডেট বা রিড করতে হবে।
ALLসমস্ত নোডে ডেটা সফলভাবে আপডেট বা রিড করতে হবে।
LOCAL_QUORUMএকটি নির্দিষ্ট ডেটা সেন্টারের মধ্যে সংখ্যাগরিষ্ঠ (অর্ধেকের কিছু বেশি) নোডে ডেটা সফলভাবে আপডেট বা রিড করতে হবে।
EACH_QUORUMপ্রতিটি ডেটা সেন্টারের মধ্যে QUORUM সফল হওয়া প্রয়োজন।

4. Consistency vs. Availability in Cassandra


Cassandra-তে Consistency এবং Availability এর মধ্যে একটি ব্যালান্স তৈরি করা হয়। Tunable Consistency এর মাধ্যমে আপনি এই দুটি বৈশিষ্ট্যের মধ্যে আপনার প্রয়োজন অনুসারে একটি ব্যালান্স তৈরি করতে পারেন।

  • Consistency: ডেটার সর্বশেষ আপডেট বা রিড হওয়ার পর, এটি কনফার্মড এবং সঠিক হওয়া উচিত।
  • Availability: সিস্টেমের সক্ষমতা, যাতে ডেটা যেকোনো সময় অ্যাক্সেস করা যায়, একাধিক নোডে ডেটা উপলব্ধ থাকতে হবে।

Tunable Consistency আপনাকে সেই ব্যালান্স নির্ধারণের সুযোগ দেয়, যেটি পারফরম্যান্স এবং সঠিকতার মধ্যে উপযুক্ত হতে পারে। উদাহরণস্বরূপ, যদি আপনি অত্যন্ত দ্রুত ডেটা আপডেট চান, তবে ONE কনসিস্টেন্সি লেভেল ব্যবহার করতে পারেন, তবে যদি সঠিকতা এবং নির্ভরযোগ্যতা আরও গুরুত্বপূর্ণ হয়, তবে QUORUM বা ALL কনসিস্টেন্সি লেভেল নির্বাচন করা যেতে পারে।


সারাংশ


Tunable Consistency এবং Quorum Read/Write Cassandra এর শক্তিশালী বৈশিষ্ট্য যা Consistency Level নির্ধারণ করে এবং ডেটা ম্যানিপুলেশন নিশ্চিত করে। Cassandra-তে Consistency এবং Availability এর মধ্যে ব্যালান্স তৈরি করা সম্ভব, যাতে সিস্টেমটি high availability বজায় রেখে data consistency নিশ্চিত করতে পারে। Quorum Read/Write এর মাধ্যমে, ডেটা রিড এবং রাইট অপারেশনের সঠিকতা নিশ্চিত করা যায়, যা ডিস্ট্রিবিউটেড সিস্টেমের জন্য অপরিহার্য।

Content added By
Promotion

Are you sure to start over?

Loading...