ব্লগে ফিরে যান
MongoDB Schema Design — ভালো Design-এর ৭টি নীতি
Database ১০ মিনিট২৭/১১/২০২৫· Vibity Admin

MongoDB Schema Design — ভালো Design-এর ৭টি নীতি

MongoDB-তে schema design করা SQL-এর মতো নয়। Embedding vs referencing, denormalization কখন করবেন, indexes কীভাবে রাখবেন — বিস্তারিত গাইড।

MongoDB-তে schema নেই — এই কথা শুনে অনেকে ভাবেন যা খুশি তাই করা যাবে। কিন্তু ভুল design-এ পরে অনেক performance সমস্যায় পড়তে হয়। MongoDB schema design-এর কিছু নীতি জানা জরুরি।

নীতি ১: Data Access Pattern বুঝুন

Schema design করার আগে জানুন কীভাবে data read ও write হবে। Read heavy নাকি write heavy? কোন queries বেশি হবে? এই প্রশ্নের উত্তর schema design guide করবে।

নীতি ২: Embedding vs Referencing

Embedding (nested document): একটি document-এর ভেতরে অন্য document রাখা। সুবিধা: একটি query-তে সব data। অসুবিধা: document বড় হয়, update কঠিন।

Referencing (foreign key-এর মতো): ObjectId দিয়ে অন্য collection reference করা। সুবিধা: flexibility। অসুবিধা: multiple queries বা $lookup দরকার।

সাধারণ নিয়ম: "has-a" relationship বা frequently একসাথে access হলে embed করুন। Many-to-many বা large sub-documents হলে reference করুন।

নীতি ৩: 16MB Limit মনে রাখুন

MongoDB-তে একটি document সর্বোচ্চ 16MB। Unbounded arrays বা এমন field যা অসীমভাবে বাড়তে পারে — এগুলো document-এ রাখবেন না। এই ক্ষেত্রে referencing ব্যবহার করুন।

নীতি ৪: Indexes সঠিকভাবে দিন

যে fields-এ query করবেন সেগুলোতে index দিন। কিন্তু সব field-এ index দেওয়া ভালো না — write performance কমে এবং disk space বাড়ে।

Compound index বানান: { userId: 1, createdAt: -1 } — userId দিয়ে filter ও createdAt দিয়ে sort একসাথে হবে।

নীতি ৫: Timestamps রাখুন

Mongoose-এ { timestamps: true } দিলে createdAtupdatedAt automatically যোগ হয়। এটি debugging ও analytics-এ অনেক কাজে লাগে।

নীতি ৬: Denormalization গ্রহণ করুন

SQL-এ normalization সর্বোচ্চ অগ্রাধিকার। MongoDB-তে কিছুটা denormalization ঠিক আছে। যেমন post-এ author-এর name embed করা — যদিও User collection-এও আছে। এতে JOIN ছাড়াই author name পাওয়া যাবে।

নীতি ৭: Schema Validation ব্যবহার করুন

MongoDB-তে JSON Schema validation set up করুন। Mongoose-এ schema definition-এ required fields, types, validators যোগ করুন। এটি data integrity নিশ্চিত করে।