টাকা কোথায় গেল? এই ভয়ঙ্কর সমস্যার সমাধান হলো ACID — প্রতিটা database ব্যবহার করে, অথচ বেশিরভাগ developer জানে না কীভাবে।
এই slide শেষে তুমি বুঝবে কেন bank, বিকাশ, শপিং সাইট সব ACID ব্যবহার করে — এবং তোমার code-এও কীভাবে ব্যবহার করবে।
রহিম ৫০০০ টাকা করিমকে পাঠাচ্ছে। এই কাজে database-এ দুটো কাজ হবে: রহিমের account থেকে কমাও, করিমের account-এ যোগ করো। এখন মাঝখানে যদি server crash করে?
PostgreSQL, MySQL — সব production database এই ৪টা নিয়ম মেনে চলে। এগুলো না থাকলে কোনো financial system চলত না।
জাবেরের account-এ আছে ১০০ টাকা। সে ১৫০ টাকার জিনিস কিনতে চায়। নিয়ম হলো: balance কখনো শূন্যের নিচে যেতে পারবে না।
Database নিজেই নিয়মের রক্ষক। Developer ভুল করলেও, database নিয়ম মানাবে। এটাই Consistency-র শক্তি।
শেষ ১টা আইফোন কিনছে — টাকা কাটা শুরু হয়েছে, কিন্তু এখনো commit হয়নি
একই সময়ে সেই আইফোনটা দেখছে — এখনো আছে কিনা?
PostgreSQL default: Read Committed। বেশিরভাগ ক্ষেত্রে এটাই যথেষ্ট। Payment-এ Repeatable Read ব্যবহার করো।
হাচান রাত ১১টায় order দিল। Database বলল "success" — "Transaction committed!" এর ৩ সেকেন্ড পরে server crash হলো। সকালে server চালু হলে — হাচানের order কি থাকবে?
PostgreSQL প্রতিটা change disk-এ WAL file-এ লেখে commit করার আগেই। Server crash হলে WAL দেখে exact কোথায় থামা হয়েছিল তা জানে এবং recover করে।
রোজ হাজার হাজার মানুষের টাকা হারিয়ে যেত। Transfer fail হলে টাকা কোথাও না কোথাও আটকে থাকত। দেশে financial chaos।
একটা product ১০০০ জন একসাথে কিনতে পারত। Stock ০টা হলেও বিক্রি হত। দোকান দেউলিয়া।
বিদ্যুৎ গেলে সব data হারিয়ে যেত। Hospital patient record নেই। School result নেই। পুরো digital world অবিশ্বাসযোগ্য।
ACID শুধু একটা technical concept না — এটাই digital trust-এর ভিত্তি।
Rule of thumb: একাধিক table পরিবর্তন হলে সবসময় $transaction ব্যবহার করো।
Stock check করলে বাইরে, কেনাকাটা transaction-এর ভেতরে। মাঝখানে অন্য কেউ কিনে ফেলতে পারে।
Transaction-এর ভেতরে API call করা। Lock ধরে রাখলে অন্যরা block হয়। ২০০ms-এর বেশি = সমস্যা।
Transaction error ধরা না হলে user জানবে না কী হয়েছে। সবসময় try-catch দাও।
Financial transaction-এ Read Committed যথেষ্ট না হতে পারে। Serializable অনেক slow। Repeatable Read সাধারণত best choice।
ACID মানলে তোমার app-এ রহিমের টাকা কখনো হারাবে না, করিম সবসময় পাবে, জাবেরের data safe থাকবে, হাচান রাতে order দিলে সকালে পাবে। ✅