ডাটাবেস কনসিস্টেন্সি কী?
ডাটাবেস কনসিস্টেন্সি মানের একটি সেট দ্বারা সংজ্ঞায়িত হয় যা ডাটাবেস সিস্টেম-এর মধ্যে সকল ডেটা পয়েন্টের সাথে অ্যালাইন করতে হবে সঠিকভাবে পড়া এবং স্বীকার করার জন্য। যদি কোনো ডেটা প্রিকন্ডিশন্ড মানগুলো মেট না করে ডাটাবেসে প্রবেশ করে, তবে এটি ডেটাসেটের জন্য কনসিস্টেন্সি এরর ফলাফল দেয়। ডাটাবেস কনসিস্টেন্সি নিয়ম তৈরি করে অর্জন করা হয়। ডাটাবেসে লিখা যেকোনো ডেটা ট্রানজেকশন শুধু প্রভাবিত ডেটা পরিবর্তন করতে পারে যেটি নির্দিষ্ট কনস্ট্রেইন্টস, ট্রিগার, ভেরিয়েবল, ক্যাসকেড, ইত্যাদি দ্বারা ডিফাইন করা হয়, যা ডাটাবেসের ডেভেলপার দ্বারা সেট করা নিয়মগুলোর দ্বারা প্রতিষ্ঠিত।
উদাহরণস্বরূপ, ধরা যাক আপনি ন্যাশনাল ট্রাফিক সেফটি ইনস্টিটিউট (NTSI)-এর জন্য কাজ করেন। আপনাকে ক্যালিফোর্নিয়ার নতুন ড্রাইভিং লাইসেন্সের একটি ডাটাবেস তৈরি করার দায়িত্ব দেওয়া হয়েছে। ক্যালিফোর্নিয়ার জনসংখ্যা গত দশ سالে বেড়েছে, সকল প্রথম-বারের ড্রাইভিং লাইসেন্স ধারকদের জন্য একটি নতুন অ্যালফাবেট এবং न्यুমেরিক্যাল ফরম্যাট তৈরি করার প্রয়োজন পড়েছে। আপনার টিম নির্ধারণ করেছে যে আপনার ডাটাবেসে ক্যালিফোর্নিয়া ড্রাইভিং লাইসেন্সের নতুন সেট মান হবে: ১ অ্যালফা + ৭ নিউমেরিক। প্রতিটি এন্ট্রি এখন এই নিয়ম মেনে চলে। একটি এন্ট্রি যা পড়ে "C08846024" – সেটি এরর রিটার্ন করবে। কেন? কারণ ইনপুট করা মান ছিল ১ অ্যালফা + ৮ নিউমেরিক, যা মূলত ইনকনসিস্টেন্ট ডেটার একটি রূপ।
কনসিস্টেন্সি এছাড়া ইমপ্লাই করে যে যেকোনো একটি নির্দিষ্ট অবজেক্টে এক টেবিলে ডেটা পরিবর্তন হলে, সেটি অবশ্যই অন্যান্য সব টেবিলে পরিবর্তন করতে হবে যেখানে সে অবজেক্ট উপস্থিত। ড্রাইভিং লাইসেন্স উদাহরণটি চালিয়ে যাই, নতুন ড্রাইভারের হোম অ্যাড্রেস পরিবর্তন হলে, সেই আপডেটটি অবশ্যই সকল টেবিলে প্রতিফলিত হতে হবে যেখানে সে পূর্বের অ্যাড্রেস ছিল। যদি একটি টেবিলে পুরনো অ্যাড্রেস থাকে এবং বাকি সবতে নতুন অ্যাড্রেস, তবে সেটি ডেটা ইনকনসিস্টেন্সির একটি চমৎকার উদাহরণ।
দ্রষ্টব্য: ডাটাবেস কনসিস্টেন্সি গ্যারান্টি দেয় না যে যেকোনো ট্রানজেকশনে পরিচিত ডেটা সঠিক। এটি শুধু গ্যারান্টি দেয় যে সিস্টেমের মধ্যে লেখা এবং পড়া ডেটা ডাটাবেসে এন্ট্রির যোগ্য ডেটার সকল পূর্বশর্ত মেট করে। সহজ কথায়, উপরের উদাহরণ অনুযায়ী, আপনি খুব ভালো একটি ডেটা ট্রানজেকশন এন্টার করতে পারেন যা ১ অ্যালফা + ৭ নিউমেরিক নিয়ম মেট করে, কিন্তু এটি গ্যারান্টি দেয় না যে ডেটা একটি আসল ড্রাইভিং লাইসেন্সের সাথে মিলে। ডাটাবেস কনসিস্টেন্সি ডেটা কী প্রতিফলিত করে সেটি হিসাব নही, শুধু এর ফরম্যাট।
কেন ডাটাবেস কনসিস্টেন্সি গুরুত্বপূর্ণ?
কনসিস্টেন্ট ডেটা হলো যা একটি ডাটাবেসকে একটি ভালো তেলানো মেশিনের মতো চলে রাখে। প্রতিষ্ঠিত নিয়ম/মান যেগুলো ইনকনসিস্টেন্ট ডেটা বাদ রাখে প্রাইমারি ডাটাবেস এবং রেপ্লিকাগুলো থেকে এর অপারেশন স্মুথ রাখে:
- সঠিকতা
- বাড়তি ডাটাবেস স্পেস
- দ্রুত এবং আরও দক্ষ ডেটা রিট্রিভাল
ডাটাবেস কনসিস্টেন্সি সকল ইনকামিং ডেটা রেগুলেট করে। সুতরাং যদিও ডাটাবেস নতুন ডেটা গ্রহণ করার সময় পরিবর্তন হয়, এটি কমপক্ষে কনসিস্টেন্টলি পরিবর্তন হয় এবং আরণ্ম্ভিক ইনstitut établie ভ্যালিডেশন নিয়ম অনুযায়ী। আজকের বিশ্বে, দৈনিক বিলিয়ন-ডলার সিদ্ধান্ত গ্লোবালি নেওয়া হয় একটি ডাটাবেসের বোঝা কনসিস্টেন্সির ওপর ভিত্তি করে। যখন রিয়েল-টাইম ইনফরমেশন আধুনিক ডিজিটাল ব্যবসার নতুন স্ট্যাটাস কো হয়ে যায়, তখন ভ্যালিডেশন নিয়ম রাখা অত্যন্ত গুরুত্বপূর্ণ যাতে ডেটাসেটটি ত্রুটিপূর্ণ তথ্য থেকে মুক্ত থাকে, কারণ সেটি ল্যাটেন্সি বাড়িয়ে দেয়, রিয়েল-টাইম এক্সপেরিয়েন্সকে আর তত রিয়েল-টাইম করে তোলে না।
ডাটাবেস কনসিস্টেন্সি উদাহরণ
রিয়েল ওয়ার্ল্ডে ডাটাবেস কনসিস্টেন্সি অপারেশনের উদাহরণ কী কী? আমরা ইতিমধ্যে আমাদের NTSI সিন্যারিও দিয়ে একটি উদাহরণ এক্সপ্লোর করেছি। চলুন ব্যাংকিং এর ওয়ার্ল্ডে পিভট করি।
ধরা যাক আপনি একটি একাউন্ট থেকে অন্য একাউন্টে ফান্ড ট্রান্সফার করছেন। আপনি সার্ভিসে ১২০০ ডলার ট্রান্সফার করেছেন যেটিতে ইতিমধ্যে ৩০০ ডলার ছিল। আপনি রিফ্রেশ করেছেন, আশাবাদী আপনি ১৫০০ ডলার ব্যালেন্স পাবেন। কিন্তু, এই সাম্প্রতিক অপারেশন আপনার ব্যালেন্সে রিফ্লেক্ট হয়নি। বরং, আপনার নতুন ব্যালেন্স এখন ০ ডলার দেখাচ্ছে। এই টেকনিক্যাল ভুল হলো উইক কনসিস্টেন্সির একটি চমৎকার উদাহরণ এবং সম্ভবত একটি ব্যাংক প্রতিনিধির সাথে সমস্যা ট্রাবলশুট করতে সময় ব্যয় হবে। এই किसমের ইস্যু একটি ব্র্যান্ডের রেপুটেশন ধ্বংস করতে পারে এবং উল্লেখযোগ্য পরিমাণ টাকা খরচ করতে পারে। ডাটাবেস সিস্টেমে স্ট্রอง কনসিস্টেন্সি ডেভেলপার এবং কনসিউমার উভয়ের জন্য অপরিহার্য হয়ে উঠছে।
স্ট্রং কনসিস্টেন্সি বনাম উইক কনসিস্টেন্সি
স্ট্রং কনসিস্টেন্সি মানে প্রাইমারি, রেপ্লিকা এবং এর সকল সংশ্লিষ্ট নোডের সকল ডেটা ভ্যালিডেশন নিয়ম মেট করে এবং যেকোনো সময় একই থাকে। স্ট্রং ডাটাবেস কনসিস্টেন্সির সাথে, এর কোনো গুরুত্ব নেই কোন ক্লায়েন্ট ডেটা অ্যাক্সেস করছে – তারা সবসময় সবচেয়ে gầnে আপডেট করা ডেটা দেখবে যা ডাটাবেসের জন্য প্রতিষ্ঠিত নিয়মগুলো ফলো করে।
উইক কনসিস্টেন্সি কিছুটা প্র 放送日 와일্ড ওয়েস্টের মতো। কোনো আশ্বাস নেই যে আপনার প্রাইমারি, রেপ্লিকা, বা নোডগুলোর ডেটা যেকোনো মুহূর্তে একই থাকে। ভারতের একটি ক্লায়েন্ট ডেটা অ্যাক্সেস করতে পারে এবং ইনফরমেশন দেখতে পারে যা ভ্যালিডেশন নিয়ম পাস করে, কিন্তু হতে পারে সেটি সবচেয়ে gầnে আপডেট করা ডেটা না, ফলস্বরূপ কনসিস্টেন্সি এরর। তারা খুব ভালো তথ্যের ওপর কাজ করতে পারেন যা আর রেলিভেন্ট নয়, যদিও একসময় সেটি হতে পারে।
কনসিস্টেন্সি লেভেল
কনসিস্টেন্সি লেভেল আরেকটি প্রিকন্ডিশন্ড মান সেট যা ডিক্টেট করে কতগুলো রেপ্লিকা বা নোড অবশ্যই নতুন অনুমোদিত ডেটা দিয়ে রেসপন্ড করতে হবে এটিকে একটি বৈধ ট্রানজেকশন হিসেবে স্বীকৃতি দেওয়ার আগে। এই অপারেশন প্রতি-ট্রানজেকশন বেসিসে পরিবর্তন করা যায়। সুতরাং, উদাহরণস্বরূপ, একজন প্রোগ্রামার ডিক্টেট করতে পারেন যে শুধু দুটি নোডকে নতুন ইনপুট ডেটা পড়তে হবে এটিকে ডেটা কনসিস্টেন্সি হিসেবে স্বীকৃতি দেওয়ার আগে। একবার সেটি ওই বারোমিটার পার করলে, এটিকে তখন থেকে কনসিস্টেন্ট ডেটা হিসেবে বিবেচনা করা হবে।
আইসোলেশন লেভেল
আইসোলেশন লেভেল একটি ডাটাবেসের ACID (Atomicity, Consistency, Isolation, Durability) প্রপার্টির অংশ। ACID ডাটাবেস কনসিস্টেন্সির একটি ফাউন্ডেশনাল কনসেপ্ট SQL ডাটাবেসের সাথে এবং সেটি হলো যা কিছু ডাটাবেস ফলো করে ডাটাবেস কনসিস্টেন্সি অপ্টিমাইজ করতে। আইসোলেশন ACID-এর প্রপার্টির একটি, এবং এটি একটি নির্দিষ্ট ডাটাবেস নেটওয়ার্কের সকল তথ্য থেকে ডেটার নির্দিষ্ট অংশ কম্পার্টমেন্টালাইজ করে, অন্য ইউজার ট্রানজেকশন দ্বারা মডিফাই হয়া থেকে রক্ষা করে। আইসোলেশন কনকারেন্ট ট্রানজেকশনে উৎপন্ন অনাবশ্যক ডেটার রিড এবং রাইট কমানো জন্য ব্যবহার করা হয়।
আইসোলেশন লেভেল চার ধরনের:
- Read Uncommitted: নিম্নতম লেভেল। সারি আপডেট বন্ধ করে যদি আগের ট্রানজেকশন সেই সারিতে একটি অনকমিটেড আপডেট দিয়েছে।
- Read Committed: এটি "ডার্টি রিড" অনুমতি দেয় না। এটি যেকোনো রিড বা রাইট ব্লক করে যদি একটি ট্রানজেকশন ইতিমধ্যে আপডেট করা আছে, কিন্তু এখনো কমিট করা নেই।
- Repeatable Read: এই লেভেল যে সারি ডেটা পড়া হচ্ছে সেটিকে এক্সেস করা এবং সম্ভাব্য আপডেট হওয়া থেকে রক্ষা করে।
- Serializable: সর্বোচ্চ আইসোলেশন লেভেল, সিরিয়ালাইজেবল সাধারণত একটি পুরো টেবিল লক করে একটি নির্দিষ্ট সারির পরিবর্তে।
ডাটাবেস কনসিস্টেন্সি FAQ
ডেটা কনসিস্টেন্ট মানে কী?ডেটা কনসিস্টেন্ট যদি সেটি সকল সংশ্লিষ্ট নোডে একই সময়ে একই দেখায়, ব্যবহারকারী কে এবং সে কোথা থেকে ডেটা অ্যাক্সেস করছে সেটি geografically নির্বিশেষে।
কি ডেটা কনসিস্টেন্সি এবং ডাটাবেস কনসিস্টেন্সি একই জিনিস?না। ডাটাবেস কনসিস্টেন্সি ডেটা নেটওয়ার্কে এন্টার করার জন্য ভ্যালিডেশন নিয়ম চায় যাতে সেটি ফর্মুলা-ওয়াইজ কনসিস্টেন্ট থাকে টেবিলের অন্যান্য সকল ডেটার সাথে।
ডেটা কনসিস্টেন্সি হলো প্রসেস যাতে ডেটা যতটা সম্ভব ইউনিফর্ম রাখা যায় নেটওয়ার্ক জুড়ে এবং সেসব ডেটা ব্যবহারকারী অনেক অ্যাপ্লিকেশন দিয়ে।
ইভেনচুয়াল কনসিস্টেন্সির সাথে, ডেটা যেটি একটি আপডেট 겪েছে সেটি শেষ পর্যন্ত সকল নোডে রিফ্লেক্ট হবে যেখানে সে ডেটা সংরক্ষিত। শেষ পর্যন্ত সকল নোড একই ডেটা প্রডিউস করবে যখনই যেকোনো ক্লায়েন্ট সেটি নেটওয়ার্কের মাধ্যমে অ্যাক্সেস করে ইভেনচুয়াল কনসিস্টেন্সির মাধ্যমে।
একটি রিলেশনাল ডাটাবেসের একটি সিঙ্গেল টেবিল składa থাকতে?একটি রিলেশনাল ডাটাবেসের সকল ডেটা টেবিলে সংরক্ষিত থাকে, যেগুলো সারি এবং কলাম নিয়ে গঠিত। ডেটা পয়েন্টগুলো এই সারি এবং কলামে সংগঠিত থাকে। সারিগুলো, যেগুলো প্রায়শই "রেকর্ড" বলা হয়, সাধারণত ডেটার ক্যাটাগরি প্রতিনিধিত্ব করে, যখন কলাম বা "ফিল্ড", "ইনস্ট্যান্স"-এর প্রতিনিধিত্ব করে। একটি টেবিল একটি ডাটাবেসের মধ্যে পাওয়া যায় এবং সাবজেক্ট-ভিত্তিক ডিজাইন দিয়ে আপনার ডেটা রিডান্ড্যান্সি থেকে বাঁচায়।
একটি রিলেশনাল ডাটাবেস składa থাকতে?টেবিল
ACID মডেল BASE মডেলের সাথে কীভাবে তুলনা করে?ACID এবং BASE (Basically Available, Soft State, Eventually Consistent) মডেলের মূল পার্থক্য হলো যখন ACID ডাটাবেস কনসিস্টেন্সি অপ্টিমাইজ করার জন্য কাজ করে, BASE হাই অভেইলেবিলিটি শক্তিশালী করে। ACID ট্রানজেকশন কনসিস্টেন্ট রাখে, তাই আপনি যদি BASE মডেল যান, নিশ্চিত করুন যে কনসিস্টেন্সি সার্বোপরি প্রায়োরিটি এবং ভালোভাবে অ্যাড্রেস করা হয়েছে।
কি রেডিস ডাটাবেস কনসিস্টেন্ট?যখন রেডিস ক্যাশ হিসেবে ব্যবহার করা হয়, তখন কনসিস্টেন্সি প্রশ্নটি হতে পারে রেডিস ইনস্ট্যান্সের মধ্যে (প্রাইমারি/রেপ্লিকা) এবং রেডিস ক্যাশ এবং রেডিস প্রাইমারি ডাটাবেসের মধ্যে। এই উদাহরণে, ডেটা ইনকনসিস্টেন্ট হতে পারে যদি সেই দুটির মধ্যে ডেটা মেলে না। আমাদের ব্লগ, Three Ways to Maintain Cache Consistency, এই সমস্যা কীভাবে সমাধান করা যায় সেটি অ্যাড্রেস করে।
ওপেন সোর্স রেডিসের জন্য, উইক কনসিস্টেন্সি রয়েছে, কিন্তু রেডিস এন্টারপ্রাইজের Active–Active জিও-ডিস্ট্রিবিউশন স্ট্রอง ইভেনচুয়াল কনসিস্টেন্সি প্রদান করে।
এন্টারপ্রাইজ অ্যাপ্লিকেশনের জন্য ক্লাউড ক্যাশিং টেকনিকস সম্পর্কে আগ্রহী? নিচে ক্লিক করুন Lee Atchison-এর Caching at Scale with Redis পড়তে।