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

SQL Database — Relational Database

সারিতে সারিতে data — ৫০ বছর ধরে শক্তিশালী।

📝 কুইজে যান

আপনার বাড়িতে যদি ৩টি ডায়েরি থাকে — একটিতে পরিবারের সদস্য, একটিতে আত্মীয়, একটিতে বন্ধু। প্রতিটিতে কলাম: নাম, বয়স, ফোন। এই tabular structure-ই relational database-এর মূল ভাবনা।

SQL Database কী?

SQL Database (Relational Database) = data table-এ সংরক্ষিত যেখানে প্রতিটি row একটি record এবং column একটি attribute। Table-এর মধ্যে সম্পর্ক (relationship) থাকে — তাই "relational"।

SQL = Structured Query Language — RDBMS-এ data manipulate করার ভাষা।

মূল কাঠামো

  • Database: সবচেয়ে উপরের container।
  • Table: একটি specific entity (users, orders, products)।
  • Column (field): Data-র attribute — name, email, age।
  • Row (record/tuple): একটি specific entry।
  • Primary Key: প্রতিটি row-কে unique করে।
  • Foreign Key: অন্য table-এর সাথে link।
users table: +----+-------+------------------+ | id | name | email | +----+-------+------------------+ | 1 | Mahfuz| m@mahfuzmia.dev | | 2 | Sumi | sumi@email.com | +----+-------+------------------+

Schema ও Data Types

Schema = table-এর structure-এর blueprint। SQL DB schema-driven — column type ও constraint আগে define করতে হয়।

সাধারণ data types:

  • INT, BIGINT — সংখ্যা
  • VARCHAR(n), TEXT — string
  • DATE, TIMESTAMP — সময়
  • BOOLEAN — true/false
  • DECIMAL(p,s) — money/precision
  • JSON, JSONB — flexible (PostgreSQL)

SQL Commands-এর শ্রেণীভাগ

  • DDL (Data Definition): CREATE, ALTER, DROP — schema পরিবর্তন।
  • DML (Data Manipulation): INSERT, UPDATE, DELETE — data পরিবর্তন।
  • DQL (Data Query): SELECT — data fetch।
  • DCL (Data Control): GRANT, REVOKE — permission।
  • TCL (Transaction Control): COMMIT, ROLLBACK।

JOIN — Table যুক্ত করা

একাধিক table থেকে data মিলিয়ে আনতে JOIN ব্যবহৃত হয়।

INNER JOIN

  • দুই table-এর match হওয়া row
  • সবচেয়ে কমন
  • Match না থাকলে exclude

LEFT JOIN

  • Left table-এর সব row
  • Right-এ match না থাকলে NULL

RIGHT JOIN

  • Right-এর সব row
  • Left-এ match না থাকলে NULL

FULL OUTER JOIN

  • উভয় table-এর সব row
  • Match না হলে NULL
SELECT u.name, o.product FROM users u INNER JOIN orders o ON u.id = o.user_id WHERE o.amount > 1000;

Relational DB-এর শক্তি

  • ACID Transaction: Bank transfer-এর মতো critical operation।
  • Strong consistency: Write-এর পর সবাই latest দেখবে।
  • Powerful query: JOIN, GROUP BY, complex aggregate।
  • Schema validation: Invalid data DB-তে আসতে পারে না।
  • Mature ecosystem: ৫০ বছরের tooling।
  • Standardized: SQL ANSI standard।

সীমাবদ্ধতা

  • Vertical scaling primary: Horizontal (sharding) কঠিন।
  • Schema rigidity: Production-এ schema change কঠিন।
  • JOIN expensive at scale: Million row-এ slow হয়।
  • Object-relational mismatch: OOP code-এ map করা জটিল (ORM-এর জন্ম)।
  • PostgreSQL: Modern বিশ্বে সবচেয়ে লোভনীয় — JSON, full-text search, advanced features।
  • MySQL: ওয়েবের হৃদয় — সবচেয়ে বহুল ব্যবহৃত (WordPress, Facebook প্রথমে)।
  • SQLite: File-based, embedded — mobile, browser-এ।
  • Oracle: Enterprise — banking, healthcare।
  • Microsoft SQL Server: Windows ecosystem।
  • MariaDB: MySQL-এর fork — open-source-focused।

ACID Properties

  • Atomicity: Transaction-এ সব হবে বা কিছুই না।
  • Consistency: DB constraint বজায় থাকবে।
  • Isolation: Concurrent transaction-এ একে অপরকে বিরক্ত করবে না।
  • Durability: Commit হলে stay forever (crash-এও)।

বাস্তব উদাহরণ

  • Booking.com: PostgreSQL-এ সব booking, ঘর, payment।
  • Instagram: Original — PostgreSQL।
  • Banking: Oracle/DB2 (SLA-bound, audit-heavy)।
  • Stack Overflow: Microsoft SQL Server।

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

  1. "SQL ধীর": Indexed query সঠিক হলে SQL DB খুব দ্রুত — million row-এ ms।
  2. "NoSQL সবসময় modern": না — relational DB এখনও ৭০%+ application-এ primary store।
  3. "SQL = MySQL": SQL ভাষা; MySQL একটি implementation। PostgreSQL, Oracle আলাদা DB।

Best Practices

  • সব column-এ NOT NULL default — explicit nullable।
  • Foreign key constraint enable — referential integrity।
  • Index frequently filtered/joined column-এ।
  • Prepared statement — SQL injection prevention।
  • Connection pool — direct connection নয়।
  • Query plan analyze (EXPLAIN) — slow query optimize।

📌 চ্যাপ্টার সারমর্ম

  • SQL DB table-row-column structure।
  • Schema-driven; ACID guarantee।
  • JOIN দিয়ে multiple table থেকে data।
  • PostgreSQL, MySQL, Oracle — top RDBMS।
  • Strong consistency কিন্তু horizontal scale কঠিন।