Key-Value Store কী?

Key-Value Store (KVS) হলো একটি নোএসকিউএল ডাটাবেস যেখানে ডাটা সংরক্ষণ করা হয় কী-ভ্যালু জোড় আকারে। এটি একটা বিশাল ডিকশনারির মতো – আপনি একটি কী (যেমন: user:101) দিলে সেটার বিপরীতে ভ্যালু (যেমন: {"নাম": "রহিম", "ইমেইল": "rahim@example.com"}) পেয়ে যান।

সহজ ভাষায়: আপনার ফোনের কন্ট্যাক্ট লিস্টের মতো। আপনি নাম (কী) দিয়ে ফোন নম্বর (ভ্যালু) খুঁজে পান। এর বেশি কিছু না – খুব সরল, খুব দ্রুত।

মূল বৈশিষ্ট্য

বৈশিষ্ট্য ব্যাখ্যা
কী ইউনিক আইডেন্টিফায়ার (স্ট্রিং, ইন্টিজার, ইত্যাদি)
ভ্যালু ব্লব, JSON, স্ট্রিং, সংখ্যা – কিছুই হতে পারে
অপারেশন GET, SET, DELETE – খুবই সীমিত কিন্তু অত্যন্ত দ্রুত
ইন্ডেক্সিং শুধু প্রাইমারি কী-তে। সেকেন্ডারি ইন্ডেক্স নেই (বেশিরভাগ ক্ষেত্রে)

কেন Key-Value Store ব্যবহার করবেন?

  • দ্রুত পারফরম্যান্স – O(1) সময়ে ডাটা পড়া/লেখা যায় (হ্যাশ টেবিলের মতো)।
  • সহজ স্কেলেবিলিটি – শার্ডিং অত্যন্ত সহজ (কী-র হ্যাশ অনুযায়ী)।
  • সাধারণ মডেল – শিখতে ও ব্যবহার করতে ৫ মিনিট সময় লাগে।
  • হাই থ্রুপুট – সেকেন্ডে লক্ষাধিক রিকোয়েস্ট হ্যান্ডেল করতে পারে (Redis যেমন)।

বাস্তব উদাহরণ

  • ক্যাশিং – সবচেয়ে জনপ্রিয় ব্যবহার। বারবার পড়া ডাটা ক্যাশে রাখা (Redis, Memcached)।
  • সেশন স্টোর – ইউজারের লগইন সেশন সংরক্ষণ (যেমন: session_id → user_data)।
  • লিডারবোর্ড – গেমের স্কোরবোর্ড (Redis Sorted Set)।
  • কনফিগারেশন স্টোর – অ্যাপ্লিকেশনের সেটিংস (যেমন: "max_connections" → "500")।
  • ডিস্ট্রিবিউটেড লক – একাধিক সার্ভারের মধ্যে সিঙ্ক্রোনাইজেশন (Redis SETNX)।

জনপ্রিয় Key-Value Stores

সিস্টেম টাইপ প্রধান ফিচার কখন ব্যবহার করবেন
Redis ইন-মেমরি ডাটা স্ট্রাকচার (স্ট্রিং, লিস্ট, সেট, হ্যাশ) ক্যাশ, সেশন, রিয়েল-টাইম লিডারবোর্ড
Memcached ইন-মেমরি শুধু স্ট্রিং কী-ভ্যালু, খুব সরল সাধারণ ক্যাশিং
Amazon DynamoDB ডিস্ক-ভিত্তিক ম্যানেজড, অটো স্কেলিং, স্ট্রং কনসিসটেন্সি মিশন-ক্রিটিক্যাল প্রোডাকশন সিস্টেম
Riak ডিস্ক-ভিত্তিক উচ্চ অ্যাভেইলেবিলিটি, কনফ্লিক্ট রেজোলিউশন টেলকো, ব্যাংকিং (AP সিস্টেম)
Etcd ডিস্ক-ভিত্তিক কনসিসটেন্সি (Raft অ্যালগরিদম) কুবারনেটিস, কনফিগারেশন শেয়ারিং

ডাটা মডেল: অন্যান্য ডাটাবেসের সাথে তুলনা

SQL (রিলেশনাল):        টেবিল → রো → কলাম
Document Store:         JSON ডকুমেন্ট → ফিল্ড
Key-Value Store:        কী → ভ্যালু (যেকোনো কিছু)

Key-Value Store সবচেয়ে সরল। এতে কোনো স্কিমা নেই, কোনো জয়েন নেই, কোনো ফরেন কী নেই। শুধু GET(key) আর SET(key, value)

কী-র ডিজাইন কৌশল

ভালো কী ডিজাইন করলে অনেক সুবিধা পাওয়া যায়:

প্যাটার্ন উদাহরণ ব্যাখ্যা
নেমস্পেস user:1001:profile ইউজার ১০০১-এর প্রোফাইল
রিভার্স টাইমস্ট্যাম্প order:202312051430:12345 সময় অনুযায়ী সাজানো যায়
হায়ারার্কিক্যাল app:module:feature:key সম্পর্কিত ডাটা গ্রুপিং
কম্পোজিট কী cart:user123:item456 রিলেশন তৈরি

ট্রেড-অফ: ইন-মেমরি বনাম ডিস্ক-ভিত্তিক

দিক ইন-মেমরি (Redis, Memcached) ডিস্ক-ভিত্তিক (DynamoDB, RocksDB)
লেটেন্সি মাইক্রোসেকেন্ড মিলিসেকেন্ড
পার্সিসটেন্সি ঐচ্ছিক (স্ন্যাপশট/এওএফ) সবসময় (ডিস্কে লেখা)
ক্যাপাসিটি RAM দ্বারা সীমিত ডিস্ক দ্বারা সীমিত (সস্তা)
খরচ বেশি (RAM দামি) কম
ব্যবহার ক্যাশ, রিয়েল-টাইম প্রাইমারি স্টোরেজ

ক্যোয়ারির ক্ষমতা: সীমাবদ্ধতা বুঝুন

Key-Value Store ভ্যালুর ভিতরে ক্যোয়ারি করতে পারে না। যেমন:

আপনি করতে পারবেন:   GET("user:1001") 
আপনি পারবেন না:     সবার ভ্যালু থেকে "ঢাকা" খোঁজা 
আপনি পারবেন না:     বয়স ৩০-এর বেশি সব ইউজার বের করা

সমাধান: সেকেন্ডারি ইন্ডেক্সের জন্য সেপারেট কী-ভ্যালু স্টোর বা সার্চ ইঞ্জিন (Elasticsearch) ব্যবহার করুন।

কখন Key-Value Store ব্যবহার করবেন (না করবেন)?

ব্যবহার করবেন:

  • ক্যাশিং
  • সেশন ম্যানেজমেন্ট
  • রিয়েল-টাইম লিডারবোর্ড
  • কনফিগারেশন স্টোর
  • ডিস্ট্রিবিউটেড লক

ব্যবহার করবেন না:

  • জটিল ক্যোয়ারি (JOIN, GROUP BY) দরকার হলে → SQL নিন
  • ফুল-টেক্সট সার্চ লাগলে → Elasticsearch নিন
  • রিলেশনশিপপূর্ণ ডাটা থাকলে → গ্রাফ ডাটাবেস বা SQL নিন
  • বড় রেঞ্জ ক্যোয়ারি লাগলে → সোর্টেড কীস সমর্থন করে এমন KVS (যেমন: RocksDB) বা SQL নিন

জনপ্রিয় ক্লাউড ম্যানেজড সার্ভিস

প্রোভাইডার সার্ভিস হাইলাইট
AWS ElastiCache (Redis/Memcached) ম্যানেজড, অটো ফেইলওভার
AWS DynamoDB সার্ভারলেস, সিঙ্গেল ডিজিট মিলিসেকেন্ড লেটেন্সি
Google Cloud Memorystore Redis-কম্প্যাটিবল
Azure Cache for Redis ফুল ম্যানেজড
Share