SQL বনাম NoSQL: কোন database বাছবেন
SQL আর NoSQL আলাদা কাজের যন্ত্র। প্রতিটি কীসে ভালো, NoSQL-এর চার পরিবার, আর কেন PostgreSQL শক্ত ডিফল্ট, জানুন।

SQL (relational) database data রাখে নির্দিষ্ট schema-র table-এ এবং join ব্যবহার করে। NoSQL হলো সেই মডেল না মানা database-দের ঢিলেঢালা নাম: এরা document, key-value, wide column বা graph রাখতে পারে।
SQL যা দেয়
- ACID transaction: ট্রান্সফার হয় পুরোপুরি, নয়তো একদমই হয় না।
- সম্পর্কিত data জুড়ে join ও নমনীয় query।
- কড়া schema, যা data-র মান রক্ষা করে।
- পরিপক্ক টুল: PostgreSQL, MySQL, SQLite।
NoSQL যা দেয়
- নমনীয় schema: আলাদা আকারের record রাখা যায়।
- বিশাল volume-এ সহজ horizontal scaling, প্রায়ই ডিজাইনেই।
- নির্দিষ্ট access pattern-এর সাথে মানানো মডেল।
চার ধরনের NoSQL
| ধরন | কীসে ভালো | উদাহরণ |
|---|---|---|
| Key-value | cache, session, counter | Redis, DynamoDB |
| Document | কনটেন্ট, ক্যাটালগ, profile | MongoDB, Firestore |
| Wide-column | বিশাল write-heavy data, time series | Cassandra, HBase |
| Graph | সম্পর্ক, recommendation | Neo4j |
কীভাবে বাছবেন
তিনটি প্রশ্ন করুন:
- Data কি খুব সম্পর্কিত এবং transaction দরকার? SQL নিন।
- Access pattern জানা, আর বিশাল scale বা খুব কম latency লাগবে? NoSQL ভাবুন।
- Schema কি ক্রমাগত বদলায়? Document store মানাতে পারে, তবে PostgreSQL-এর JSON column দিয়েও প্রায়ই চলে।
সাধারণ ভুল
Traffic আসার আগেই "scale করে" বলে NoSQL নেওয়া। বেশিরভাগ প্রোডাক্ট ভালোভাবে tune করা একটি PostgreSQL server ও replica-কে ছাড়িয়ে যায় না। অনেক আসল সিস্টেম দুটোই ব্যবহার করে: মূল data SQL-এ, আর caching-এ Redis।
মূল কথা: ডিফল্ট হিসেবে relational নিন, আর নাম বলতে পারেন এমন নির্দিষ্ট কাজের জন্য NoSQL যোগ করুন।
System Design সিরিজের 7 নম্বর পর্ব (মোট ১৫)। আগের পর্ব: CDN কী এবং কীভাবে সাইট দ্রুত করে.


