NoSQL সংক্ষেপটি ১৯৯৮ সালে গড়ে উঠেছে। অনেকেই মনে করে NoSQL হলো SQL-কে টানতে তৈরি করা একটি উপহাসজনক শব্দ। আসলে এর অর্থ Not Only SQL। ধারণা হলো দুটি প্রযুক্তি সহ-অস্তিত্বে থাকতে পারে এবং প্রতিটির নিজস্ব জায়গা আছে। গত কয়েক বছর থেকে NoSQL আন্দোলন টেক নিউজে চর্চার বিষয় রইেছে কারণ Web 2.0-এর অনেক নেতা NoSQL প্রযুক্তি গ্রহণ করেছে। Facebook, Twitter, Digg, Amazon, LinkedIn, Google — সবই এক বা অন্য রূপে NoSQL ব্যবহার করে। চলুন NoSQL ভাঙ করে বুঝি যাতে আপনি আপনার CIO বা সহকর্মীদের ব্যাখ্যা করতে পারেন।
NoSQL কেন আবশ্যক হয়েছে
ডেটা স্টোরেজ: বিশ্বের সংরক্ষিত ডিজিটাল ডেটা এক্সাবাইটে মাপা হয়। এক এক্সাবাইট = এক বিলিয়ন গিগাবাইট (GB)। Internet.com অনুযায়ী, ২০০৬ সালে যোগ হওয়া ডেটা ছিল ১৬১ এক্সাবাইট। মাত্র ৪ বছর পর ২০১০ সালে সংরক্ষিত ডেটা প্রায় ১,০০০ এক্সাবাইট হবে — ৫০০% এর বেশি বৃদ্ধি। অর্থাৎ বিশ্বে প্রচুর ডেটা সংরক্ষিত হচ্ছে এবং এটি বেড়েই চলছে।
অন্তর্গ্রথিত ডেটা: ডেটা egyre বেশি সংযুক্ত হচ্ছে। ওয়েবের সৃষ্টি হাইপারলিংক, ব্লগের পিংব্যাক, এবং প্রতিটি বড় সোশ্যাল নেটওয়ার্কের ট্যাগিং সিস্টেম জিনিসগুলোকে জড়িয়ে দিয়েছে। বড় সিস্টেমগুলো পারস্পরিকভাবে সংযুক্তভাবে তৈরি হচ্ছে।
জটিল ডেটা স্ট্রাকচার: NoSQL হায়েরার্কিক্যাল নেস্টেড ডেটা স্ট্রাকচার সহজে হ্যান্ডেল করতে পারে। একই কাজ SQL-এ করতে হলে একাধিক রিলেশনাল টেবিল এবং নানান চাবি (keys) দরকার। পারফরম্যান্স এবং ডেটা জটিলতার মধ্যে সম্পর্ক আছে। ট্রেডিশনাল RDBMS-এ সোশ্যাল নেটওয়ার্কিং অ্যাপ্লিকেশন এবং সেমান্টিক ওয়েবের জন্য প্রয়োজনীয় বিশাল ডেটা স্টোর করলে পারফরম্যান্স হ্রাস পায়।
NoSQL কী?
NoSQL কী তা বুঝতে পারেন এটি কী নয় সেটা বিবেচনা করে। এটি SQL নয়, রিলেশনাল নয়। নাম অনুযায়ী, এটি RDBMS-এর প্রতিস্থাপন নয় বরং পূরক। NoSQL খুব বড় স্কেলের ডেটা প্রয়োজনের জন্য ডিস্ট্রিবিউটেড ডেটা স্টোর হিসেবে ডিজাইন করা। Facebook-এর ৫০০ মিলিয়ন ইউজার বা Twitter-এর প্রতিদিন টেরাবিটস ডেটা চিন্তা করুন।
NoSQL ডাটাবেসে ফিক্সড স্কিমা নেই এবং জয়িন (joins) নেই। RDBMS "স্কেল আপ" করে — দ্রুততর হার্ডওয়্যার এবং বেশি মেমরি যোগ করে। NoSQL অন্যদিকে "স্কেল আউট" করুন — লোডকে অনেক কমোডিটি সিস্টেমে ছড়িয়ে দিন। এই "স্কেল আউট" قابلیتেই NoSQL বড় ডেটাসেটের জন্য সস্তা সমাধান করে তোলে।
NoSQL-এর ক্যাটেগরি
বর্তমান NoSQL বিশ্ব ৪টি মূল ক্যাটেগরিতে বিভক্ত।
- Key-Value Stores — मुख্যকার Amazons Dynamo Paper (২০০৭) এর উপর ভিত্তি করে। মূল ধারণা: একটি হ্যাশ টেবিল যেখানে একটি ইউনিক কী থাকে এবং সেই কী নির্দিষ্ট ডেটা আইটেমের দিকে পয়েন্ট করে। এই ম্যাপিংস সাধারণত ক্যাশ মেকানিজমের সাথে থাকে পারফরম্যান্স ম্যাক্সিমাইজ করার জন্য।
- Column Family Stores — অনেক মেশিনে বিতরণ করা বিশাল পরিমাণ ডেটা স্টোর ও প্রসেস করার জন্য তৈরি। এখানেও কী থাকে কিন্তু সেগুলো একাধিক কলামে পয়েন্ট করে। BigTable (Google-এর Column Family NoSQL মডেল) তে রো এক রো কী দিয়ে আইডেন্টিফাই হয়, ডেটা এই কী দিয়ে সোর্ট ও স্টোর হয়। কলামগুলো কলাম ফ্যামিলি অনুযায়ী সাজানো থাকে।
- Document Databases — Lotus Notes-র অনুপ্রেরণায় তৈরি, Key-Value Stores-এর সমantik। মডেলটি মূলত ভার্সन्ड ডকুমেন্ট যা অন্যান্য Key-Value কালেকশনের সংকলন। সেমি-স্ট্রাকচারড ডকুমেন্টগুলো JSON ফরম্যাটে স্টোর হয়।
- Graph Databases — নোড, নোডের মধ্যে রিলেশনশিপ, এবং নোডের প্রোপার্টি দিয়ে বিল্ট। SQL-এর রিজিড স্ট্রাকচার (রো, কলাম, টেবিল) না হয়ে একটি ফ্লেক্সিবল গ্রাফ মডেল ব্যবহার করা হয় যা অনেক মেশিনে স্কেল করতে পারে।
প্রধান NoSQL প্লেয়াররা
প্রধান NoSQL প্লেয়াররা তাদের আডপ্ট করার সংস্থাগুলোর কারণে উজ্জ্বল হয়েছে। সবচেয়ে বড় NoSQL প্রযুক্তিগুলো:
- Dynamo: Amazon.com তৈরি করেছে, সবচেয়ে প্রমিনেন্ট Key-Value NoSQL ডাটাবেস। Amazon তাদের ই-কমার্স বিজনেসের জন্য হাইলি স্কেলেবল ডিস্ট্রিবিউটেড প্ল্যাটফর্ম চেয়েছিল, তাই Dynamo তৈরি করল। Amazon S3 Dynamo ব্যবহার করে স্টোরেজ মেকানিজম হিসেবে।
- Cassandra: Facebook ওপেন সোর্স করেছে, একটি কলাম-ওরিয়েন্টেড NoSQL ডাটাবেস।
- BigTable: Google-এর প্রপ্রায়েটারি কলাম-ওরিয়েন্টেড ডাটাবেস। Google BigTable ব্যবহারের অনুমতি দেয় কিন্তু শুধু Google App Engine-এ।
- SimpleDB: Amazon-এর আরেকটি ডাটাবেস। Amazon EC2 এবং S3-এ ব্যবহৃত, Amazon Web Services-এর অংশ যা ব্যবহার অনুযায়ী ফি নেয়।
- CouchDB: CouchDB এবং MongoDB — ওপেন সোর্স ডকুমেন্ট-ওরিয়েন্টেড NoSQL ডাটাবেস।
- Neo4j: একটি ওপেন সোর্স গ্রাফ ডাটাবেস।
NoSQL কোয়েরি করা
NoSQL ডাটাবেস কীভাবে কোয়েরি করবেন — এটি ডেভেলপারদের সবচেয়ে বেশি আগ্রহের বিষয়। húজে ডেটা স্টোর করা থাকলে কি ফায়দা যদি আপনি এন্ড ইউজার বা ওয়েব সার্ভিসে রিট্রিভ করে দেখাতে না পারেন। NoSQL ডাটাবেস SQL-এর মতো হাই-লেভেল ডিক্লেরেটিভ কোয়েরি ল্যাঙ্গুয়েজ দেয় না। বরং কোয়েরি করা হয় ডেটা-মডেল স্পেসিফিকভাবে।
অনেক NoSQL প্ল্যাটফর্ম ডেটা এক্সেসের জন্য RESTful ইন্টারফেস দেয়। অন্যদের কোয়েরি API থাকে। কিছু কোয়েরি টুল তৈরি হয়েছে যা একাধিক NoSQL ডাটাবেস কোয়েরি করার চেষ্টা করে। এগুলো সাধারণত একক NoSQL ক্যাটেগরির সাথে কাজ করে। উদাহরণ: SPARQL। SPARQL হলো গ্রাফ ডাটাবেসের জন্য ডিজাইন করা একটি ডিক্লেরেটিভ কোয়েরি স্পেসিফিকেশন। IBM-এর kwaয়েতে একটি SPARQL কোয়েরি উদাহরণ যা একজন নির্দিষ্ট ব্লগারের URL রিট্রিভ করে:
PREFIX foaf:
SELECT ?url
FROM
WHERE {
?contributor foaf:name "Jon Foobar" .
?contributor foaf:weblog ?url .
}
NoSQL-এর ভবিষ্যৎ
বিশাল ডেটা স্টোরেজ প্রয়োজনীয় সংস্থাগুলো NoSQL-কে সিরিয়াসলি বিবেচনা করছে। কিন্তু ছোট সংস্থাগুলোতে কনসেপ্টটি তেমন ট্র্যাকশন পাচ্ছে না। Information Week-এর একটি সার্ভে অনুযায়ী, ৪৪% বিজনেস IT প্রফেশনাল NoSQL-র কথা শুনেনি। আরও, শুধু ১% রেসপন্ডেন্ট রিপোর্ট করল যে NoSQL তাদের স্ট্র্যাটেজিক ডিরেকশনের অংশ। স্পষ্ট, আমাদের সংযুক্ত বিশ্বে NoSQL-এর জায়গা আছে কিন্তু এটিকে আরও উন্নত হতে হবে যাতে অনেকের মতে এটি পাওয়া যাবে মাস আপিল।