MongoDB তে Sharding ব্যবহার করা হয় যখন ডেটাবেসের আকার খুব বড় হয়ে যায় এবং একক সার্ভার বা স্টোরেজ সিস্টেমের মধ্যে সমস্ত ডেটা রাখা সম্ভব হয় না। Sharding MongoDB তে ডেটার একটি বড় অংশকে একাধিক সার্ভারে ভাগ করে ডেটাবেসের পারফরম্যান্স এবং স্কেলেবিলিটি উন্নত করে। MongoDB তে Sharding একটি ডিস্ট্রিবিউটেড ডেটাবেস আর্কিটেকচার তৈরি করে, যেখানে ডেটা শার্ড বা অংশে বিভক্ত থাকে এবং ডেটাবেসের সব তথ্য সার্ভারে সমানভাবে বিতরণ করা হয়।
Sharding Cluster তৈরি এবং ম্যানেজমেন্টের জন্য MongoDB তে কয়েকটি প্রধান উপাদান থাকে:
- Shards: মূল ডেটা স্টোর। প্রতিটি শার্ড MongoDB এর একটি স্বাধীন সার্ভার বা ক্লাস্টার।
- Config Servers: শার্ড ক্লাস্টারের কনফিগারেশন এবং মেটাডেটা পরিচালনা করে। MongoDB তে তিনটি কনফিগারেশন সার্ভার রাখা হয়।
- Mongos: একটি রাউটিং উপাদান, যা ক্লায়েন্ট রিকুয়েস্ট শার্ডে রিডিরেক্ট করে এবং ডেটা পরিচালনার জন্য শার্ডগুলির সাথে যোগাযোগ করে।
Sharding Cluster তৈরি করার ধাপ
1. Shard Servers (Shards) তৈরি
প্রথমে শার্ড সার্ভারগুলি প্রস্তুত করতে হবে। প্রতিটি শার্ড একটি MongoDB ইন্সট্যান্স বা ক্লাস্টার হবে। শার্ড সার্ভারগুলি MongoDB Replica Set হতে পারে, যা ডেটার রেডানডেন্স এবং হাই অ্যাভেইলেবিলিটি নিশ্চিত করে।
Shard Servers তৈরি করার জন্য কমান্ড:
mongod --shardsvr --replSet shard1 --port 27018 --dbpath /data/shard1 --bind_ip localhost
উপরের কমান্ডটি MongoDB সার্ভারের জন্য --shardsvr অপশনটি ব্যবহার করে শার্ড সার্ভার সেটআপ করবে এবং এটি Replica Set এর অংশ হবে। একাধিক শার্ড সার্ভার তৈরি করতে হবে এবং প্রতিটি সার্ভারের জন্য আলাদা --port ব্যবহার করতে হবে।
2. Config Servers তৈরি
Config servers MongoDB শার্ড ক্লাস্টারের মেটাডেটা এবং কনফিগারেশন তথ্য সংরক্ষণ করে। MongoDB তে ৩টি config server সাধারণত ব্যবহার করা হয়।
Config Servers তৈরি করার জন্য কমান্ড:
mongod --configsvr --replSet configReplSet --port 27019 --dbpath /data/configdb --bind_ip localhost
Config servers তৈরির পর, MongoDB Replica Set হিসেবে কনফিগার করা হয়, যাতে এটি ডেটাবেসের কনফিগারেশন এবং শার্ড ডেটা সম্পর্কে তথ্য সিঙ্ক্রোনাইজ করতে পারে।
3. Mongos (Router) ইনস্টল এবং কনফিগার করা
Mongos একটি রাউটার যা ক্লায়েন্ট রিকুয়েস্টগুলি শার্ড সার্ভারে রিডিরেক্ট করে। একাধিক mongos ইনস্ট্যান্স ব্যবহার করা যেতে পারে।
Mongos ইনস্টল এবং কনফিগার করার জন্য কমান্ড:
mongos --configdb configReplSet/localhost:27019 --port 27017
এটি Mongos রাউটার তৈরি করবে, যা config servers থেকে ডেটা রাউট করবে এবং ক্লায়েন্ট রিকুয়েস্টগুলি সঠিক শার্ডে পাঠাবে।
4. Shard Cluster সংযুক্ত করা
একবার শার্ড সার্ভার, config servers এবং mongos রাউটার তৈরি হলে, আপনাকে শার্ডগুলিকে ক্লাস্টারে সংযুক্ত করতে হবে। প্রথমে MongoDB ক্লাস্টারের config server কে প্রাথমিক config replica set হিসেবে কনফিগার করতে হবে।
MongoDB Replica Set এ শার্ড যোগ করার জন্য কমান্ড:
sh.addShard("shard1/localhost:27018")
sh.addShard("shard2/localhost:27019")
এখানে "shard1" এবং "shard2" শার্ড সার্ভারের নাম, এবং localhost:27018, localhost:27019 এ শার্ড সার্ভারের পোর্ট। এটি শার্ড সার্ভারকে MongoDB ক্লাস্টারে যোগ করবে।
5. Shard Key নির্বাচন
MongoDB তে শার্ডিং কাজ করার জন্য একটি shard key প্রয়োজন। Shard key হল সেই ফিল্ড, যার মাধ্যমে MongoDB ডেটাকে বিভিন্ন শার্ডে ভাগ করে দেয়। এটি ডেটার সমানভাবে বিতরণ এবং কুয়েরি অপারেশনগুলির পারফরম্যান্স উন্নত করতে সাহায্য করে।
Shard key নির্বাচনের সময় কিছু বিষয় বিবেচনা করা জরুরি, যেমন:
- নমনীয়তা: ডেটার অধিকাংশ রিড এবং রাইট অপারেশন একই শার্ডে হওয়া উচিত।
- গতি: shard key এমনভাবে নির্বাচন করা উচিত যাতে ডেটা সঠিকভাবে ভাগ করা যায়।
উদাহরণস্বরূপ, একটি কালেকশনের শার্ডিং চালু করার জন্য:
sh.shardCollection("database.collection", { "field_name": 1 })
এটি field_name ফিল্ডটি ব্যবহার করে কালেকশনটি শার্ড করে।
Sharding Cluster পরিচালনা
1. Sharding ক্লাস্টার স্ট্যাটাস পরীক্ষা
MongoDB ক্লাস্টারের শার্ডিং স্ট্যাটাস পরীক্ষা করতে:
sh.status()
এটি MongoDB ক্লাস্টারের বর্তমান শার্ডিং স্ট্যাটাস এবং শার্ডগুলির অবস্থা প্রদর্শন করবে।
2. Shard Key পরিবর্তন
MongoDB তে শার্ডিং সম্পাদনার সময় শার্ড কী পরিবর্তন করা কঠিন, কারণ শার্ডিং শুরু হওয়ার পর শার্ড কী পরিবর্তন করা অনুমোদিত নয়। তবে, প্রয়োজনে কিছু নির্দিষ্ট পদ্ধতির মাধ্যমে এটি করা যেতে পারে, যেমন ডেটা রি-শার্ডিং।
3. শার্ড রিমুভ করা
MongoDB তে একটি শার্ড রিমুভ করতে:
sh.removeShard("shard1")
এটি নির্দিষ্ট শার্ডটি MongoDB ক্লাস্টার থেকে সরিয়ে ফেলবে।
সারাংশ
MongoDB তে Sharding একটি ডিস্ট্রিবিউটেড আর্কিটেকচার তৈরি করার জন্য ব্যবহৃত হয়, যা ডেটাকে বিভিন্ন শার্ড সার্ভারে ভাগ করে স্কেলেবিলিটি এবং পারফরম্যান্স বৃদ্ধি করে। MongoDB ক্লাস্টারে Shards, Config Servers, এবং Mongos এর মাধ্যমে ডেটার ভাগ করা এবং পরিচালনা করা হয়। Shard Key নির্বাচন অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি ডেটার সঠিকভাবে ভাগ করার জন্য নির্ধারিত হয়। Sharding MongoDB তে বড় পরিসরের ডেটাবেস ব্যবস্থাপনায় সহায়ক এবং এটি উচ্চ পারফরম্যান্স প্রদান করে।
Read more