NoSQL — MongoDB, Redis, Cassandra

লেসন ১৬ / ৫০

NoSQL Types

TypeউদাহরণUse
DocumentMongoDBCMS, profile
Key-ValueRedisCache, session
ColumnCassandraTime-series, IoT
GraphNeo4jSocial, recommendation

MongoDB ⭐

db.users.insertOne({
  name: "Rahim", email: "rahim@x.com",
  addresses: [{type: "home", city: "Dhaka"}],
  tags: ["vip"]
});

db.users.find({"addresses.city": "Dhaka"});
db.users.updateOne({_id: id}, {$set: {name: "Karim"}});

// Aggregation
db.orders.aggregate([
  {$match: {status: "completed"}},
  {$group: {_id: "$customerId", total: {$sum: "$amount"}}},
  {$sort: {total: -1}}, {$limit: 10}
]);

db.users.createIndex({email: 1}, {unique: true});

Schema Design

  • Embed: 1:N small (addresses)
  • Reference: 1:N large, M:N
  • Read pattern অনুযায়ী
  • 16MB document limit

Redis ⭐

SET user:1 "Rahim"
EXPIRE user:1 3600

HSET user:1 name "Rahim" age 25
LPUSH tasks "task1"; RPOP tasks
SADD tags "php" "mysql"
ZADD scores 100 "Rahim"
ZREVRANGE scores 0 9 WITHSCORES

PUBLISH channel "msg"
SUBSCRIBE channel

Use Cases

Cache, session, rate limit, leaderboard, pub/sub, distributed lock।

Cassandra

Massive scale (Netflix, Apple)। Linear scalability, no SPOF, eventual consistency, CQL।

CAP Theorem ⭐

     Consistency
        /\
   CA  /  \  CP (MongoDB)
       /----\
      AP (Cassandra, Dynamo)
   Availability  Partition Tolerance

Network failure inevitable → CP বা AP।

BASE vs ACID

ACIDBASE
Atomic, ConsistentBasically Available
Isolated, DurableSoft state, Eventual