NoSQL কী?
আফিসিয়াল Wiki ডেফিনিশন অনুযায়ী: "A NoSQL (মূলভাবে "non SQL" বা "non relational" বোঝাতে) ডাটাবেস ডেটা স্টোরেজ এবং রিট্রিভালের একটি মেকানিজম প্রদান করে যা রিলেশনাল ডাটাবেস (RDBMS)-এ ব্যবহৃত ট্যাবুলার রিলেশন ছাড়া অন্য উপায়ে মডেল করা হয়। এতে বিভিন্ন ডাটাবেস টেকনোলজি সমाहিত যা ডেটা ভলিউম, এক্সেস ফ্রিকোয়েন্সি, পারফরম্যান্স ও প্রসেসিং 니ডের বৃদ্ধির প্রতিক্রিয়া হিসেবে विकসিত হয়েছে। সাধারণত NoSQL ডাটাবেস কি-ভ্যালু পেয়ার, গ্রাফ ডাটাবেস, ডকুমেন্ট-ওরিয়েন্টেড বা কলাম-ওরিয়েন্টেড স্ট্রাকচারে স্ট্রাকচারড থাকে।"
দশক ধরে সফটওয়্যার ডেভেলপমেন্টে আমরা SQL (Structured Query Language) ফরমে ডাটাবেস ব্যবহার করি যেখানে ডেটা রিলেশনাল টেবিলে স্টোর করা হয়। কিন্তু gần বছরে ইন্টারনেট এবং Web 2.0 অ্যাপ্লিকেশনের ভয়াবহ বৃদ্ধির সাথে ডাটাবেস হাজার হাজার টেরাবাইটে বড় হয়েছে। Facebook, Google, Amazon, WhatsApp-এর মতো অ্যাপ্লিকেশন ডাটাবেস ম্যানেজমেন্টের একটি নতুন যুগ শুরু করেছে যা সিম্পল ডিজাইন, স্পিড এবং ট্রেডিশনাল ডাটাবেসের চেয়ে দ্রুত স্কেলিং ফলো করে। এধরনের ডাটাবেস বিগ ডেটা, ম্যাসিভ রিয়েল-টাইম অ্যাপ্লিকেশন এবং এনালিটিক্স-এ ব্যবহৃত হয়।
উদাহরণস্বরূপ, ধরুন আপনার একটি ব্লগিং অ্যাপ্লিকেশন আছে যা ইউজার ব্লগ সংরক্ষণ করে। এখন ধরুন আপনাকে কিছু নতুন ফিচার যোগ করতে হবে: ইউজার ব্লগ পোস্ট লাইক করবে, কমেন্ট করবে বা কমেন্ট লাইক করবে। টিপিক্যাল RDBMS ইমপ্লিমেন্টেশনে এতে আপনার এক্সিস্টিং ডাটাবেস ডিজাইনের পুরো ওভারহল দরকার হবে। কিন্তু NoSQL ব্যবহার করলে আপনি সহজেই আপনার ডেটা স্ট্রাকচার মডিফাই করে এই এজাইল রিকোয়ারমেন্ট মেলাতে পারবেন। NoSQL-এ আপনি সরাসরি এই নতুন ডেটা এক্সিস্টিং স্ট্রাকচারে ইনসার্ট করতে পারবেন বিনা কোনো প্রি-ডিফাইনড কলাম বা স্ট্রাকচার তৈরি কिये।
RDBMS-এর চ্যালেঞ্জ
- RBDMS একটি ভালো-ডিফাইনড ডেটা স্ট্রাকচার অনুমান করে এবং ডেটা খুব বেশি ইউনিফর্ম বলে অনুমান করে।
- এই আপনার অ্যাপ্লিকেশনের স্কিমা এবং প্রোপার্টি (কলাম, টাইপ ইত্যাদি) আপ-ফ্রন্টে ডিফাইন করতে হয় অ্যাপ্লিকেশন বিল্ড করার আগে। এটি হাইলি ডাইনামিক অ্যাপ্লিকেশনের জন্য এজাইল ডেভেলপমেন্ট আপারোচের সাথে ভালো মেলে না।
- ডেটা বড় হওয়া শুরু করলে আপনাকে আপনার ডাটাবেস ভার্টিক্যালি স্কেল করতে হয়, অর্থাৎ এক্সিস্টিং সার্ভারে বেশি ক্যাপাসিটি যোগ করতে হয়।
RDBMS-এর ওপর NoSQL-এর সুবিধা
Schema Less − NoSQL ডাটাবেস স্কিমা-বিহীন হওয়ায় কোনো কঠোর ডেটা স্ট্রাকচার ডিফাইন করে না।
Dynamic and Agile − NoSQL ডাটাবেস পরিবর্তনশীল রিকোয়ারমেন্টের সাথে ডাইনামিক্যালি বড়তে পারে। এটি স্ট্রাকচারড, সেমি-স্ট্রাকচারড এবং আনস্ট্রাকচারড ডেটা হ্যান্ডেল করতে পারে।
Scales Horizontally − SQL ডাটাবেস যা ভার্টিক্যালি স্কেল করে, তার বিপরীতে NoSQL হরিজন্টালি স্কেল করে আরও সার্ভার যোগ করে এবং শার্ডিং ও রেপ্লিকেশন কনসেপ্ট ব্যবহার করে। NoSQL-এর এই বিহেভিয়ার ক্লাউড কম্পিউটিং সার্ভিসের (যেমন AWS) সাথে ফিট করে যা ভার্চুয়াল সার্ভার হ্যান্ডেল করতে দেয় যেগুলো ডিমান্ড অনুযায়ী হরিজন্টালি এক্সপ্যান্ড করা যায়।
Better Performance − সব NoSQL ডাটাবেস দাবি করে যে সেগুলো ট্রেডিশনাল RDBMS ইমপ্লিমেন্টেশনের চেয়ে ভালো এবং দ্রুত পারফরম্যান্স দেয়।
লিমিটেশন বুলিয়ে, যেহেতু NoSQL একটি সম্পূর্ণ ডাটাবেস সেট (না کہ একক ডাটাবেস), লিমিটেশনগুলো ডাটাবেস থেকে ডাটাবেসে ভিন্ন। কিছু ডাটাবেস ACID ট্রানজ্যাকশন সাপোর্ট করে না, কিছু রিলায়েবিলিটিতে দরিদ্র হতে পারে। কিন্তু প্রতিটির নিজস্ব স্ট্রেন্থ রয়েছে যেগুলো নির্দিষ্ট রিকোয়ারমেন্টের জন্য উপযুক্ত করে তোলে।
NoSQL ডাটাবেসের ধরন
Document Oriented Databases − ডকুমেন্ট-ওরিয়েন্টেড ডাটাবেস একটি ডকুমেন্টকে এক entidades হিসেবে ট্রিট করে এবং ডকুমেন্টকে এর কনস্টিটুয়েন্ট নাম/ভ্যালু পেয়ারে ভাগ করে না। কালেকশন লেভেলে, এটি ডাইভার্স ডকুমেন্ট সেটকে একটি কালেকশনে রাখতে দেয়। ডকুমেন্ট ডাটাবেস ডকুমেন্টের ইন্ডেক্সিং এর প্রাইমারি আইডেন্টিফায়ারের পাশাপাশি এর প্রোপার্টির ওপর ভিত্তি করে করতে দেয়। বিভিন্ন ওপেন সোর্স ডকুমেন্ট ডাটাবেস উপলব্ধ কিন্তু সবচেয়ে প্রমুখ MongoDB এবং CouchDB। আসলে MongoDB সবচেয়ে জনপ্রিয় NoSQL ডাটাবেসের একটি হয়ে উঠেছে।
Graph Based Databases − একটি গ্রাফ ডাটাবেস নোড, এজ এবং প্রোপার্টি সহ গ্রাফ স্ট্রাকচার ব্যবহার করে ডেটা রিপ্রেজেন্ট ও স্টোর করে। ডেফিনিশন অনুযায়ী, একটি গ্রাফ ডাটাবেস যেকোনো স্টোরেজ সিস্টেম যা ইনডেক্স-ফ্রি অ্যাডজেসেন্সি প্রদান করে। এর মানে প্রতিটি এলিমেন্ট তার অ্যাডজেসেন্ট এলিমেন্টের ডায়রেক্ট পয়েন্টার ধারণ করে এবং কোনো ইনডেক্স লুকআপ দরকার নয়। জেনারেল গ্রাফ ডাটাবেস যেকোনো গ্রাফ স্টোর করতে পারে, 스페সিয়ালাইজড গ্রাফ ডাটাবেস (যেমন triple-stores, network databases) থেকে আলাদা। গ্রাফ ট্রাভার্সালের জন্য ইনডেক্স ব্যবহার করা হয়।
Column Based Databases − কলাম-ওরিয়েন্টেড স্টোরেজ ডেটা কার্যকরভাবে স্টোর করতে দেয়। এটি নাল স্টোর করার স্পেস বাঁচায় কোলাম স্টোর না করে যখন সেটির জন্য কোনো ভ্যালু নেই। ডেটার প্রতিটি ইউনিট একটি কি/ভ্যালু পেয়ার সেট হিসেবে চিন্তা করা যায়, যেখানে ইউনিটটিকে একটি প্রাইমারি আইডেন্টিফায়ার (প্রাইমারি কী) দিয়ে শনাক্ত করা হয়। Bigtable এবং এর ক্লোনগুলো এই প্রাইমারি কীকে row-key বলতে পছন্দ করে।
Key Value Databases − একটি কি/ভ্যালু পেয়ারের কী সেটে একটি ইউনিক ভ্যালু যা সহজে লুকআপ করে ডেটা অ্যাক্সেস করা যায়। কি/ভ্যালু পেয়ার বিভিন্ন টাইপের: কিছু মেমরিতে ডেটা রাখে, কিছু ডিস্কে পার্সিস্ট করতে দেয়। একটি সহজ কিন্তু শক্তিশালী কি/ভ্যালু স্টোর হলো Oracle-এর Berkeley DB।
জনপ্রিয় NoSQL ডাটাবেস
উপরোক্ত ক্যাটেগরিতে পড়া কিছু জনপ্রিয় NoSQL ডাটাবেস:
- Document Oriented Databases − MongoDB, HBase, Cassandra, Amazon SimpleDB, Hypertable, ইত্যাদি।
- Graph Based Databases − Neo4j, OrientDB, Facebook Open Graph, FlockDB, ইত্যাদি।
- Column Based Databases − CouchDB, OrientDB, ইত্যাদি।
- Key Value Databases − Membase, Redis, MemcacheDB, ইত্যাদি।

NoSQL Databases. Image Source: getfilecloud.com
উপসংহার
এই আর্টিকেলে আমরা শিখলাম NoSQL ডাটাবেস টেকনোলজি কী এবং এটি RDBMS ইমপ্লিমেন্টেশনের সাথে কীভাবে প্রাথমিকভাবে ভিন্ন। তারপর আমরা NoSQL ডাটাবেসের বিভিন্ন টাইপ, অ্যাপ্লিকেশন এবং প্রতিটি টাইপের সবচেয়ে জনপ্রিয় ডাটাবেস এক্সপ্লোর করেছি।
আজকাল অনেক সংস্থা তাদের হিউজ ডেটাসেট এবং হাই-স্কেল অ্যাপ্লিকেশনের জন্য এই ধরনের ডাটাবেস আডপ্ট করছে। এটি দেখায় যে NoSQL নিঃসন্দেহে 웹 এবং ডাটাবেস টেকনোলজিতে পরবর্তী বড় কনসেপ্ট হবে যাতে RBDMS-এর বছর?!” বছরের লিগেসি ভাঙতে পারবে।