NoSQL در عمل: Redis و Cassandra
دو ستاره NoSQL: Redis (ساختارهای داده در حافظه) و Cassandra (ستونی توزیعشده) — چه زمانی کدام؟
Redis — چاقوی سوئیسی حافظه
Redis = دیتابیس در RAM با ساختارهای داده غنی:
| ساختار | کاربرد |
|---|---|
| String | کش ساده، شمارنده (INCR) |
| Hash | شیء (پروفایل کاربر) |
| List | صف، تایملاین (LPUSH/LRANGE) |
| Set | مجموعه، فالوورها، یکتاسازی |
| Sorted Set | لیدربورد! (امتیاز + ترتیب) |
| Pub/Sub + Stream | پیامرسانی سبک |
ویژگیها: فوق سریع (~۱۰۰K+ ops/s)، TTL بومی، Persistence اختیاری (AOF/RDB)، Atomic عملیاتها.
کاربردها: کش، Session، Rate Limiter، لیدربورد، صف سبک، قفل توزیعشده!
Cassandra — غول نوشتن
Cassandra = ستونی، بدون Master، مقیاس خطی:
- معماری: همه نودها برابر (Peer-to-Peer) — بدون تکنقطه!
- مدل: جدول عریض؛ کوئری بر اساس کلید Partition (ایندکس = کلید!)
- نوشتن: فوق سریع (append-only + LSM Tree) — لاگ، IoT، متریک
- مقیاس: نود اضافه = ظرفیت خطی بیشتر؛ تحمل پارتیشن عالی (AP!)
قید مهم: کوئریها باید از اول طراحی شوند! (WHERE فقط روی کلید) — انعطاف SQL ندارد.
مقایسه
| معیار | Redis | Cassandra |
|---|---|---|
| حافظه | RAM (محدود!) | دیسک (عظیم) |
| سرعت خواندن | نانونی ✓✓ | میلیثانیه |
| نوشتن عظیم | خوب | فوقالعاده ✓✓ |
| سازگاری | قابل تنظیم | Eventual (تنظیمپذیر) |
| حجم داده | GB ها | PB ها ✓✓ |
| کاربرد | کش، Session، Real-time | سری زمانی، لاگ، پیام |
نکته: این دو رقیب نیستند — مکملاند! سیستم بزرگ: Redis جلوی دیتابیس (کش) + Cassandra برای لاگ عظیم. انتخاب = «چه کوئری؟ چه حجم؟ چه تأخیر؟»
جمعبندی
- Redis: RAM + ساختارهای غنی — کش و Real-time
- Cassandra: ستونی P2P — نوشتن عظیم و مقیاس خطی
- Redis برای «سریع»، Cassandra برای «زیاد»
- در سیستم بزرگ، هر دو کنار هم!
این مبحث بخشی از دوره آموزش کامل طراحی سیستم (System Design) است.