NoSQL
NoSQL হচ্ছে এক ধরনের ডাটাবেজ সিস্টেম, যেটা প্রচলিত Relational Database (যেমন MySQL, PostgreSQL, Oracle) এর মতো টেবিল ভিত্তিক নয়।
👉 NoSQL এর মূল ধারণা:
এর full form হলো "Not Only SQL"।
-
এটি মূলত unstructured, semi-structured অথবা structured data store করার জন্য ব্যবহৃত হয়।
-
Flexibility বেশি এবং horizontal scaling সহজ।
-
Schema খুব rigid নয়, মানে একেকটা ডকুমেন্টে ভিন্ন ভিন্ন structure থাকতে পারে।
👉 কেন NoSQL ব্যবহার করা হয়:
যখন বড় পরিমাণ ডেটা (Big Data) handle করতে হয়।
-
যখন data খুব দ্রুত update, insert বা query করতে হয়।
-
যখন data এর structure বারবার পরিবর্তন হতে পারে।
👉 NoSQL এর প্রধান ধরনের ডাটাবেজ:
-
Document Database → যেমন MongoDB (JSON এর মতো ডকুমেন্টে data store করে)।
-
Key-Value Store → যেমন Redis (simple key-value pair এ data রাখে)।
-
Column-based Store → যেমন Cassandra, HBase (বড় ডাটার জন্য কলাম ভিত্তিক storage)।
-
Graph Database → যেমন Neo4j (node এবং relationship আকারে data রাখে, social network এর জন্য popular)।
সংক্ষেপে:
NoSQL ডাটাবেজ হলো আধুনিক, flexible এবং scalable ডাটাবেজ সিস্টেম যা অনেক বড়, dynamic এবং non-relational data manage করার জন্য তৈরি।
----------------------------------------------------------------------------------------------------------------------------
🔑 মূল বৈশিষ্ট্যগুলো
-
Schema-less (Flexible Structure)
- ডেটা রাখার জন্য rigid schema লাগে না।
-
একই collection/table-এ ভিন্ন ভিন্ন structure-এর ডেটা রাখা যায়।
-
Scalability (Horizontal Scaling)
- সহজে সার্ভার বাড়িয়ে (scale-out) অনেক বড় ডেটা হ্যান্ডেল করা যায়।
-
Relational DB সাধারণত vertical scaling করে, কিন্তু NoSQL horizontal scaling-এ efficient।
-
High Performance
- খুব দ্রুত read এবং write করা যায়।
-
Low latency সহ millions of requests handle করতে পারে।
-
Distributed Architecture
- Data একাধিক সার্ভারে distributed হয়ে থাকে।
-
Fault-tolerant এবং High Availability থাকে।
-
Variety of Data Models
একেকটা NoSQL ডাটাবেজ আলাদা আলাদা ভিত্তিতে কাজ করে:
Document (MongoDB)
-
Key-Value (Redis)
-
Column (Cassandra)
-
Graph (Neo4j)
-
Big Data Friendly
- বড়, unstructured এবং semi-structured data handle করতে সবচেয়ে উপযুক্ত।
-
Replication & Sharding
ডেটা multiple servers-এ replicate হয়।
-
Sharding এর মাধ্যমে data split করে আলাদা আলাদা সার্ভারে রাখা যায়।
-
Dynamic Queries
- JSON, key-value lookup, graph traversal ইত্যাদি query সাপোর্ট করে।
👉 সংক্ষেপে, NoSQL হলো flexible, scalable, high-performance এবং modern data management system, যা Big Data ও real-time application-এর জন্য তৈরি।
-----------------------------------------------------------------------------------------------------------------------------
Relational Database (SQL) বনাম NoSQL :
বিষয় | Relational Database (SQL) | NoSQL Database |
---|---|---|
ডেটা মডেল | Table-based (Row & Column) | বিভিন্ন মডেল (Document, Key-Value, Column, Graph) |
Schema | Fixed schema (rigid) | Dynamic schema (flexible) |
Scalability | Vertical Scaling (server power বাড়াতে হয়) | Horizontal Scaling (নতুন সার্ভার যুক্ত করে) |
Query Language | Structured Query Language (SQL) | আলাদা query system (JSON query, key lookup, graph traversal ইত্যাদি) |
Transaction | Strong ACID properties (Atomicity, Consistency, Isolation, Durability) | CAP Theorem |
Performance | Moderate (complex join করলে ধীর হয়) | High speed read/write, real-time performance |
Data Type | Mostly structured data | Structured, semi-structured, unstructured সবই |
Use Case | Banking system, ERP, CRM, traditional apps | Big Data, Real-time apps, IoT, Social networks, E-commerce |
Example | MySQL, PostgreSQL, Oracle, SQL Server | MongoDB, Cassandra, Redis, Neo4j, DynamoDB |
👉 সহজ করে বললে:
SQL ডাটাবেজ rigid কিন্তু খুবই consistent এবং structured data-এর জন্য উপযুক্ত।
-
NoSQL ডাটাবেজ flexible, scalable এবং Big Data বা real-time system-এর জন্য বেশি ভালো।
---------------------------------------------------------------------------------------------------------------------------
✅ Advantages of NoSQL
-
Flexible Schema
- কোনো fixed schema দরকার নেই।
-
বিভিন্ন structure-এর ডেটা একই জায়গায় রাখা যায়।
-
High Scalability
- Horizontal scaling সহজে করা যায় (নতুন সার্ভার যোগ করলেই capacity বাড়ে)।
-
High Performance
- Low latency সহ অনেক বড় read/write load handle করতে পারে।
-
Big Data Friendly
- Unstructured, semi-structured, real-time data সহজে ম্যানেজ করা যায়।
-
Variety of Models
- Document, Key-Value, Column, Graph — বিভিন্ন ধরনের use case cover করে।
-
High Availability & Fault Tolerance
- Data replication এবং sharding এর কারণে সার্ভার নষ্ট হলেও সিস্টেম চলতে থাকে।
❌ Disadvantages of NoSQL
-
Lack of Standardization
- কোনো standard query language নেই (প্রতিটি DBMS আলাদা syntax ব্যবহার করে)।
-
Limited ACID Support
- Traditional SQL এর মতো strong transaction (ACID) সাপোর্ট করে না, বরং BASE model use করে।
-
Complex Querying
- Complex relationship ও join handle করা কঠিন।
-
Less Matured Technology
-
SQL ডাটাবেজ অনেক পুরনো ও mature, কিন্তু NoSQL তুলনামূলকভাবে নতুন, তাই কিছু feature এখনও সীমিত।
-
-
Data Consistency Problem
-
অনেক সময় eventual consistency হয়, অর্থাৎ data সব node-এ সঙ্গে সঙ্গে update নাও হতে পারে।
👉 সংক্ষেপে:
NoSQL → Flexible, scalable, fast কিন্তু consistency ও standardization কম।
-
SQL → Stable, consistent, relationally strong কিন্তু rigid এবং কম scalable।
-----------------------------------------------------------------------------------------------------------------------------
BASE Property
BASE Property হলো NoSQL ডাটাবেজে ব্যবহৃত একটা consistency মডেল।
এটা মূলত ACID Property (SQL এ ব্যবহৃত)-এর বিকল্প ধারণা।
1️⃣ Basically Available
মানে হলো, সিস্টেম সবসময় কিছু না কিছু response দেবে।
📌 উদাহরণ:
ধরা যাক, আপনি Amazon থেকে অর্ডার দিচ্ছেন। হঠাৎ কোনো সার্ভার নষ্ট হয়ে গেল।
SQL সিস্টেম হলে হয়তো পুরো অর্ডার প্রসেসিং বন্ধ হয়ে যেত।
-
কিন্তু NoSQL (যেমন DynamoDB, Cassandra) হলে — সিস্টেম fallback সার্ভার থেকে response দিয়ে দেয়।
👉 ফলে আপনার অর্ডার fail না হয়ে pending অবস্থায় থাকে।
2️⃣ Soft State
মানে হলো, ডেটার state সময়ের সাথে পরিবর্তনশীল হতে পারে, rigid ভাবে একদম consistent থাকতে হবে এমন নয়।
📌 উদাহরণ:
ধরা যাক, Facebook এ আপনি আপনার প্রোফাইল ছবিটা পরিবর্তন করলেন।
আপনি পরিবর্তন করার পরপরই সব user একসাথে updated picture নাও দেখতে পারে।
-
কেউ পুরনো ছবি দেখতে পারে, কেউ নতুন দেখতে পারে।
👉 কিন্তু কিছু সময় পরে সবার কাছে নতুন profile picture update হয়ে যাবে।
3️⃣ Eventually Consistent
মানে হলো, একসাথে সব node–এ consistent হওয়া লাগবে না, কিন্তু কিছু সময় পর সব node একই ডেটা show করবে।
📌 উদাহরণ:
Twitter এ আপনি একটা টুইট করলেন।
- সাথে সাথে হয়তো New York সার্ভারে টুইট save হলো, কিন্তু Tokyo সার্ভারে তখনও পৌঁছায়নি।
Tokyo-তে থাকা user হয়তো কয়েক সেকেন্ড পরে আপনার টুইট দেখতে পাবে।
👉 তবে শেষমেশ সব সার্ভার synchronize হয়ে consistent হয়ে যাবে।
🟢 সংক্ষেপে BASE vs ACID
ACID (SQL) → Transaction হবে consistent + safe, কিন্তু scalability কম।
-
BASE (NoSQL) → Transaction হবে scalable + available, কিন্তু সঙ্গে সঙ্গে consistent নাও হতে পারে (eventual consistency থাকবে)।