Transaction Management API হল Hazelcast-এ ডিস্ট্রিবিউটেড ডেটা অপারেশনগুলিকে অ্যাটমিক, কনসিসটেন্ট, আইসোলেটেড, এবং ডিউরেবল (ACID) করতে ব্যবহৃত একটি ফিচার। এটি ব্যবহারকারীদের একাধিক ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারে একযোগে অপারেশন করার অনুমতি দেয়, যেখানে সমস্ত অপারেশন একসাথে সফল হলে commit করা হয় এবং যদি কোনো সমস্যা ঘটে, তবে সমস্ত অপারেশন rollback করা হয়। এটি ডেটার অখণ্ডতা এবং সিস্টেমের সঠিকতা নিশ্চিত করে।
Hazelcast Transaction Management API আপনাকে distributed transactions পরিচালনা করার জন্য একটি শক্তিশালী পদ্ধতি প্রদান করে। আপনি একাধিক ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারে (যেমন IMap, IQueue, IList, ISet) ট্রানজেকশন পরিচালনা করতে পারেন।
Hazelcast Transaction Management এর মৌলিক ধারণা
Hazelcast এর Transaction Management API ACID (Atomicity, Consistency, Isolation, Durability) প্রিন্সিপলের উপর ভিত্তি করে কাজ করে, যাতে ডিস্ট্রিবিউটেড সিস্টেমের মধ্যে ডেটা অপারেশনগুলো নিরাপদ এবং সঠিকভাবে সম্পন্ন হয়। এখানে কিছু মৌলিক ধারণা দেওয়া হলো:
- Atomicity: একটি ট্রানজেকশনের সব অপারেশন একসাথে সফল না হলে, সেগুলি বাতিল করা হয়।
- Consistency: ট্রানজেকশন সম্পন্ন হলে ডেটা সিস্টেমের সঠিক অবস্থায় থাকে।
- Isolation: একাধিক ট্রানজেকশন একে অপরের উপর প্রভাব ফেলতে পারে না।
- Durability: ট্রানজেকশন সফলভাবে শেষ হলে, ডেটা সার্বিকভাবে সিস্টেমে স্থায়ী হয়।
Transaction Management API ব্যবহার করার প্রক্রিয়া
Hazelcast-এ ট্রানজেকশন ব্যবহারের জন্য প্রথমে TransactionContext তৈরি করতে হয়, এবং তারপর ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারে ট্রানজেকশন অপারেশন পরিচালনা করা হয়। নিচে একটি উদাহরণ দেয়া হলো যেখানে IMap ডেটা স্ট্রাকচারে ট্রানজেকশন পরিচালনা করা হয়েছে।
ধাপ ১: ট্রানজেকশন কনফিগারেশন
Hazelcast-এ ট্রানজেকশন ব্যবহারের জন্য আপনাকে TransactionManager কনফিগার করতে হবে। এটি আপনার সিস্টেমে ট্রানজেকশন পরিচালনার জন্য একটি সেন্ট্রাল ম্যানেজার হিসেবে কাজ করবে।
Config config = new Config();
TransactionConfig transactionConfig = new TransactionConfig();
transactionConfig.setTransactionTimeToLive(5000); // Timeout for transaction
config.setTransactionConfig(transactionConfig);
HazelcastInstance hz = Hazelcast.newHazelcastInstance(config);
এখানে, transactionTimeToLive সেট করার মাধ্যমে আপনি ট্রানজেকশনের জন্য একটি সময়সীমা নির্ধারণ করতে পারেন। যদি এই সময়সীমার মধ্যে ট্রানজেকশন সম্পন্ন না হয়, তবে তা স্বয়ংক্রিয়ভাবে বাতিল হয়ে যাবে।
ধাপ ২: ট্রানজেকশন শুরু করা এবং ডেটা অপারেশন সম্পন্ন করা
Hazelcast এর TransactionContext ক্লাস ব্যবহার করে আপনি ট্রানজেকশন শুরু করতে পারেন এবং এরপর ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারগুলোতে নিরাপদে অপারেশন করতে পারবেন।
TransactionContext context = hz.getTransaction();
context.beginTransaction(); // Start a transaction
IMap<String, String> map = hz.getMap("myMap");
// Performing transaction operations
map.put("key1", "value1");
map.put("key2", "value2");
context.commitTransaction(); // Commit the transaction
এখানে:
beginTransactionট্রানজেকশন শুরু করে।- IMap এর উপর অপারেশন করা হয়, যেমন
putঅপারেশন। commitTransactionট্রানজেকশন সফল হলে এটি কার্যকর করে, অর্থাৎ ডেটা সেভ হয়ে যাবে।
ধাপ ৩: ট্রানজেকশন রোলব্যাক করা
যদি ট্রানজেকশনের কোনো অংশে সমস্যা হয়, তবে আপনি পুরো ট্রানজেকশনটি রোলব্যাক করতে পারেন।
try {
context.beginTransaction();
IMap<String, String> map = hz.getMap("myMap");
map.put("key1", "value1");
map.put("key2", "value2");
// Simulate some failure
if (someConditionFails()) {
throw new RuntimeException("Transaction failed");
}
context.commitTransaction(); // Commit if everything is successful
} catch (Exception e) {
context.rollbackTransaction(); // Rollback if any exception occurs
System.out.println("Transaction rolled back due to: " + e.getMessage());
}
এখানে, যদি কোনো সমস্যা ঘটে (যেমন someConditionFails ফাংশন), তাহলে rollbackTransaction কল করা হবে, যার মাধ্যমে সমস্ত ডেটা পরিবর্তন বাতিল হয়ে যাবে।
Hazelcast Transaction Management API এর কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য
- Distributed Transactions: Hazelcast একাধিক ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারের মধ্যে ট্রানজেকশন পরিচালনা করতে সক্ষম।
- Transaction Timeout: ট্রানজেকশন একটি নির্দিষ্ট সময়সীমার মধ্যে সম্পন্ন না হলে তা অটোমেটিক রোলব্যাক হয়ে যাবে।
- Isolation Level: Hazelcast ট্রানজেকশনের জন্য read committed এবং serializable isolation levels সমর্থন করে।
- Transactional Data Structures: Hazelcast এর IMap, IList, IQueue, ISet ইত্যাদি ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারগুলির উপর ট্রানজেকশন পরিচালনা করা যায়।
সারাংশ
Hazelcast Transaction Management API ডিস্ট্রিবিউটেড সিস্টেমে ACID প্রিন্সিপল অনুসরণ করে ডেটার নিরাপত্তা এবং সঠিকতা নিশ্চিত করতে ব্যবহৃত হয়। এটি আপনাকে distributed transactions পরিচালনা করতে এবং একাধিক ডেটা স্ট্রাকচারে অ্যাটমিক অপারেশন সম্পন্ন করতে সহায়তা করে। ট্রানজেকশন কনফিগারেশন, commit, rollback অপারেশনগুলি এবং exception handling এর মাধ্যমে আপনি সিস্টেমের মধ্যে ডেটার সঠিকতা এবং একনিষ্ঠতা বজায় রাখতে পারবেন।
Read more