هنگام انتخاب، استفاده و نگهداری از یک پایگاه داده، درک ساختار داخلی آن ضروری است. اما با وجود پایگاههای داده توزیعشده و ابزارهای فراوان موجود امروزی، اغلب دشوار است که بفهمیم هر کدام چه چیزی ارائه میدهند و چه تفاوتهایی با هم دارند. با این راهنمای عملی، الکس پتروف توسعهدهندگان را از طریق مفاهیم پشت ساختار داخلی موتورهای ذخیرهسازی و پایگاه داده مدرن راهنمایی میکند. در طول کتاب، مطالب مرتبطی را که از کتابها، مقالات، پستهای وبلاگ متعدد و کد منبع چندین پایگاه داده منبع باز جمعآوری شدهاند، بررسی خواهید کرد. این منابع در پایان بخشهای اول و دوم فهرست شدهاند. متوجه خواهید شد که مهمترین تفاوتها در میان بسیاری از پایگاههای داده مدرن در زیرسیستمهایی نهفته است که نحوه سازماندهی ذخیرهسازی و نحوه توزیع دادهها را تعیین میکنند. این کتاب به بررسی موارد زیر میپردازد: موتورهای ذخیرهسازی (Storage engines): طبقهبندی و دستهبندی ذخیرهسازی را کاوش میکند و به موتورهای ذخیرهسازی مبتنی بر درخت B و موتورهای ذخیرهسازی ساختاریافته با لاگ (Log Structured) تغییرناپذیر میپردازد، همراه با تفاوتها و موارد استفاده برای هر یک. بلوکهای سازنده ذخیرهسازی: نحوه سازماندهی فایلهای پایگاه داده برای ساخت ذخیرهسازی کارآمد را با استفاده از ساختارهای داده کمکی مانند کش صفحه (Page Cache)، بافر پول (Buffer Pool) و لاگ پیشنویس (Write-Ahead Log) میآموزید. سیستمهای توزیعشده: گام به گام نحوه اتصال گرهها و فرآیندها و ساخت الگوهای ارتباطی پیچیده را میآموزید. خوشههای پایگاه داده: مدلهای سازگاری که معمولاً توسط پایگاههای داده مدرن استفاده میشوند و نحوه دستیابی سیستمهای ذخیرهسازی توزیعشده به سازگاری را بررسی میکند.
اشتراکی

با مرور فصلها، ساختار ، محتوای کتاب را به سرعت بشناسید.
با مرور فصلهای این کتاب میتونی خیلی سریع بفهمی هر بخش چی یاد میده، ساختار کلی چطوره و از کجا باید شروع کنی. هر فصل روی یک مفهوم یا مهارت خاص تمرکز داره و موضوعات اصلیش رو میبینی تا انتخابت آگاهانهتر باشه. چه بخوای کل کتاب رو دنبال کنی، چه فقط یک بخش خاص رو دنبال کنی، این نما کمکت میکنه مسیرت رو پیدا کنی.
وظیفه اصلی هر سیستم مدیریت پایگاه داده، ذخیرهسازی مطمئن دادهها و در دسترس قرار دادن آنها برای کاربران است. ما از پایگاههای داده به عنوان منبع اصلی داده استفاده میکنیم و این به ما کمک میکند تا دادهها را بین بخشهای مختلف برنامههایمان به اشتراک بگذاریم. به جای یافتن راهی برای ذخیره و بازیابی اطلاعات و ابداع روشی جدید برای سازماندهی دادهها هر بار که یک برنامه جدید ایجاد میکنیم، از پایگاههای داده استفاده میکنیم. به این ترتیب میتوانیم به جای زیرساخت، بر منطق برنامه تمرکز کنیم.
از آنجایی که اصطلاح سیستم مدیریت پایگاه داده (DBMS) نسبتاً حجیم است، در سراسر این کتاب از اصطلاحات فشردهتر، سیستم پایگاه داده و پایگاه داده، برای اشاره به همین مفهوم استفاده میکنیم.
پایگاههای داده سیستمهای ماژولار هستند و از چندین بخش تشکیل شدهاند: یک لایه انتقال که درخواستها را میپذیرد، یک پردازشگر پرسوجو که کارآمدترین راه برای اجرای پرسوجوها را تعیین میکند، یک موتور اجرا که عملیات را انجام میدهد، و یک موتور ذخیرهسازی (Storage engine) (به «معماری DBMS» مراجعه کنید).
موتور ذخیرهسازی (Storage engine) (یا موتور پایگاه داده) یک جزء نرمافزاری از سیستم مدیریت پایگاه داده است که مسئول ذخیرهسازی، بازیابی و مدیریت دادهها در حافظه و روی دیسک است و برای ثبت یک حافظه پایدار و بلندمدت از هر گره طراحی شده است [REED78]. در حالی که پایگاههای داده میتوانند به پرسوجوهای پیچیده پاسخ دهند، موتورهای ذخیرهسازی به دادهها با جزئیات بیشتری نگاه میکنند و یک API دستکاری داده ساده ارائه میدهند که به کاربران امکان میدهد رکوردها را ایجاد، بهروزرسانی، حذف و بازیابی کنند. یک راه برای نگاه به این موضوع این است که سیستمهای مدیریت پایگاه داده، برنامههایی هستند که بر روی موتورهای ذخیرهسازی ساخته شدهاند و یک شمای (schema) و یک پرسوجو ...

مقدمه و بررسی اجمالی
DBMS Architecture • Memory- Versus Disk-Based DBMS • Durability in Memory-Based Stores • Column- Versus Row-Oriented DBMS • Row-Oriented Data Layout • Column-Oriented Data Layout • Distinctions and Optimizations • Wide Column Stores • Data Files and Index Files • Data Files • Index Files • Primary Index as an Indirection • Buffering, Immutability, and Ordering • Summary
درحال تولید...

مبانی درخت B
Binary Search Trees • Tree Balancing • Trees for Disk-Based Storage • Disk-Based Structures • Hard Disk Drives • Solid State Drives • On-Disk Structures • Ubiquitous B-Trees • B-Tree Hierarchy • Separator Keys • B-Tree Lookup Complexity • B-Tree Lookup Algorithm • Counting Keys • B-Tree Node Splits • B-Tree Node Merges • Summary
درحال تولید...

فرمتهای فایل
Motivation • Binary Encoding • Primitive Types • Strings and Variable-Size Data • Bit-Packed Data: Booleans, Enums, and Flags • General Principles • Page Structure • Slotted Pages • Cell Layout • Combining Cells into Slotted Pages • Managing Variable-Size Data • Versioning • Checksumming • Summary
درحال تولید...

پیادهسازی درختان B
Page Header • Magic Numbers • Sibling Links • Rightmost Pointers • Node High Keys • Overflow Pages • Binary Search • Binary Search with Indirection Pointers • Propagating Splits and Merges • Breadcrumbs • Rebalancing • Right-Only Appends • Bulk Loading • Compression • Vacuum and Maintenance • Fragmentation Caused by Updates and Deletes • Page Defragmentation • Summary
درحال تولید...

پردازش تراکنش و بازیابی
Buffer Management • Caching Semantics • Cache Eviction • Locking Pages in Cache • Page Replacement • Recovery • Log Semantics • Operation Versus Data Log • Steal and Force Policies • ARIES • Concurrency Control • Serializability • Transaction Isolation • Read and Write Anomalies • Isolation Levels • Optimistic Concurrency Control • Multiversion Concurrency Control • Pessimistic Concurrency Control • Lock-Based Concurrency Control • Summary
درحال تولید...

انواع درخت B
Copy-on-Write • Implementing Copy-on-Write: LMDB • Abstracting Node Updates • Lazy B-Trees • WiredTiger • Lazy-Adaptive Tree • FD-Trees • Fractional Cascading • Logarithmic Runs • Bw-Trees • Update Chains • Taming Concurrency with Compare-and-Swap • Structural Modification Operations • Consolidation and Garbage Collection • Cache-Oblivious B-Trees • van Emde Boas Layout • Summary
درحال تولید...

ذخیرهسازی ساختاریافته با لاگ
LSM Trees • LSM Tree Structure • Updates and Deletes • LSM Tree Lookups • Merge-Iteration • Reconciliation • Maintenance in LSM Trees • Read, Write, and Space Amplification • RUM Conjecture • Implementation Details • Sorted String Tables • Bloom Filters • Skiplist • Disk Access • Compression • Unordered LSM Storage • Bitcask • WiscKey • Concurrency in LSM Trees • Log Stacking • Flash Translation Layer • Filesystem Logging • LLAMA and Mindful Stacking • Open-Channel SSDs • Summary
درحال تولید...
بدون سیستمهای توزیعشده (Distributed systems)، ما قادر به برقراری تماس تلفنی، انتقال پول یا تبادل اطلاعات در فواصل طولانی نبودیم. ما روزانه از سیستمهای توزیعشده استفاده میکنیم. گاهی اوقات، حتی بدون اینکه متوجه شویم: هر برنامه کلاینت/سرور یک سیستم توزیعشده است.
برای بسیاری از سیستمهای نرمافزاری مدرن، مقیاسگذاری عمودی (vertical scaling) (مقیاسگذاری با اجرای همان نرمافزار بر روی یک ماشین بزرگتر، سریعتر با CPU، RAM بیشتر یا دیسکهای سریعتر) امکانپذیر نیست. ماشینهای بزرگتر گرانتر، سختتر قابل تعویض هستند و ممکن است نیاز به نگهداری ویژه داشته باشند. یک جایگزین، مقیاسگذاری افقی (horizontal scaling) است: اجرای نرمافزار بر روی چندین ماشین متصل از طریق شبکه و کار کردن به عنوان یک موجودیت منطقی واحد.
سیستمهای توزیعشده ممکن است هم از نظر اندازه، از چند ماشین تا صدها ماشین، و هم از نظر ویژگیهای شرکتکنندگانشان، از دستگاههای کوچک دستی یا حسگر تا رایانههای با کارایی بالا، متفاوت باشند.
زمانی که سیستمهای پایگاه داده عمدتاً بر روی یک گره واحد اجرا میشدند، مدتهاست که گذشته است، و اکثر سیستمهای پایگاه داده مدرن دارای چندین گره متصل در خوشهها هستند تا ظرفیت ذخیرهسازی را افزایش دهند، عملکرد را بهبود بخشند و در دسترس بودن را افزایش دهند.
اگرچه برخی از پیشرفتهای نظری در محاسبات توزیعشده جدید نیستند، اما بیشتر کاربردهای عملی آنها نسبتاً اخیراً اتفاق افتاده است. امروزه، ما شاهد افزایش علاقه به این موضوع، تحقیقات بیشتر و ...

مقدمه و بررسی اجمالی
Concurrent Execution • Shared State in a Distributed System • Fallacies of Distributed Computing • Processing • Clocks and Time • State Consistency • Local and Remote Execution • Need to Handle Failures • Network Partitions and Partial Failures • Cascading Failures • Distributed Systems Abstractions • Links • Two Generals’ Problem • FLP Impossibility • System Synchrony • Failure Models • Crash Faults • Omission Faults • Arbitrary Faults • Handling Failures • Summary
درحال تولید...

تشخیص خطا
Heartbeats and Pings • Timeout-Free Failure Detector • Outsourced Heartbeats • Phi-Accrual Failure Detector • Gossip and Failure Detection • Reversing Failure Detection Problem Statement • Summary
درحال تولید...

انتخاب رهبر
Bully Algorithm • Next-In-Line Failover • Candidate/Ordinary Optimization • Invitation Algorithm • Ring Algorithm • Summary
درحال تولید...

تکثیر و سازگاری
Achieving Availability • Infamous CAP • Use CAP Carefully • Harvest and Yield • Shared Memory • Ordering • Consistency Models • Strict Consistency • Linearizability • Sequential Consistency • Causal Consistency • Session Models • Eventual Consistency • Tunable Consistency • Witness Replicas • Strong Eventual Consistency and CRDTs • Summary
درحال تولید...

ضد آنتروپی و انتشار
Read Repair • Digest Reads • Hinted Handoff • Merkle Trees • Bitmap Version Vectors • Gossip Dissemination • Gossip Mechanics • Overlay Networks • Hybrid Gossip • Partial Views • Summary
درحال تولید...

تراکنشهای توزیعشده
Making Operations Appear Atomic • Two-Phase Commit • Cohort Failures in 2PC • Coordinator Failures in 2PC • Three-Phase Commit • Coordinator Failures in 3PC • Distributed Transactions with Calvin • Distributed Transactions with Spanner • Database Partitioning • Consistent Hashing • Distributed Transactions with Percolator • Coordination Avoidance • Summary
درحال تولید...

اجماع
Broadcast • Atomic Broadcast • Virtual Synchrony • Zookeeper Atomic Broadcast (ZAB) • Paxos • Paxos Algorithm • Quorums in Paxos • Failure Scenarios • Multi-Paxos • Fast Paxos • Egalitarian Paxos • Flexible Paxos • Generalized Solution to Consensus • Raft • Leader Role in Raft • Failure Scenarios • Byzantine Consensus • PBFT Algorithm • Recovery and Checkpointing • Summary
درحال تولید...
14 فصل در حال تولید
مدت زمان خوانش
10:23
نوع کتاب
اشتراکی
شرکت کنندگان
0 نفر
تولید کتاب
۳۰ شهریور ۱۴۰۵