2
0
Fork 0
mirror of https://github.com/Vonng/ddia.git synced 2026-06-22 01:17:02 +08:00
ddia/content/en/toc.md
2025-08-10 16:45:07 +08:00

389 lines
24 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "Table of Content"
linkTitle: "Table of Content"
weight: 10
breadcrumbs: false
---
![](/title.jpg)
## [Preface](/en/preface)
- [Who Should Read This Book?](/en/preface#who-should-read-this-book)
- [Scope of This Book](/en/preface#scope-of-this-book)
- [Outline of This Book](/en/preface#outline-of-this-book)
- [References and Further Reading](/en/preface#references-and-further-reading)
- [O'Reilly Safari](/en/preface#oreilly-safari)
- [How to Contact Us](/en/preface#how-to-contact-us)
- [Acknowledgments](/en/preface#acknowledgments)
## [1. Trade-offs in Data Systems Architecture](/en/ch1)
- [Analytical versus Operational Systems](/en/ch1#sec_introduction_analytics)
- [Characterizing Transaction Processing and Analytics](/en/ch1#sec_introduction_oltp)
- [Data Warehousing](/en/ch1#sec_introduction_dwh)
- [From data warehouse to data lake](/en/ch1#from-data-warehouse-to-data-lake)
- [Beyond the data lake](/en/ch1#beyond-the-data-lake)
- [Systems of Record and Derived Data](/en/ch1#sec_introduction_derived)
- [Cloud versus Self-Hosting](/en/ch1#sec_introduction_cloud)
- [Pros and Cons of Cloud Services](/en/ch1#sec_introduction_cloud_tradeoffs)
- [Cloud-Native System Architecture](/en/ch1#sec_introduction_cloud_native)
- [Layering of cloud services](/en/ch1#layering-of-cloud-services)
- [Separation of storage and compute](/en/ch1#sec_introduction_storage_compute)
- [Operations in the Cloud Era](/en/ch1#sec_introduction_operations)
- [Distributed versus Single-Node Systems](/en/ch1#sec_introduction_distributed)
- [Problems with Distributed Systems](/en/ch1#sec_introduction_dist_sys_problems)
- [Microservices and Serverless](/en/ch1#sec_introduction_microservices)
- [Cloud Computing versus Supercomputing](/en/ch1#id17)
- [Data Systems, Law, and Society](/en/ch1#sec_introduction_compliance)
- [Summary](/en/ch1#summary)
- [References](/en/ch1#references)
## [2. Defining Nonfunctional Requirements](/en/ch2)
- [Case Study: Social Network Home Timelines](/en/ch2#sec_introduction_twitter)
- [Representing Users, Posts, and Follows](/en/ch2#id20)
- [Materializing and Updating Timelines](/en/ch2#sec_introduction_materializing)
- [Describing Performance](/en/ch2#sec_introduction_percentiles)
- [Latency and Response Time](/en/ch2#id23)
- [Average, Median, and Percentiles](/en/ch2#id24)
- [Use of Response Time Metrics](/en/ch2#sec_introduction_slo_sla)
- [Reliability and Fault Tolerance](/en/ch2#sec_introduction_reliability)
- [Fault Tolerance](/en/ch2#id27)
- [Hardware and Software Faults](/en/ch2#sec_introduction_hardware_faults)
- [Tolerating hardware faults through redundancy](/en/ch2#tolerating-hardware-faults-through-redundancy)
- [Software faults](/en/ch2#software-faults)
- [Humans and Reliability](/en/ch2#id31)
- [Scalability](/en/ch2#sec_introduction_scalability)
- [Describing Load](/en/ch2#id33)
- [Shared-Memory, Shared-Disk, and Shared-Nothing Architecture](/en/ch2#sec_introduction_shared_nothing)
- [Principles for Scalability](/en/ch2#id35)
- [Maintainability](/en/ch2#sec_introduction_maintainability)
- [Operability: Making Life Easy for Operations](/en/ch2#id37)
- [Simplicity: Managing Complexity](/en/ch2#id38)
- [Evolvability: Making Change Easy](/en/ch2#sec_introduction_evolvability)
- [Summary](/en/ch2#summary)
- [References](/en/ch2#references)
## [3. Data Models and Query Languages](/en/ch3)
- [Relational Model versus Document Model](/en/ch3#sec_datamodels_history)
- [The Object-Relational Mismatch](/en/ch3#sec_datamodels_document)
- [Object-relational mapping (ORM)](/en/ch3#object-relational-mapping-orm)
- [The document data model for one-to-many relationships](/en/ch3#the-document-data-model-for-one-to-many-relationships)
- [Normalization, Denormalization, and Joins](/en/ch3#sec_datamodels_normalization)
- [Trade-offs of normalization](/en/ch3#trade-offs-of-normalization)
- [Denormalization in the social networking case study](/en/ch3#denormalization-in-the-social-networking-case-study)
- [Many-to-One and Many-to-Many Relationships](/en/ch3#sec_datamodels_many_to_many)
- [Stars and Snowflakes: Schemas for Analytics](/en/ch3#sec_datamodels_analytics)
- [When to Use Which Model](/en/ch3#sec_datamodels_document_summary)
- [Schema flexibility in the document model](/en/ch3#sec_datamodels_schema_flexibility)
- [Data locality for reads and writes](/en/ch3#sec_datamodels_document_locality)
- [Query languages for documents](/en/ch3#query-languages-for-documents)
- [Convergence of document and relational databases](/en/ch3#convergence-of-document-and-relational-databases)
- [Graph-Like Data Models](/en/ch3#sec_datamodels_graph)
- [Property Graphs](/en/ch3#id56)
- [The Cypher Query Language](/en/ch3#id57)
- [Graph Queries in SQL](/en/ch3#id58)
- [Triple-Stores and SPARQL](/en/ch3#id59)
- [The RDF data model](/en/ch3#the-rdf-data-model)
- [The SPARQL query language](/en/ch3#the-sparql-query-language)
- [Datalog: Recursive Relational Queries](/en/ch3#id62)
- [GraphQL](/en/ch3#id63)
- [Event Sourcing and CQRS](/en/ch3#sec_datamodels_events)
- [Dataframes, Matrices, and Arrays](/en/ch3#sec_datamodels_dataframes)
- [Summary](/en/ch3#summary)
- [References](/en/ch3#references)
## [4. Storage and Retrieval](/en/ch4)
- [Storage and Indexing for OLTP](/en/ch4#sec_storage_oltp)
- [Log-Structured Storage](/en/ch4#sec_storage_log_structured)
- [The SSTable file format](/en/ch4#the-sstable-file-format)
- [Constructing and merging SSTables](/en/ch4#constructing-and-merging-sstables)
- [Bloom filters](/en/ch4#bloom-filters)
- [Compaction strategies](/en/ch4#sec_storage_lsm_compaction)
- [B-Trees](/en/ch4#sec_storage_b_trees)
- [Making B-trees reliable](/en/ch4#sec_storage_btree_wal)
- [B-tree variants](/en/ch4#b-tree-variants)
- [Comparing B-Trees and LSM-Trees](/en/ch4#sec_storage_btree_lsm_comparison)
- [Read performance](/en/ch4#read-performance)
- [Sequential vs. random writes](/en/ch4#sidebar_sequential)
- [Write amplification](/en/ch4#write-amplification)
- [Disk space usage](/en/ch4#disk-space-usage)
- [Multi-Column and Secondary Indexes](/en/ch4#sec_storage_index_multicolumn)
- [Storing values within the index](/en/ch4#sec_storage_index_heap)
- [Keeping everything in memory](/en/ch4#sec_storage_inmemory)
- [Data Storage for Analytics](/en/ch4#sec_storage_analytics)
- [Cloud Data Warehouses](/en/ch4#sec_cloud_data_warehouses)
- [Column-Oriented Storage](/en/ch4#sec_storage_column)
- [Column Compression](/en/ch4#sec_storage_column_compression)
- [Sort Order in Column Storage](/en/ch4#sort-order-in-column-storage)
- [Writing to Column-Oriented Storage](/en/ch4#writing-to-column-oriented-storage)
- [Query Execution: Compilation and Vectorization](/en/ch4#sec_storage_vectorized)
- [Materialized Views and Data Cubes](/en/ch4#sec_storage_materialized_views)
- [Multidimensional and Full-Text Indexes](/en/ch4#sec_storage_multidimensional)
- [Full-Text Search](/en/ch4#sec_storage_full_text)
- [Vector Embeddings](/en/ch4#id92)
- [Summary](/en/ch4#summary)
- [References](/en/ch4#references)
## [5. Encoding and Evolution](/en/ch5)
- [Formats for Encoding Data](/en/ch5#sec_encoding_formats)
- [Language-Specific Formats](/en/ch5#id96)
- [JSON, XML, and Binary Variants](/en/ch5#sec_encoding_json)
- [JSON Schema](/en/ch5#json-schema)
- [Binary encoding](/en/ch5#binary-encoding)
- [Protocol Buffers](/en/ch5#sec_encoding_protobuf)
- [Field tags and schema evolution](/en/ch5#field-tags-and-schema-evolution)
- [Avro](/en/ch5#sec_encoding_avro)
- [The writers schema and the readers schema](/en/ch5#the-writers-schema-and-the-readers-schema)
- [Schema evolution rules](/en/ch5#schema-evolution-rules)
- [But what is the writers schema?](/en/ch5#but-what-is-the-writers-schema)
- [Dynamically generated schemas](/en/ch5#dynamically-generated-schemas)
- [The Merits of Schemas](/en/ch5#sec_encoding_schemas)
- [Modes of Dataflow](/en/ch5#sec_encoding_dataflow)
- [Dataflow Through Databases](/en/ch5#sec_encoding_dataflow_db)
- [Different values written at different times](/en/ch5#different-values-written-at-different-times)
- [Archival storage](/en/ch5#archival-storage)
- [Dataflow Through Services: REST and RPC](/en/ch5#sec_encoding_dataflow_rpc)
- [Web services](/en/ch5#sec_web_services)
- [The problems with remote procedure calls (RPCs)](/en/ch5#sec_problems_with_rpc)
- [Load balancers, service discovery, and service meshes](/en/ch5#sec_encoding_service_discovery)
- [Data encoding and evolution for RPC](/en/ch5#data-encoding-and-evolution-for-rpc)
- [Durable Execution and Workflows](/en/ch5#sec_encoding_dataflow_workflows)
- [Durable execution](/en/ch5#durable-execution)
- [Event-Driven Architectures](/en/ch5#sec_encoding_dataflow_msg)
- [Message brokers](/en/ch5#message-brokers)
- [Distributed actor frameworks](/en/ch5#distributed-actor-frameworks)
- [Summary](/en/ch5#summary)
- [References](/en/ch5#references)
## [6. Replication](/en/ch6)
- [Single-Leader Replication](/en/ch6#sec_replication_leader)
- [Synchronous Versus Asynchronous Replication](/en/ch6#sec_replication_sync_async)
- [Setting Up New Followers](/en/ch6#sec_replication_new_replica)
- [Handling Node Outages](/en/ch6#sec_replication_failover)
- [Follower failure: Catch-up recovery](/en/ch6#follower-failure-catch-up-recovery)
- [Leader failure: Failover](/en/ch6#leader-failure-failover)
- [Implementation of Replication Logs](/en/ch6#sec_replication_implementation)
- [Statement-based replication](/en/ch6#statement-based-replication)
- [Write-ahead log (WAL) shipping](/en/ch6#write-ahead-log-wal-shipping)
- [Logical (row-based) log replication](/en/ch6#logical-row-based-log-replication)
- [Problems with Replication Lag](/en/ch6#sec_replication_lag)
- [Reading Your Own Writes](/en/ch6#sec_replication_ryw)
- [Monotonic Reads](/en/ch6#sec_replication_monotonic_reads)
- [Consistent Prefix Reads](/en/ch6#sec_replication_consistent_prefix)
- [Solutions for Replication Lag](/en/ch6#id131)
- [Multi-Leader Replication](/en/ch6#sec_replication_multi_leader)
- [Geographically Distributed Operation](/en/ch6#sec_replication_multi_dc)
- [Multi-leader replication topologies](/en/ch6#sec_replication_topologies)
- [Problems with different topologies](/en/ch6#problems-with-different-topologies)
- [Sync Engines and Local-First Software](/en/ch6#sec_replication_offline_clients)
- [Real-time collaboration, offline-first, and local-first apps](/en/ch6#real-time-collaboration-offline-first-and-local-first-apps)
- [Pros and cons of sync engines](/en/ch6#pros-and-cons-of-sync-engines)
- [Dealing with Conflicting Writes](/en/ch6#sec_replication_write_conflicts)
- [Conflict avoidance](/en/ch6#conflict-avoidance)
- [Last write wins (discarding concurrent writes)](/en/ch6#sec_replication_lww)
- [Manual conflict resolution](/en/ch6#manual-conflict-resolution)
- [Automatic conflict resolution](/en/ch6#automatic-conflict-resolution)
- [CRDTs and Operational Transformation](/en/ch6#sec_replication_crdts)
- [What is a conflict?](/en/ch6#what-is-a-conflict)
- [Leaderless Replication](/en/ch6#sec_replication_leaderless)
- [Writing to the Database When a Node Is Down](/en/ch6#id287)
- [Catching up on missed writes](/en/ch6#sec_replication_read_repair)
- [Quorums for reading and writing](/en/ch6#sec_replication_quorum_condition)
- [Limitations of Quorum Consistency](/en/ch6#sec_replication_quorum_limitations)
- [Monitoring staleness](/en/ch6#monitoring-staleness)
- [Single-Leader vs. Leaderless Replication Performance](/en/ch6#sec_replication_leaderless_perf)
- [Multi-region operation](/en/ch6#multi-region-operation)
- [Detecting Concurrent Writes](/en/ch6#sec_replication_concurrent)
- [The “happens-before” relation and concurrency](/en/ch6#sec_replication_happens_before)
- [Capturing the happens-before relationship](/en/ch6#capturing-the-happens-before-relationship)
- [Version vectors](/en/ch6#version-vectors)
- [Summary](/en/ch6#summary)
- [References](/en/ch6#references)
## [7. Sharding](/en/ch7)
- [Pros and Cons of Sharding](/en/ch7#sec_sharding_reasons)
- [Sharding for Multitenancy](/en/ch7#sec_sharding_multitenancy)
- [Sharding of Key-Value Data](/en/ch7#sec_sharding_key_value)
- [Sharding by Key Range](/en/ch7#sec_sharding_key_range)
- [Rebalancing key-range sharded data](/en/ch7#rebalancing-key-range-sharded-data)
- [Sharding by Hash of Key](/en/ch7#sec_sharding_hash)
- [Hash modulo number of nodes](/en/ch7#hash-modulo-number-of-nodes)
- [Fixed number of shards](/en/ch7#fixed-number-of-shards)
- [Sharding by hash range](/en/ch7#sharding-by-hash-range)
- [Consistent hashing](/en/ch7#sec_sharding_consistent_hashing)
- [Skewed Workloads and Relieving Hot Spots](/en/ch7#sec_sharding_skew)
- [Operations: Automatic or Manual Rebalancing](/en/ch7#sec_sharding_operations)
- [Request Routing](/en/ch7#sec_sharding_routing)
- [Sharding and Secondary Indexes](/en/ch7#sec_sharding_secondary_indexes)
- [Local Secondary Indexes](/en/ch7#id166)
- [Global Secondary Indexes](/en/ch7#id167)
- [Summary](/en/ch7#summary)
- [References](/en/ch7#references)
## [8. Transactions](/en/ch8)
- [What Exactly Is a Transaction?](/en/ch8#sec_transactions_overview)
- [The Meaning of ACID](/en/ch8#sec_transactions_acid)
- [Atomicity](/en/ch8#sec_transactions_acid_atomicity)
- [Consistency](/en/ch8#sec_transactions_acid_consistency)
- [Isolation](/en/ch8#sec_transactions_acid_isolation)
- [Durability](/en/ch8#durability)
- [Single-Object and Multi-Object Operations](/en/ch8#sec_transactions_multi_object)
- [Single-object writes](/en/ch8#sec_transactions_single_object)
- [The need for multi-object transactions](/en/ch8#sec_transactions_need)
- [Handling errors and aborts](/en/ch8#handling-errors-and-aborts)
- [Weak Isolation Levels](/en/ch8#sec_transactions_isolation_levels)
- [Read Committed](/en/ch8#sec_transactions_read_committed)
- [No dirty reads](/en/ch8#no-dirty-reads)
- [No dirty writes](/en/ch8#sec_transactions_dirty_write)
- [Implementing read committed](/en/ch8#sec_transactions_read_committed_impl)
- [Snapshot Isolation and Repeatable Read](/en/ch8#sec_transactions_snapshot_isolation)
- [Multi-version concurrency control (MVCC)](/en/ch8#sec_transactions_snapshot_impl)
- [Visibility rules for observing a consistent snapshot](/en/ch8#sec_transactions_mvcc_visibility)
- [Indexes and snapshot isolation](/en/ch8#indexes-and-snapshot-isolation)
- [Snapshot isolation, repeatable read, and naming confusion](/en/ch8#snapshot-isolation-repeatable-read-and-naming-confusion)
- [Preventing Lost Updates](/en/ch8#sec_transactions_lost_update)
- [Atomic write operations](/en/ch8#atomic-write-operations)
- [Explicit locking](/en/ch8#explicit-locking)
- [Automatically detecting lost updates](/en/ch8#automatically-detecting-lost-updates)
- [Conditional writes (compare-and-set)](/en/ch8#sec_transactions_compare_and_set)
- [Conflict resolution and replication](/en/ch8#conflict-resolution-and-replication)
- [Write Skew and Phantoms](/en/ch8#sec_transactions_write_skew)
- [Characterizing write skew](/en/ch8#characterizing-write-skew)
- [More examples of write skew](/en/ch8#more-examples-of-write-skew)
- [Phantoms causing write skew](/en/ch8#sec_transactions_phantom)
- [Materializing conflicts](/en/ch8#materializing-conflicts)
- [Serializability](/en/ch8#sec_transactions_serializability)
- [Actual Serial Execution](/en/ch8#sec_transactions_serial)
- [Encapsulating transactions in stored procedures](/en/ch8#encapsulating-transactions-in-stored-procedures)
- [Pros and cons of stored procedures](/en/ch8#sec_transactions_stored_proc_tradeoffs)
- [Sharding](/en/ch8#sharding)
- [Summary of serial execution](/en/ch8#summary-of-serial-execution)
- [Two-Phase Locking (2PL)](/en/ch8#sec_transactions_2pl)
- [Implementation of two-phase locking](/en/ch8#implementation-of-two-phase-locking)
- [Performance of two-phase locking](/en/ch8#performance-of-two-phase-locking)
- [Predicate locks](/en/ch8#predicate-locks)
- [Index-range locks](/en/ch8#sec_transactions_2pl_range)
- [Serializable Snapshot Isolation (SSI)](/en/ch8#sec_transactions_ssi)
- [Pessimistic versus optimistic concurrency control](/en/ch8#pessimistic-versus-optimistic-concurrency-control)
- [Decisions based on an outdated premise](/en/ch8#decisions-based-on-an-outdated-premise)
- [Detecting stale MVCC reads](/en/ch8#detecting-stale-mvcc-reads)
- [Detecting writes that affect prior reads](/en/ch8#sec_detecting_writes_affect_reads)
- [Performance of serializable snapshot isolation](/en/ch8#performance-of-serializable-snapshot-isolation)
- [Distributed Transactions](/en/ch8#sec_transactions_distributed)
- [Two-Phase Commit (2PC)](/en/ch8#sec_transactions_2pc)
- [A system of promises](/en/ch8#a-system-of-promises)
- [Coordinator failure](/en/ch8#coordinator-failure)
- [Three-phase commit](/en/ch8#three-phase-commit)
- [Distributed Transactions Across Different Systems](/en/ch8#sec_transactions_xa)
- [Exactly-once message processing](/en/ch8#sec_transactions_exactly_once)
- [XA transactions](/en/ch8#xa-transactions)
- [Holding locks while in doubt](/en/ch8#holding-locks-while-in-doubt)
- [Recovering from coordinator failure](/en/ch8#recovering-from-coordinator-failure)
- [Problems with XA transactions](/en/ch8#problems-with-xa-transactions)
- [Database-internal Distributed Transactions](/en/ch8#sec_transactions_internal)
- [Exactly-once message processing revisited](/en/ch8#exactly-once-message-processing-revisited)
- [Summary](/en/ch8#summary)
- [References](/en/ch8#references)
## [9. The Trouble with Distributed Systems](/en/ch9)
- [Faults and Partial Failures](/en/ch9#sec_distributed_partial_failure)
- [Unreliable Networks](/en/ch9#sec_distributed_networks)
- [The Limitations of TCP](/en/ch9#sec_distributed_tcp)
- [Network Faults in Practice](/en/ch9#sec_distributed_network_faults)
- [Detecting Faults](/en/ch9#id307)
- [Timeouts and Unbounded Delays](/en/ch9#sec_distributed_queueing)
- [Network congestion and queueing](/en/ch9#network-congestion-and-queueing)
- [Synchronous Versus Asynchronous Networks](/en/ch9#sec_distributed_sync_networks)
- [Can we not simply make network delays predictable?](/en/ch9#can-we-not-simply-make-network-delays-predictable)
- [Unreliable Clocks](/en/ch9#sec_distributed_clocks)
- [Monotonic Versus Time-of-Day Clocks](/en/ch9#sec_distributed_monotonic_timeofday)
- [Time-of-day clocks](/en/ch9#time-of-day-clocks)
- [Monotonic clocks](/en/ch9#monotonic-clocks)
- [Clock Synchronization and Accuracy](/en/ch9#sec_distributed_clock_accuracy)
- [Relying on Synchronized Clocks](/en/ch9#sec_distributed_clocks_relying)
- [Timestamps for ordering events](/en/ch9#sec_distributed_lww)
- [Clock readings with a confidence interval](/en/ch9#clock-readings-with-a-confidence-interval)
- [Synchronized clocks for global snapshots](/en/ch9#sec_distributed_spanner)
- [Process Pauses](/en/ch9#sec_distributed_clocks_pauses)
- [Response time guarantees](/en/ch9#sec_distributed_clocks_realtime)
- [Limiting the impact of garbage collection](/en/ch9#sec_distributed_gc_impact)
- [Knowledge, Truth, and Lies](/en/ch9#sec_distributed_truth)
- [The Majority Rules](/en/ch9#sec_distributed_majority)
- [Distributed Locks and Leases](/en/ch9#sec_distributed_lock_fencing)
- [Fencing off zombies and delayed requests](/en/ch9#sec_distributed_fencing_tokens)
- [Fencing with multiple replicas](/en/ch9#fencing-with-multiple-replicas)
- [Byzantine Faults](/en/ch9#sec_distributed_byzantine)
- [Weak forms of lying](/en/ch9#weak-forms-of-lying)
- [System Model and Reality](/en/ch9#sec_distributed_system_model)
- [Defining the correctness of an algorithm](/en/ch9#defining-the-correctness-of-an-algorithm)
- [Safety and liveness](/en/ch9#sec_distributed_safety_liveness)
- [Mapping system models to the real world](/en/ch9#mapping-system-models-to-the-real-world)
- [Formal Methods and Randomized Testing](/en/ch9#sec_distributed_formal)
- [Model checking and specification languages](/en/ch9#model-checking-and-specification-languages)
- [Fault injection](/en/ch9#sec_fault_injection)
- [Deterministic simulation testing](/en/ch9#deterministic-simulation-testing)
- [Summary](/en/ch9#summary)
- [References](/en/ch9#references)
## [10. Consistency and Consensus](/en/ch10)
- [Linearizability](/en/ch10#sec_consistency_linearizability)
- [What Makes a System Linearizable?](/en/ch10#sec_consistency_lin_definition)
- [Relying on Linearizability](/en/ch10#sec_consistency_linearizability_usage)
- [Locking and leader election](/en/ch10#locking-and-leader-election)
- [Constraints and uniqueness guarantees](/en/ch10#sec_consistency_uniqueness)
- [Cross-channel timing dependencies](/en/ch10#cross-channel-timing-dependencies)
- [Implementing Linearizable Systems](/en/ch10#sec_consistency_implementing_linearizable)
- [Linearizability and quorums](/en/ch10#sec_consistency_quorum_linearizable)
- [The Cost of Linearizability](/en/ch10#sec_linearizability_cost)
- [The CAP theorem](/en/ch10#the-cap-theorem)
- [Linearizability and network delays](/en/ch10#linearizability-and-network-delays)
- [ID Generators and Logical Clocks](/en/ch10#sec_consistency_logical)
- [Logical Clocks](/en/ch10#sec_consistency_timestamps)
- [Lamport timestamps](/en/ch10#lamport-timestamps)
- [Hybrid logical clocks](/en/ch10#hybrid-logical-clocks)
- [Lamport/hybrid logical clocks vs. vector clocks](/en/ch10#lamporthybrid-logical-clocks-vs-vector-clocks)
- [Linearizable ID Generators](/en/ch10#sec_consistency_linearizable_id)
- [Implementing a linearizable ID generator](/en/ch10#implementing-a-linearizable-id-generator)
- [Enforcing constraints using logical clocks](/en/ch10#enforcing-constraints-using-logical-clocks)
- [Consensus](/en/ch10#sec_consistency_consensus)
- [The Many Faces of Consensus](/en/ch10#sec_consistency_faces)
- [Single-value consensus](/en/ch10#single-value-consensus)
- [Compare-and-set as consensus](/en/ch10#compare-and-set-as-consensus)
- [Shared logs as consensus](/en/ch10#sec_consistency_shared_logs)
- [Fetch-and-add as consensus](/en/ch10#fetch-and-add-as-consensus)
- [Atomic commitment as consensus](/en/ch10#atomic-commitment-as-consensus)
- [Consensus in Practice](/en/ch10#sec_consistency_total_order)
- [Using shared logs](/en/ch10#sec_consistency_smr)
- [From single-leader replication to consensus](/en/ch10#from-single-leader-replication-to-consensus)
- [Subtleties of consensus](/en/ch10#subtleties-of-consensus)
- [Pros and cons of consensus](/en/ch10#pros-and-cons-of-consensus)
- [Coordination Services](/en/ch10#sec_consistency_coordination)
- [Allocating work to nodes](/en/ch10#allocating-work-to-nodes)
- [Service discovery](/en/ch10#service-discovery)
- [Summary](/en/ch10#summary)
- [References](/en/ch10#references)
## [11. Batch Processing](/en/ch11)
- [……](/en/ch11#)
- [Summary](/en/ch11#summary)
- [References](/en/ch11#references)
## [12. Stream Processing](/en/ch12)
- [……](/en/ch12#)
- [Summary](/en/ch12#summary)
- [References](/en/ch12#references)
## [13. Do the Right Thing](/en/ch13)
- [……](/en/ch13#)
- [Summary](/en/ch13#summary)
- [References](/en/ch13#references)
## [Glossary](/en/glossary)
## [Colophon](/en/colophon)
- [About the Author](/en/colophon#about-the-author)
- [Colophon](/en/colophon#colophon)