LEVEL 8
ডেটাবেজ সিস্টেম
Database Systems
এই মডিউল যে প্রশ্নের উত্তর দেয়বিদ্যুৎ চলে গেলেও আমার committed transaction টিকে থাকে কীভাবে?
Database একটা "table রাখার জায়গা" না — এটা একটা storage engine, একটা query optimizer, একটা concurrency control system, আর একটা crash recovery system একসাথে। PostgreSQL হবে আমাদের dissection subject।
লেসন
- 01Storage Engine — file, page, slotted page, tupleDatabase table আসলে fixed-size page-এর file — PostgreSQL-এর ৮ KB page খুলে দেখি: header, line pointer array, উল্টো দিক থেকে বাড়া tuple, slotted-page design-এর যুক্তি, আর প্রতিটা row-র লুকানো overhead।
- 02Buffer Pool — disk যখন memory-তে ভাড়া থাকেPage disk-এ থাকে, কাজ হয় RAM-এ — buffer manager কীভাবে frame ভাড়া দেয়, LRU-র ভিলেন-দৃশ্য থেকে CLOCK আর PostgreSQL-র ring buffer পর্যন্ত replacement policy-র রাজনীতি, hit-rate math আর mmap debate।
- 03B+ Tree Index — database index-এর কারখানাCREATE INDEX-এর ভেতরে কী হয় — PostgreSQL nbtree-র metapage-root-internal-leaf anatomy, high key আর deduplication, index scan-এর ctid-পথ, covering ও index-only scan, প্রতি INSERT-এর per-index খাজনা, bloat, আর leftmost-prefix নিয়ম।
- 04LSM Tree ও SSTable — write-optimized-এর বিপ্লবপ্রতিটা INSERT-এ random page-write নয় — লিখুন memory-তে, flush করুন immutable sorted file-এ, background-এ merge করুন: LSM-tree-র বিপ্লব, compaction-এর দুই school, amplification ত্রিভুজ, bloom filter আর tombstone-র হিসাব।
- 05Hash, Bitmap, GiST, GIN, BRIN — এক index-এর জুগলবন্দি নাB-tree সব খায় না — equality-তে hash, low-cardinality AND/OR-এ bitmap scan, geometry-KNN-এ GiST, jsonb/full-text-এ GIN inverted index, append-only timestamp-এ KB-size BRIN; শেষে কোন query-shape-এ কোনটা — flowchart।
- 06Query Processing — SQL text থেকে result rowsআপনার SQL text database-এর ভেতরে ছোট্ট একটা program হয়ে যায় — parse, rewrite, plan, execute-এর চার-ধাপের যাত্রা, আর সেই যাত্রার X-ray হলো EXPLAIN।
- 07Join Algorithms — nested loop, hash, mergeএকই join তিনভাবে করা যায় আর তিনভাবের খরচ দশগুণে দশগুণ আলাদা — nested loop, hash, merge-এর গণিত, আর PostgreSQL-এ প্রতিটাকে জোর করে চালিয়ে মাপার পদ্ধতি।
- 08Query Optimizer — cost model আর plan searchOptimizer একটা search engine: কোটি সম্ভাব্য plan-এর ভেতর থেকে cost model-এর চোখ দিয়ে একটা বাছে — System-R থেকে geqo পর্যন্ত সেই খোঁজের architecture।
- 09Statistics ও Cardinality Estimation — optimizer-এর চোখOptimizer-এর সব জ্ঞানের উৎস ক'শো page-এর একটা sample — histogram, MCV, n_distinct, correlation কীভাবে সেই sample থেকে জন্ম নেয় আর কখন প্রতারণা করে।
- 10Transactions ও ACID — all-or-nothing-এর চার প্রতিশ্রুতিএকটা bank transfer দুইটা UPDATE — প্রথমটা হলো, দ্বিতীয়টা constraint ভেঙে মরলে প্রথমটাও ফিরে যায় কীভাবে? BEGIN/COMMIT/ROLLBACK-এর শৃঙ্খলা, ACID-এর চার প্রতিশ্রুতির আসল মেকানিজম, savepoint-এর আংশিক undo, fsync-এর durability story।
- 11Isolation Levels ও Anomalies — কতটা 'একা' দরকারDirty read, phantom, write skew — প্রতিটা anomaly-র দুই-session নাটক, চার-ধাপ ladder কোথায় কী আটকায়, PostgreSQL আর MySQL কেন একই নামে ভিন্ন গল্প বলে, আর SERIALIZABLE-এর SSI জাদু।
- 12Locking ও 2PL — strict two-phase আর deadlock-এর খেলাLock-এর শৃঙ্খলা: S/X আর intention-matrix থেকে two-phase rule-এর proof-sketch, strict 2PL-এর cascading-abort নিষেধ, wait-for graph-এ বৃত্ত খুঁজে victim বাছাই — pg_locks-এ সব live।
- 13MVCC — PostgreSQL-এর বাস্তব implementationReaders-never-block-writers-এর ইঞ্জিন: xmin/xmax versioning, snapshot horizon, clog, dead tuples, HOT update, VACUUM-অপরিহার্যতা আর long-transaction-এর বিষ — PostgreSQL concurrency-র হৃৎপিণ্ড খোলা।
- 14WAL ও ARIES Recovery — crash-এর পরে হিসাবCrash যেকোনো মুহূর্তে আসতে পারে, আর buffer pool disk-এ যা-ই লিখে ফেলতে পারে — WAL আর ARIES-এর তিন-pass recovery কীভাবে সব committed কাজ ফিরিয়ে আনে আর সব uncommitted কাজ নীরবে মুছে দেয়।
- 15Checkpoint ও Vacuum — জমাট বাঁধা housekeepingRecovery-র জানালা ছোট রাখতে checkpoint, MVCC-র ময়লা সাফাতে vacuum — দুটোই background housekeeping, দুটোই নিজের নিজের trade-off-এ ভরা।
- 16Replication — streaming আর logical-এর দুই পথWAL stream অন্য machine-এ গেলেই replica — কিন্তু কাঁচা byte না decoded row? Streaming আর logical পথের দুই জগৎ, lag-এর গণিত, আর failover-এর রক্তক্ষয়ী সত্যগুলো।
- 17Partitioning ও Sharding — বড় table ভাঙার গণিতএক machine-এ table ভাঙা আর অনেক machine-এ data ছড়ানো — একই মনস্তত্ত্বের দুই scale; key-বাছাইয়ের ত্রিভুজ আর consistent-hashing-এর minimal-movement গণিত।
- 18CAP ও PACELC — theorem যেটা সবাই ভুল বোঝেPartition হলে Consistency না Availability — বাধ্যত-বাছাই; partition না থাকলে Latency না Consistency — PACELC-ই CAP-এর আসল operational অনুবাদ।
- 19NoSQL — document, KV, wide-column, graphKey-value, document, wide-column, graph — চার পরিবারের NoSQL-এর জন্মকথা, ভেতরের যন্ত্র, লুকানো বিল; আর JSONB-যুগে সীমানা ঝাপসা হয়ে যাওয়ার গল্প।
যা যা থাকছে
- Storage — files, pages, slotted pages, tuples
- Buffer pool ও replacement policy
- Indexes — B+ tree structure ও operations
- LSM trees, SSTables, compaction
- Hash indexes, bitmap, GiST, GIN
- Query processing — parse, plan, execute
- Join algorithms — nested loop, hash join, merge join
- Query optimization ও cost models
- Statistics ও cardinality estimation
- Transactions ও ACID
- Isolation levels ও anomalies
- Locking — 2PL, deadlock detection
- MVCC (PostgreSQL-এর বাস্তব implementation)
- WAL ও ARIES recovery
- Checkpointing ও vacuum
- Replication — streaming, logical
- Partitioning ও sharding
- CAP theorem ও তার প্রকৃত অর্থ
- NoSQL — document, KV, wide-column, graph
প্রজেক্ট
Key-Value Store
●●●○○Append-only log + in-memory index + compaction।
B+ Tree Implementation
●●●●○Disk page সহ insert/delete/split/merge।
Mini SQL Engine
●●●●●SELECT/WHERE/JOIN parse করে execute করা।
PostgreSQL Internals Lab
●●●○○EXPLAIN ANALYZE, pg_stat, page inspection দিয়ে তদন্ত।