NoSQL Database
"Not Only SQL" — flexible schema, massive scale।
আপনার একটি social network বানাচ্ছেন — প্রতিটি user-এর profile-এ আলাদা field। কারো hobby আছে, কারো নেই; কারো ১০টা phone, কারো ১টা। SQL-এ আগে থেকে সব column define করতে হয়। কিন্তু NoSQL-এ — যা চাই, তা যোগ করুন।
NoSQL কী?
NoSQL ("Not Only SQL") = relational model-এর বাইরে database সমষ্টি। ১৯৯০-এর শেষ ও ২০০০-এর শুরুতে web-এর scale-এর চাহিদায় জন্ম।
কেন NoSQL?
- Flexible schema: Field ইচ্ছেমতো যোগ/সরানো।
- Horizontal scale: পেটাবাইট ডেটা — অনেক server-এ distribute।
- High throughput: Million ops/sec।
- Specialized data: Graph, geospatial, time-series।
- Developer speed: ORM lift নেই; JSON সরাসরি।
NoSQL-এর ৪ ধরন
১. Document Database
Data JSON/BSON document হিসেবে store। প্রতিটি document-এর schema আলাদা হতে পারে।
{
"_id": "user_001",
"name": "Mahfuz",
"email": "m@mahfuzmia.dev",
"addresses": [
{ "type": "home", "city": "Dhaka" },
{ "type": "office", "city": "Chittagong" }
]
}
- উদাহরণ: MongoDB, CouchDB, Firestore।
- ব্যবহার: CMS, catalog, user profile, real-time data।
- সুবিধা: Object-oriented friendly, JOIN ছাড়া nested data।
- অসুবিধা: Consistency কম, complex query কঠিন।
২. Key-Value Store
সবচেয়ে সরল — এক key, এক value। Hash map-এর মতো।
- উদাহরণ: Redis, Memcached, DynamoDB, etcd।
- ব্যবহার: Caching, session store, real-time leaderboard, queue।
- সুবিধা: অতি দ্রুত (O(1)), সরল API।
- অসুবিধা: Complex query অসম্ভব — শুধু key দিয়ে।
৩. Wide-Column Store
Row-এর মধ্যে dynamic number of column। Cassandra-র মূল ভাবনা।
- উদাহরণ: Apache Cassandra, HBase, ScyllaDB।
- ব্যবহার: Time-series, IoT, message log, write-heavy workload।
- সুবিধা: Massive write throughput, linear horizontal scale।
- অসুবিধা: Eventually consistent, complex query কঠিন।
৪. Graph Database
Node ও Edge — relationship-ই center। Social network-এর জন্য আদর্শ।
(Mahfuz)-[FRIEND]->(Sumi)-[FRIEND]->(Karim)
(Mahfuz)-[FOLLOW]->(Anthropic)
- উদাহরণ: Neo4j, ArangoDB, JanusGraph।
- ব্যবহার: Social network, fraud detection, recommendation engine।
- সুবিধা: Multi-hop query (friend-of-friend) দ্রুত।
- অসুবিধা: Specialized — সবকিছুতে কাজ করে না।
৪টির তুলনা
Document
- JSON-like
- Flexible
- MongoDB
- Most popular
Key-Value
- Simplest
- Fastest
- Redis
- Cache, session
Wide-Column
- Massive scale
- Write-heavy
- Cassandra
- Time-series, log
Graph
- Relationship
- Multi-hop query
- Neo4j
- Social, fraud
BASE Properties
NoSQL সাধারণত BASE follow করে (ACID-এর বিপরীত):
- Basically Available: সবসময় respond — কিছু না কিছু দেয়।
- Soft state: State change হতে পারে input ছাড়া।
- Eventually consistent: দেরিতে হলেও সব node converge হবে।
কখন NoSQL ব্যবহার করবেন?
- Schema দ্রুত পরিবর্তনশীল।
- Massive scale (terabyte+, millions QPS)।
- Read/write throughput consistency-এর চেয়ে গুরুত্বপূর্ণ।
- Specialized data (graph, time-series, geospatial)।
- Hierarchical/nested data (JSON document)।
কখন NoSQL ব্যবহার করবেন না?
- ACID transaction critical (banking)।
- Complex relationship + JOIN দরকার।
- Strong consistency বাধ্যতামূলক।
- Reporting/analytics সব column-এ ad-hoc query।
বাস্তব উদাহরণ
- Facebook Messenger: HBase (wide-column)।
- Instagram: Cassandra (notification, feed)।
- Netflix: Cassandra (viewing history) + DynamoDB।
- Uber: Cassandra + Redis + custom Schemaless।
- LinkedIn: Voldemort (KV) + Espresso (document)।
সাধারণ ভুল ধারণা
- "NoSQL = no SQL": না — "Not Only SQL"। অনেক NoSQL DB-তেই SQL-like query language আছে (Cassandra CQL)।
- "Schema নেই": Implicit schema থাকেই — code-এ। DB level-এ নেই।
- "NoSQL সবসময় ভালো": Use case-এর উপর — wrong choice হলে disaster।
Best Practices
- Query pattern আগে design করুন — তারপর schema।
- Denormalization স্বাভাবিক — duplicate data accept করুন।
- Index ভেবে যোগ করুন — write performance impact করে।
- Backup ও replication enable।
- Eventual consistency-র implication বুঝুন।
📌 চ্যাপ্টার সারমর্ম
- NoSQL = Not Only SQL — relational-এর বিকল্প।
- ৪ ধরন: Document, Key-Value, Wide-Column, Graph।
- BASE properties (Basically Available, Soft state, Eventually consistent)।
- Massive scale ও flexible schema-র জন্য আদর্শ।
- ACID transaction দরকার হলে SQL preferred।