আমরা প্রত্যেকেই কম বেশি বিভিন্ন প্রয়োজনে সফটওয়্যার, ওয়েবসাইট এবং ওয়েব অ্যাপ ব্যবহার করে থাকি। এসকল সফটওয়্যার, ওয়েবসাইট এবং ওয়েব অ্যাপের কাজ ভিন্ন হলেও প্রত্যেকেই বিভিন্ন ধরনের ডেটা স্টোর করে এবং সেগুলো তাদের কাস্টমারদের প্রভাইড করে থাকে।
আপনি এখন প্রযুক্তির অভিযাত্রি’র যে ওয়েবসাইট টিতে আছেন এখানে অনেক কনটেন্ট ও ডেটা রয়েছে (যেমন আর্টিকেল)। এগুলো আপডেট, মেইনটেনেন্স এবং আপনাদের সামনে তুলে ধরার জন্য আমাদের নিজস্ব সার্ভারে সব ডেটা স্টোর করে রাখতে হয়েছে। এই ফুল প্রসেসটাই হলো ডেটাবেজ ম্যানেজমেন্ট সিস্টেমের কাজ।
তাই একুরেটলি ডেটা স্টোর বা রেকর্ড রাখা, আপডেট করা, দক্ষতার সাথে ডেটা নিয়মিত আপডেট করা এবং কুয়েরির মাধ্যমে সেগুলো ইউজারের সামনে উপস্থাপন করা অত্যন্ত জটিল একটি কাজ। আর পুরো কার্যক্রমই পরিচালিত হয় বিভিন্ন প্রোগ্রামিং ল্যাঙ্গুয়েজের মাধ্যমে। ব্যাক-এন্ড ডেভেলপমেন্টের প্রধান কাজ গুলোর মধ্যে একটি হলো সার্ভার বা ডেটাবেজ ম্যানেজমেন্ট করা।
মডার্ন ডেটাবেজ ম্যানেজমেন্ট সিস্টেম যে সকল প্রোগ্রামিং ল্যাঙ্গুয়েজের ওপর নির্ভরশীল তাদের স্ট্রাকচার্ড কুয়েরি ল্যাঙ্গুয়েজ বা এসকিউএল (SQL) বলা হয়। এসকল ল্যাঙ্গুয়েজ একটি সিস্টেমের ডেটা এক্সেস, আপডেট এবং ডিলিট করতে ব্যবহৃত হয়।
ডেটাবেজ ম্যানেজমেন্ট সিস্টেম সব সময়ই ডেটাকে স্বাধীনভাবে পরিচালনা করার সুযোগ দেয়। ডেটাবেজ ম্যানেজমেন্ট সিস্টেমের সুবিধা হলো এর মাধ্যমে অ্যাপ্লিকেশনের ইন্টারনাল কোনো মডিফাই ছাড়াই স্টোরেজ মেকানিজমের পরিবর্তন, পরিমার্জন ও পরিবর্ধন করা যায়। ডেটাবেজ অর্গানাইজেশনের জন্য প্রধান চারটি পদ্ধতি রয়েছে। যেমন:
এদের ডেটা স্ট্রাকচার এবং স্টোরেজ পদ্ধতি ভিন্ন ভিন্ন ধরণের হয়ে থাকে। ওয়েবসাইট এবং সফটওয়্যার ডেভেলপমেন্টে ডেটাবেজ ম্যানেজমেন্ট সিস্টেমের গুরুত্ব অনেক। তাই আজকে আমাদের আলোচনা দুটি পাওয়ারফুল ডেটাবেজ ম্যানেজমেন্ট সিস্টেম MySQL এবং MongoDB নিয়ে।
যারা ডেটাবেজ ম্যানেজমেন্ট সিস্টেমকে অনেক বেশি রিলেবল এবং সিকিউর করেছে। এদের স্ট্রাকচার্ড কুয়েরি ল্যাঙ্গুয়েজ, ডেটাবেজ ম্যানেজমেন্ট সিস্টেমকে হাই সিকিউর এবং সিস্টেম প্রসেসকে অনেক দ্রুততর করেছে। আসুন জেনে নেয়া যাক MySQL এবং MongoDB কি? এবং এদের মধ্যে কি কি পার্থক্য বিদ্যমান।
MySQL একটি জনপ্রিয় ওপেন-সোর্স রিলেশনাল ডেটাবেজ ম্যানেজমেন্ট সিস্টেম (RDBMS) যা ওরাকল কর্পোরেশন (Oracle Corporation) দ্বারা ডেভেলপ, ডিসট্রিবিউশন এবং ইউজার সাপোর্ট দিয়ে থাকে। এটি রিলেশনাল ডেটাবেজে মডেল অনুযায়ী কাজ করে। টেবিলের মধ্যে থাকা ফাইল পরিচালনার জন্য ইউজারের রিকোয়ারমেন্ট অনুযায়ী স্কীমা প্রি-ডিফাইন করে রুলস সেট-আপ করে নিতে হয়।
এখানে MySQL এর অনেক ফিচারের মধ্যে গুরুত্বপূর্ণ কিছু ফিচার নিয়ে আলোচনা করা হলো:
MongoDB একটি ওপেন-সোর্স ডকুমেন্ট অরিয়েন্টেড নোএসকিউএল (NoSQL) ডেটাবেজ এবং এটি ডেভেলপ করেছে MongoDB ইনকর্পোরেশন। এটি একটি ডাইনামিক স্কিমা ডেটাবেজ, তারমানে আপনাকে ডেটা রেকর্ড তৈরী করার জন্য পূর্বে কোনো স্ট্রাকচার ডিফাইন করে নিতে হয় না।
এখানে MongoDB এর গুরুত্বপূর্ণ কিছু ফিচার নিয়ে আলোচনা করা হলো:
বিষয় বস্তু | MySQL | MongoDB |
ডেটাবেজ টাইপ | রিলেশনাল ডেটাবেজ ম্যানেজমেন্ট সিস্টেম (RDBMS)। | ডকুমেন্ট অরিয়েন্টেড নোএসকিউএল (NoSQL) ডেটাবেজ। |
ডেটা স্টোর | MySQL এ ইনডিভিজুয়াল ডেটা একটি টেবিলে রো (row) হিসেবে স্টোর করা হয়। | MongoDB তে “Documents” হিসেবে ইনডিভিজুয়াল ডেটা স্টোর করা যায়। |
হায়ারারকিক্যাল ডেটা রেকর্ড | টেবিলে ব্যবহার করা হয় সিমিলার টাইপের রো (row) স্টোর করতে। | ডকুমেন্ট গুলো পার্টিশন করে স্টোর করা যায় বিশেষ ক্লাস বা গ্রুপের মধ্যে কালেকশন “collection” ফাইলে। |
SQL অথবা NoSQL | MySQL একটি স্ট্রাকচার্ড কুয়েরি ল্যাঙ্গুয়েজ (SQL) ডেটাবেজ। এর স্কীমা পরিবর্ত করা যায় না। | MongoDB একটি NoSQL ডেটাবেজ। নতুন ডেটা স্টোরের ক্ষেত্রে ডেটা স্ট্রাকচার প্রি-ডিফাইন করে নিতে হয় এবং ডিফারেন্ট টাইপের স্ট্রাকচার ডিফারেন্ট ডকুমেন্টে কালেকশন করে থাকে। |
অটো-শেয়ারিং | MySQL এ ডেটা যে কোনো টেবিলে যে কোনো সময় শেয়ার করার এক্সেস দেয় না। | MongoDB ডেটা অটো-শেয়ার করা যায় যে কোনো স্ট্রাকচারড স্কিমার সাথে। |
ডেটা প্রেজেন্টেশন | MySQL টেবিল এবং রো এর মাধ্যমে ডেটা রিপ্রেজেন্ট করে। | MongoDB ডেটা জেসন (JSON) ডকুমেন্ট হিসেবে রিপ্রেজেন্ট করে। |
স্কীমা | MySQL এ কোনো কিছু এড করে চাইলে প্রথমেই টেবিল এবং রো ডিফাইন করে নিতে হবে এবং একটি টেবিলের প্রত্যেকটি রো তে সেম কলাম থাকতে হবে। | MongoDB তে স্কীমা ডিফাইন করার প্রয়োজন পরে না। |
ইন্ডেক্স ডিফাইন | যদি কোনো ইন্ডেক্স ডিফাইন না করা থাকে, তাহলে ডেটাবেজ ইন্জিন রিলিভেন্ট সব রো স্ক্যান করে। | ডেটাবেজে যদি কোনো ইন্ডেক্স খুঁজে না পাওয়া যায়, তাহলে কুয়েরি স্ক্যান এবং ডকুমেন্ট সিলেক্ট করে ডেটা বের করা হয়। |
ডেটা সিকিউরিটি | ডেটা সিকিউরিটির জন্য MySQL সবচেয়ে ভালো অপশন। | ক্লাউড বেস সার্ভিসের জন্য MongoDB সবচেয়ে ভালো অপশন। |
জয়েন (JOIN) অপারেশন | এটি জয়েন (JOIN) অপারেশন সাপোর্ট করে। | এটি জয়েন (JOIN) অপারেশন সাপোর্ট করে না। |
ডেটা হ্যান্ডেল | এটি লার্জ এমাউন্টের ডেটা হ্যান্ডেল করতে সময় অনেক বেশি নেয়। | এটি খুব দ্রুত লার্জ এমাউন্টের ডেটা হ্যান্ডেল করতে পারে। |
MySQL এবং MongoDB ইউজ করেছে এমন কয়েকটি অর্গানাইজেশন: | প্রিন্টারেস্ট (Pinterest), ইউটিউব (YouTube), নেটফ্লিক্স (Netflix), স্পটিফাই (Spotify), ইউএস নেভী (US Navy), নাসা (NASA), ওয়ালমার্ট (Walmart), এবং পেপাল (Paypal) সহ আরো অনেকে। | ক্লাউট (Klout), সিট্রিক্স (Citrix), টুইটার (Twitter), টি-মোবাইল (T-Mobile), জেনডেক্স (Zendesk), সনি (Sony), হটস্যুট (Hootsuite), সার্ভেমানকি (SurveyMonkey), ফোরস্কয়ার (Foursquare), এবং ইনভিশন (InVision) সহ আরো অনেকে। |
MySQL এবং MongoDB ডেটাবেজ দুটির কুয়েরি কমান্ডের মধ্যে ব্যাপক পার্থক্য দেখা যায়।
MySQL দিয়ে টেবিল সিলেক্ট করা হয় যেভাবে,
Select*
FROM customer`
MongoDB দিয়ে টেবিল সিলেক্ট করা হয় যেভাবে,
db.customer.find()
MySQL দিয়ে টেবিলে ডেটা ইনসার্ট কমান্ড,
INSERT INTO customer (cust_id, branch, status)
VALUES ('appl01', 'main', 'A')
MongoDB দিয়ে টেবিলে ডেটা ইনসার্ট যেভাবে করে,
db.customer.insert({
cust_id: 'appl01',
branch: 'main',
status: 'A'
})
MySQL দিয়ে টেবিলে ডেটা আপডেটের কমান্ড,
UPDATE customer
SET branch = 'main'
WHERE custage > 2
MongoDB দিয়ে টেবিলে ডেটা আপডেট করে যেভাবে,
db.customer.update({
custage: { $gt: 2 }
},
{
$set: { branch:'main' }
},
{
multi: true
})
MySQL ডেটা ডিলিট করার কুয়েরি কমান্ড,
DELETE FROM table_name
ORDER BY c1, c2, ...
LIMIT row_count;
MongoDB ডেটা ডিলিট করে যেভাবে,
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>,
collation: <document>
}
)
পরবর্তী যেকোনো প্রজেক্টের জন্য যখন এদের দুটি থেকে যেকোনো একটি বেছে নিতে হয় তাহলে অনেকগুলো বিষয় মাথায় রেখেই নির্বাচন করতে হবে।
বিষয় বস্তু | MySQL | MongoDB |
ইউজ কেস | অ্যাপ্লিকেশন গুলো মাল্টি-রো ডেটা ট্রান্সজেকশন করে। তাই ডেটাবেজ বড় হলে অনেকক্ষেত্রে বেশী সময়ের প্রয়োজন পড়ে। | এটি রিয়েল টাইম ডেটা এনালাইসিস করে, কন্টেন্ট ম্যানেজমেন্ট এবং মোবাইল অ্যাপে ইউজ করা যায়। |
ডেটা স্ট্রাকচার | ক্লিয়ার স্কীমায় ডেটা স্ট্রাকচার করা এবং স্টোর করা যায়। | ডেটা স্ট্রাকচারের জন্য কোনো স্কীমার প্রয়োজন নেই। |
রিস্ক এনালাইসিস | সিকিউরিটি রিস্ক হিসেবে SQL ইঞ্জেকশন এ্যাটাকের রিস্ক থাকে। তাছাড়া আপনার যদি স্ট্রাকচার্ড ডেটা থাকে এবং ট্রেডিশনাল রিলেশনাল ডেটাবেজ তৈরী করতে চান তাহলে MySQL ডেটাবেজ ব্যবহার করতে পারেন। | আপনি যদি আনস্ট্রাকচার্ড এবং পটেনশিয়াল ডেটাবেজ তৈরী করতে চান তাহলে MongoDB ডেটাবেজ ব্যবহার করতে পারেন। |
উপরে বর্নিত প্রকাশনায় অনেক এডভান্টেজ এবং ওয়ার্কিং প্রসিডিউর বর্ননা করা হয়েছে। এতো সব সুবিধার মধ্যে কিছু অসুবিধাও পরিলক্ষিত হয় উক্ত ডেটাবেজ দুটিতেই। প্রত্যেকটা বিষয়েরই কিছু না কিছু সীমাবদ্ধতা থাকে, কেউই শতভাগ সঠিক কাজ করতে সক্ষম হতে পারে না। ঠিক তেমনি MySQL ও MongoDB এর মধ্যে থাকা সীমাবদ্ধতা গুলো নিম্নরুপ:
MySQL ব্যবহারে কিছু ত্রুটি রয়েছে, যেমন:
MongoDB ব্যবহারে কিছু ত্রুটি রয়েছে, যেমন:
MySQL ও MongoDB দুটি ডেটাবেজই স্বতন্ত্র ভাবে কাজ করে এবং এদের সুবিধা ও অসুবিধা রয়েছে। আপনার ডেটায় যদি মাল্টি-রো ট্রান্সজেকশনের প্রয়োজন হয় এবং লেগেসি (Legacy) অ্যাপ্লিকেশন সাপোর্ট করে, তাহলে আপনার অর্গানাইজেশনের জন্য রিলেশনাল ডেটাবেজ সিস্টেম পার্ফেক্ট হবে।
অন্যথায়, আপনার যদি অধিক ফ্ল্যাক্সিবল ও স্কিমা বিহীন আনস্ট্রাকচার্ড ডেটা স্টোর করতে চান, তাহলে ডকুমেন্ট অরিয়েন্টেড নোএসকিউএল (NoSQL) ডেটাবেজ আপনার অর্গানাইজেশনের জন্য পার্ফেক্ট হবে।
আশা করি আমাদের প্রকাশনার এই পর্যন্ত এসে আপনি MySQL ও MongoDB এই দুটি ডেটাবেজ সম্পর্কে খুব ভালো ধারনা পেয়ে গেছেন । এদের সুবিধা, অসুবিধা এবং কিভাবে কোনটি ব্যবহার করতে হয় তার পুরো বিস্তারিত সর্বোচ্চ ধারনা দেওয়ার চেষ্টা করেছি।
যদি আপনার আরো কিছু জানার ইচ্ছে থেকে থাকে বা আপনার মনে কেনো প্রশ্ন থাকে বা আমাদের বাদ পরে যাওয়া কোনো বিষয় যুক্ত করতে চান তাকলে নির্বিঘ্নে আমাদের কমেন্টে জানাতে ভুলবেন না।
এই লেখাটি সম্পাদনা করা হয়েছে জুলাই ১৯, ২০২০ ১২:০৮ পূর্বাহ্ন
প্রোগ্রামিং শুরু করার আগে একটি প্রচলিত লাইন যা প্রায় সকল বিগিনারদের শুনতে হয়- "প্রোগ্রামিং খুব…
ডেনো কি? ডেনো হচ্ছে জাভাস্ক্রিপ্ট ও টাইপস্ক্রিপ্টের একটি সিকিউর রানটাইম, এটি জাভাস্ক্রীপ্টের V8 ইঞ্জিন এবং…
অনেকেরই ধারণা ইন্টারনেট মানে একটি ম্যাজিকেল ক্লাউড যা আমাদের পছন্দের ওয়েবসাইট, অনলাইন শপ এবং অন্তহীন…
ওয়েবের ৭৮.৯% ওয়েবসাইটই পিএইচপি তে রান হওয়া স্বত্বেও এটি ভবিষ্যতের ইকোসিস্টেমের সাথে যাচ্ছেনা। বিশেষ করে…
ম্যালওয়্যার! বর্তমান সময়ে আসলেই একটি ভয়ের বিষয় হয়ে দাড়িয়েছে। বড় টেক কোম্পানী থেকে ছোট পার্সোনাল…
বর্তমান সময়ে আমরা যেসব স্মার্টফোন ব্যবহার করি তার অধিকাংশই এন্ড্রয়েড অপারেটিং সিস্টেম দ্বারা পরিচালিত। কিন্তু…