Idempotency হল এমন একটি Property, যেখানে একটি Operation একাধিকবার Execute করলেও Output (বা System এর Final State) একই থাকে। API, Distributed System ও Database এ Data Consistency এবং Reliability বজায় রাখতে এটি গুরুত্বপূর্ণ ভূমিকা পালন করে।
Idempotency কেন দরকার?
Duplicate Effect কমাতে: একই API বারবার Call করলেও যেন Data Corruption বা Unintended Side Effect না হয়।
Network Failure Handle করতে: Request Retry হলেও যেন Data Duplicate না হয়।
System Reliability বাড়াতে: Client Retry করলেও System যেন একবার Execute হওয়ার মতোই Behave করে।
Idempotency এর উদাহরণ
১. HTTP Methods & Idempotency
HTTP Method | Idempotent? | ব্যাখ্যা |
|---|---|---|
GET | Yes | Data Fetch করলে System এর কোনো পরিবর্তন হয় না। |
PUT | Yes | একই Data দিয়ে একাধিকবার Update করলেও Final Result একই থাকে। |
DELETE | Yes | একবার Delete হওয়ার পর আবার Delete করলে System এ Extra কোনো Effect পড়ে না। |
POST | No | প্রতিবার নতুন Data Create হয়, তাই এটি Idempotent নয়। |
২. Database Operations
-- Not Idempotent: Running this multiple times will insert multiple rows
INSERT INTO users (name, email) VALUES ('Alice', 'alice@domain.com');
-- Idempotent: Running this multiple times will yield the same result
UPDATE users SET email = 'alice@domain.com' WHERE id = 42;৩. Payment Processing
Idempotent না হলে: User একই API বারবার Call করলে একাধিকবার Payment হয়ে যেতে পারে।
Idempotent হলে: Transaction ID বা Idempotency Key ব্যবহার করে নিশ্চিত করা হয় যে একই Request একবারের বেশি Process হবে না।
Idempotency Implement করার উপায়
১. Idempotency Key ব্যবহার করুন
প্রতিটি Request এর জন্য একটি Unique Identifier (Transaction ID বা UUID) ব্যবহার করুন।
যে Request আগেই Process হয়েছে, তার জন্য একই Response Return করুন।
২. Database Constraint দিন
UNIQUEConstraint ব্যবহার করে Duplicate Data Insert আটকান।
৩. Cache ব্যবহার করুন
আগে Process হওয়া Request গুলো Cache এ রেখে Duplicate Execution আটকানো যায়।
৪. Safe API Design করুন
যেখানে সম্ভব
POSTএর বদলেPUTব্যবহার করুন, কারণPUTস্বভাবতই Idempotent।
Idempotency হল System এর Consistency, Fault Tolerance এবং Reliability নিশ্চিত করার একটি মূল Principle। API, Database ও Distributed System এ এটি Follow করলে System আরও Robust ও Secure হয়।