NoSQL Databases

NoSQL Database কি?

NoSQL হলো এমন একটি ডাটাবেস প্রযুক্তি, যা Relational Database (SQL)-এর বিকল্প হিসেবে ব্যবহৃত হয়। এর মূল শক্তি হলো Scalability, Flexibility ও High Performance।

MySQL বা PostgreSQL-এর মতো Relational Database সাধারণত টেবিল-ভিত্তিক এবং Strict Schema মেনে চলে। কিন্তু আধুনিক অ্যাপ্লিকেশনে বিপুল ডাটা, দ্রুত Read-Write এবং High Availability দরকার হয়। এই চাহিদা মেটাতে NoSQL উপযোগী।

মূল বৈশিষ্ট্য

  • Flexible Data Model: অনেক NoSQL Database-এ Relational Database-এর মতো কঠোর Schema প্রয়োজন হয় না।

    উদাহরণস্বরূপ, MongoDB-তে দুটি Document-এর Field আলাদা হতে পারে।

    {
      "name": "Rahim",
      "age": 25
    }

    অন্য Document:

    {
      "name": "Karim",
      "age": 28,
      "department": "CSE",
      "skills": ["Python", "Django"]
    }
  • Scalability: অনেক NoSQL Database এমনভাবে Design করা হয় যাতে একাধিক Server/Node যোগ করে System-এর Capacity বাড়ানো যায়।

    এটিকে বলা হয়: Horizontal Scaling → আরও Server যোগ করা

    তবে মনে রাখতে হবে, Relational Database-ও Horizontal Scaling করতে পারে—যেমন Sharding-এর মাধ্যমে।

  • High Performance: অনেক NoSQL Database একাধিক Node-এর মধ্যে Data Distribute করতে পারে। Distributed আর্কিটেকচারের কারণে Read ও Write দ্রুত হয়।

  • Big Data ও Real-time Processing: বিশাল ডাটা ও লাইভ স্ট্রিমিংয়ের জন্য উপযুক্ত।

  • CAP Theorem: Consistency, Availability ও Partition Tolerance এর মধ্যে ভারসাম্য রাখতে হয়।

NoSQL এর ৪টি প্রধান ধরন

১. Key-Value Store

Unique Key ও তার Value দিয়ে ডাটা সংরক্ষণ করে।

  • উদাহরণ: Redis, DynamoDB

  • ব্যবহার: Caching, Session Management (যেমন লগইন সেশন)

  • উদাহরণ:

    "user:1001" → "Rahim"

২. Document-Oriented Database

ডাটা JSON, BSON বা XML ফরম্যাটে থাকে, এবং প্রতিটি ডকুমেন্ট Semi-structured।

  • উদাহরণ: MongoDB, CouchDB

  • ব্যবহার: Web ও Mobile App, Content Management System (ব্লগ, নিউজ সাইট)

  • উদাহরণ:

    {
      "id": 1001,
      "name": "Rahim",
      "email": "rahim@example.com",
      "skills": ["Python", "Django"]
    }

৩. Column-Family Store

Row এর বদলে কলাম গ্রুপ করে ডাটা রাখে, ফলে বিশাল ডাটা দ্রুত প্রসেস করা যায়।

  • উদাহরণ: Apache Cassandra, HBase

  • ব্যবহার: Big Data Analytics, Recommendation System

৪. Graph Database

Node ও Edge দিয়ে ডাটা রাখে, ফলে ডাটার মধ্যকার সম্পর্ক সহজে মডেল করা যায়।

  • উদাহরণ: Neo4j, ArangoDB

  • ব্যবহার: Social Network, Fraud Detection

  • উদাহরণ:

    Rahim ──FRIEND_OF──> Karim
    Karim ──WORKS_AT──> Company A

SQL বনাম NoSQL

বিষয়

SQL (Relational)

NoSQL (Non-Relational)

ডাটা স্ট্রাকচার

টেবিল-ভিত্তিক

Key-Value, Document, Column, Graph

স্কিমা

Strict Schema

Flexible Schema

স্কেলিং

সাধারণত Vertical

সাধারণত Horizontal

পারফরম্যান্স

Complex Query-তে ভালো

দ্রুত Read-Write

ব্যবহার ক্ষেত্র

ব্যাংকিং, ফাইন্যান্স

Big Data, Real-time, Web ও Mobile App

কখন NoSQL বেছে নেবেন?

  • অ্যাপে প্রচুর ডাটা সামলাতে হলে

  • ডাটার স্ট্রাকচার সময়ের সাথে বদলাতে পারে এমন Flexible Schema দরকার হলে

  • ই-কমার্স বা সোশ্যাল মিডিয়ার মতো High Availability ও Scalability দরকার হলে

  • Big Data ও Real-time Processing দরকার হলে

কখন SQL ভালো?

  • ব্যাংকিংয়ের মতো ACID-নির্ভর Transactional Consistency দরকার হলে

  • Relational Data Model (টেবিল-ভিত্তিক) দরকার হলে

  • Complex Query ও Multi-Join অপারেশন দরকার হলে

জনপ্রিয় NoSQL ডাটাবেস

ডাটাবেস

ধরন

ব্যবহারের ক্ষেত্র

MongoDB

Document

Web ও Mobile App

Redis

Key-Value

Caching, Session Management

Apache Cassandra

Column-Family

Big Data, Analytics

Neo4j

Graph

Social Network, Fraud Detection

আধুনিক সফটওয়্যারে, বিশেষ করে Big Data, Real-time Processing ও Distributed System-এ, NoSQL অত্যন্ত গুরুত্বপূর্ণ। তবে সব ক্ষেত্রে NoSQL সেরা নয়। জটিল Transaction ও ACID Consistency দরকার হলে SQL ডাটাবেসই ভালো পছন্দ। তাই সিস্টেম ডিজাইনের আগে নিজের প্রয়োজন বুঝে ঠিক করুন, SQL না NoSQL।