Part 2 · ডেটাবেস 📖 ১৪ মিনিট পড়া 📝 ২০টি কুইজ

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)।

সাধারণ ভুল ধারণা

  1. "NoSQL = no SQL": না — "Not Only SQL"। অনেক NoSQL DB-তেই SQL-like query language আছে (Cassandra CQL)।
  2. "Schema নেই": Implicit schema থাকেই — code-এ। DB level-এ নেই।
  3. "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।