mirror of
https://github.com/Vonng/ddia.git
synced 2026-06-21 08:56:57 +08:00
539 lines
30 KiB
Markdown
539 lines
30 KiB
Markdown
---
|
||
title: "目录"
|
||
linkTitle: "目录"
|
||
weight: 10
|
||
breadcrumbs: false
|
||
---
|
||
|
||
|
||
|
||

|
||
|
||
|
||
## [序言](/preface)
|
||
- [本书的目标读者](/preface#本书的目标读者)
|
||
- [本书涉及的领域](/preface#本书涉及的领域)
|
||
- [本书纲要](/preface#本书纲要)
|
||
- [参考文献与延伸阅读](/preface#参考文献与延伸阅读)
|
||
- [O‘Reilly Safari](/preface#oreilly-safari)
|
||
- [致谢](/preface#致谢)
|
||
|
||
## [1. 数据系统架构中的权衡](/ch1)
|
||
- [分析型与事务型系统](/ch1#sec_introduction_analytics)
|
||
- [事务处理与分析的特征](/ch1#sec_introduction_oltp)
|
||
- [数据仓库](/ch1#sec_introduction_dwh)
|
||
- [从数据仓库到数据湖](/ch1#from-data-warehouse-to-data-lake)
|
||
- [超越数据湖](/ch1#beyond-the-data-lake)
|
||
- [权威数据源与派生数据](/ch1#sec_introduction_derived)
|
||
- [云服务与自托管](/ch1#sec_introduction_cloud)
|
||
- [云服务的利弊](/ch1#sec_introduction_cloud_tradeoffs)
|
||
- [云原生系统架构](/ch1#sec_introduction_cloud_native)
|
||
- [云服务的分层](/ch1#layering-of-cloud-services)
|
||
- [存储与计算的分离](/ch1#sec_introduction_storage_compute)
|
||
- [云时代的运维](/ch1#sec_introduction_operations)
|
||
- [分布式与单节点系统](/ch1#sec_introduction_distributed)
|
||
- [分布式系统的问题](/ch1#sec_introduction_dist_sys_problems)
|
||
- [微服务与 Serverless](/ch1#sec_introduction_microservices)
|
||
- [云计算与超级计算](/ch1#id17)
|
||
- [数据系统、法律与社会](/ch1#sec_introduction_compliance)
|
||
- [总结](/ch1#summary)
|
||
- [参考](/ch1#参考)
|
||
|
||
## [2. 定义非功能性需求](/ch2)
|
||
- [案例研究:社交网络首页时间线](/ch2#sec_introduction_twitter)
|
||
- [表示用户、帖子与关注关系](/ch2#id20)
|
||
- [时间线的物化与更新](/ch2#sec_introduction_materializing)
|
||
- [描述性能](/ch2#sec_introduction_percentiles)
|
||
- [延迟与响应时间](/ch2#id23)
|
||
- [平均值、中位数与百分位数](/ch2#id24)
|
||
- [响应时间指标的应用](/ch2#sec_introduction_slo_sla)
|
||
- [可靠性与容错](/ch2#sec_introduction_reliability)
|
||
- [容错](/ch2#id27)
|
||
- [硬件与软件故障](/ch2#sec_introduction_hardware_faults)
|
||
- [通过冗余容忍硬件故障](/ch2#tolerating-hardware-faults-through-redundancy)
|
||
- [软件故障](/ch2#software-faults)
|
||
- [人类与可靠性](/ch2#id31)
|
||
- [可伸缩性](/ch2#sec_introduction_scalability)
|
||
- [描述负载](/ch2#id33)
|
||
- [共享内存、共享磁盘与无共享架构](/ch2#sec_introduction_shared_nothing)
|
||
- [可伸缩性原则](/ch2#id35)
|
||
- [可运维性](/ch2#sec_introduction_maintainability)
|
||
- [可运维性:让运维更轻松](/ch2#id37)
|
||
- [简单性:管理复杂度](/ch2#id38)
|
||
- [可演化性:让变化更容易](/ch2#sec_introduction_evolvability)
|
||
- [总结](/ch2#summary)
|
||
- [参考](/ch2#参考)
|
||
|
||
## [3. 数据模型与查询语言](/ch3)
|
||
- [关系模型与文档模型](/ch3#sec_datamodels_history)
|
||
- [对象关系不匹配](/ch3#sec_datamodels_document)
|
||
- [对象关系映射(ORM)](/ch3#object-relational-mapping-orm)
|
||
- [用于一对多关系的文档数据模型](/ch3#the-document-data-model-for-one-to-many-relationships)
|
||
- [规范化、反规范化与连接](/ch3#sec_datamodels_normalization)
|
||
- [规范化的权衡](/ch3#trade-offs-of-normalization)
|
||
- [社交网络案例研究中的反规范化](/ch3#denormalization-in-the-social-networking-case-study)
|
||
- [多对一与多对多关系](/ch3#sec_datamodels_many_to_many)
|
||
- [星型与雪花型:分析模式](/ch3#sec_datamodels_analytics)
|
||
- [何时使用哪种模型](/ch3#sec_datamodels_document_summary)
|
||
- [文档模型中的模式灵活性](/ch3#sec_datamodels_schema_flexibility)
|
||
- [读写的数据局部性](/ch3#sec_datamodels_document_locality)
|
||
- [文档的查询语言](/ch3#query-languages-for-documents)
|
||
- [文档和关系数据库的融合](/ch3#convergence-of-document-and-relational-databases)
|
||
- [图数据模型](/ch3#sec_datamodels_graph)
|
||
- [属性图](/ch3#id56)
|
||
- [Cypher 查询语言](/ch3#id57)
|
||
- [SQL 中的图查询](/ch3#id58)
|
||
- [三元组存储与 SPARQL](/ch3#id59)
|
||
- [RDF 数据模型](/ch3#the-rdf-data-model)
|
||
- [SPARQL 查询语言](/ch3#the-sparql-query-language)
|
||
- [Datalog:递归关系查询](/ch3#id62)
|
||
- [GraphQL](/ch3#id63)
|
||
- [事件溯源与 CQRS](/ch3#sec_datamodels_events)
|
||
- [数据框、矩阵与数组](/ch3#sec_datamodels_dataframes)
|
||
- [总结](/ch3#summary)
|
||
- [参考](/ch3#参考)
|
||
|
||
## [4. 存储与检索](/ch4)
|
||
- [OLTP 系统的存储与索引](/ch4#sec_storage_oltp)
|
||
- [日志结构存储](/ch4#sec_storage_log_structured)
|
||
- [SSTable 文件格式](/ch4#the-sstable-file-format)
|
||
- [构建和合并 SSTable](/ch4#constructing-and-merging-sstables)
|
||
- [布隆过滤器](/ch4#bloom-filters)
|
||
- [压实策略](/ch4#sec_storage_lsm_compaction)
|
||
- [B 树](/ch4#sec_storage_b_trees)
|
||
- [使 B 树可靠](/ch4#sec_storage_btree_wal)
|
||
- [B 树变体](/ch4#b-tree-variants)
|
||
- [比较 B 树与 LSM 树](/ch4#sec_storage_btree_lsm_comparison)
|
||
- [读取性能](/ch4#read-performance)
|
||
- [顺序与随机写入](/ch4#sidebar_sequential)
|
||
- [写放大](/ch4#write-amplification)
|
||
- [磁盘空间使用](/ch4#disk-space-usage)
|
||
- [多列索引与二级索引](/ch4#sec_storage_index_multicolumn)
|
||
- [在索引中存储值](/ch4#sec_storage_index_heap)
|
||
- [全内存存储](/ch4#sec_storage_inmemory)
|
||
- [分析型数据存储](/ch4#sec_storage_analytics)
|
||
- [云数据仓库](/ch4#sec_cloud_data_warehouses)
|
||
- [列式存储](/ch4#sec_storage_column)
|
||
- [列压缩](/ch4#sec_storage_column_compression)
|
||
- [列存储中的排序顺序](/ch4#sort-order-in-column-storage)
|
||
- [写入列式存储](/ch4#writing-to-column-oriented-storage)
|
||
- [查询执行:编译与向量化](/ch4#sec_storage_vectorized)
|
||
- [物化视图与多维数据集](/ch4#sec_storage_materialized_views)
|
||
- [多维索引与全文索引](/ch4#sec_storage_multidimensional)
|
||
- [全文检索](/ch4#sec_storage_full_text)
|
||
- [向量嵌入](/ch4#id92)
|
||
- [总结](/ch4#summary)
|
||
- [参考](/ch4#参考)
|
||
|
||
## [5. 编码与演化](/ch5)
|
||
- [编码数据的格式](/ch5#sec_encoding_formats)
|
||
- [特定语言的格式](/ch5#id96)
|
||
- [JSON、XML 及其二进制变体](/ch5#sec_encoding_json)
|
||
- [JSON 模式](/ch5#json-schema)
|
||
- [二进制编码](/ch5#binary-encoding)
|
||
- [Protocol Buffers](/ch5#sec_encoding_protobuf)
|
||
- [字段标签与模式演化](/ch5#field-tags-and-schema-evolution)
|
||
- [Avro](/ch5#sec_encoding_avro)
|
||
- [写入者模式与读取者模式](/ch5#the-writers-schema-and-the-readers-schema)
|
||
- [模式演化规则](/ch5#schema-evolution-rules)
|
||
- [但什么是写入者模式?](/ch5#but-what-is-the-writers-schema)
|
||
- [动态生成的模式](/ch5#dynamically-generated-schemas)
|
||
- [模式的优点](/ch5#sec_encoding_schemas)
|
||
- [数据流的模式](/ch5#sec_encoding_dataflow)
|
||
- [流经数据库的数据流](/ch5#sec_encoding_dataflow_db)
|
||
- [不同时间写入的不同值](/ch5#different-values-written-at-different-times)
|
||
- [归档存储](/ch5#archival-storage)
|
||
- [流经服务的数据流:REST 与 RPC](/ch5#sec_encoding_dataflow_rpc)
|
||
- [Web 服务](/ch5#sec_web_services)
|
||
- [远程过程调用(RPC)的问题](/ch5#sec_problems_with_rpc)
|
||
- [负载均衡器、服务发现和服务网格](/ch5#sec_encoding_service_discovery)
|
||
- [RPC 的数据编码与演化](/ch5#data-encoding-and-evolution-for-rpc)
|
||
- [持久化执行与工作流](/ch5#sec_encoding_dataflow_workflows)
|
||
- [持久化执行](/ch5#durable-execution)
|
||
- [事件驱动的架构](/ch5#sec_encoding_dataflow_msg)
|
||
- [消息代理](/ch5#message-brokers)
|
||
- [分布式 actor 框架](/ch5#distributed-actor-frameworks)
|
||
- [总结](/ch5#summary)
|
||
- [参考](/ch5#参考)
|
||
|
||
## [6. 复制](/ch6)
|
||
- [单主复制](/ch6#sec_replication_leader)
|
||
- [同步复制与异步复制](/ch6#sec_replication_sync_async)
|
||
- [设置新的副本](/ch6#sec_replication_new_replica)
|
||
- [处理节点故障](/ch6#sec_replication_failover)
|
||
- [从节点故障:追赶恢复](/ch6#follower-failure-catch-up-recovery)
|
||
- [领导者故障:故障转移](/ch6#leader-failure-failover)
|
||
- [复制日志的实现](/ch6#sec_replication_implementation)
|
||
- [基于语句的复制](/ch6#statement-based-replication)
|
||
- [预写日志(WAL)传输](/ch6#write-ahead-log-wal-shipping)
|
||
- [逻辑(基于行)日志复制](/ch6#logical-row-based-log-replication)
|
||
- [复制延迟的问题](/ch6#sec_replication_lag)
|
||
- [读己之写](/ch6#sec_replication_ryw)
|
||
- [单调读](/ch6#sec_replication_monotonic_reads)
|
||
- [一致前缀读](/ch6#sec_replication_consistent_prefix)
|
||
- [复制延迟的解决方案](/ch6#id131)
|
||
- [多主复制](/ch6#sec_replication_multi_leader)
|
||
- [跨地域运行](/ch6#sec_replication_multi_dc)
|
||
- [多主复制拓扑](/ch6#sec_replication_topologies)
|
||
- [不同拓扑的问题](/ch6#problems-with-different-topologies)
|
||
- [同步引擎与本地优先软件](/ch6#sec_replication_offline_clients)
|
||
- [实时协作、离线优先和本地优先应用](/ch6#real-time-collaboration-offline-first-and-local-first-apps)
|
||
- [同步引擎的利弊](/ch6#pros-and-cons-of-sync-engines)
|
||
- [处理写入冲突](/ch6#sec_replication_write_conflicts)
|
||
- [冲突避免](/ch6#conflict-avoidance)
|
||
- [最后写入者胜(丢弃并发写入)](/ch6#sec_replication_lww)
|
||
- [手动冲突解决](/ch6#manual-conflict-resolution)
|
||
- [自动冲突解决](/ch6#automatic-conflict-resolution)
|
||
- [CRDT 与操作变换](/ch6#sec_replication_crdts)
|
||
- [什么是冲突?](/ch6#what-is-a-conflict)
|
||
- [无主复制](/ch6#sec_replication_leaderless)
|
||
- [当节点故障时写入数据库](/ch6#id287)
|
||
- [追赶错过的写入](/ch6#sec_replication_read_repair)
|
||
- [读写仲裁](/ch6#sec_replication_quorum_condition)
|
||
- [仲裁一致性的局限](/ch6#sec_replication_quorum_limitations)
|
||
- [监控陈旧性](/ch6#monitoring-staleness)
|
||
- [单主与无主复制的性能](/ch6#sec_replication_leaderless_perf)
|
||
- [多地区操作](/ch6#multi-region-operation)
|
||
- [检测并发写入](/ch6#sec_replication_concurrent)
|
||
- ["先发生"关系与并发](/ch6#sec_replication_happens_before)
|
||
- [捕获先发生关系](/ch6#capturing-the-happens-before-relationship)
|
||
- [版本向量](/ch6#version-vectors)
|
||
- [总结](/ch6#summary)
|
||
- [参考](/ch6#参考)
|
||
|
||
## [7. 分片](/ch7)
|
||
- [分片的利与弊](/ch7#sec_sharding_reasons)
|
||
- [面向多租户的分片](/ch7#sec_sharding_multitenancy)
|
||
- [键值数据的分片](/ch7#sec_sharding_key_value)
|
||
- [按键的范围分片](/ch7#sec_sharding_key_range)
|
||
- [重新平衡键范围分片数据](/ch7#rebalancing-key-range-sharded-data)
|
||
- [按键的哈希分片](/ch7#sec_sharding_hash)
|
||
- [哈希取模节点数](/ch7#hash-modulo-number-of-nodes)
|
||
- [固定数量的分片](/ch7#fixed-number-of-shards)
|
||
- [按哈希范围分片](/ch7#sharding-by-hash-range)
|
||
- [一致性哈希](/ch7#sec_sharding_consistent_hashing)
|
||
- [倾斜的工作负载与缓解热点](/ch7#sec_sharding_skew)
|
||
- [运维:自动/手动再均衡](/ch7#sec_sharding_operations)
|
||
- [请求路由](/ch7#sec_sharding_routing)
|
||
- [分片与二级索引](/ch7#sec_sharding_secondary_indexes)
|
||
- [本地二级索引](/ch7#id166)
|
||
- [全局二级索引](/ch7#id167)
|
||
- [总结](/ch7#summary)
|
||
- [References](/ch7#references)
|
||
|
||
## [8. 事务](/ch8)
|
||
- [事务到底是什么?](/ch8#sec_transactions_overview)
|
||
- [ACID 的含义](/ch8#sec_transactions_acid)
|
||
- [原子性](/ch8#sec_transactions_acid_atomicity)
|
||
- [一致性](/ch8#sec_transactions_acid_consistency)
|
||
- [隔离性](/ch8#sec_transactions_acid_isolation)
|
||
- [持久性](/ch8#durability)
|
||
- [单对象与多对象操作](/ch8#sec_transactions_multi_object)
|
||
- [单对象写入](/ch8#sec_transactions_single_object)
|
||
- [多对象事务的需求](/ch8#sec_transactions_need)
|
||
- [处理错误和中止](/ch8#handling-errors-and-aborts)
|
||
- [弱隔离级别](/ch8#sec_transactions_isolation_levels)
|
||
- [读已提交](/ch8#sec_transactions_read_committed)
|
||
- [没有脏读](/ch8#no-dirty-reads)
|
||
- [没有脏写](/ch8#sec_transactions_dirty_write)
|
||
- [实现读已提交](/ch8#sec_transactions_read_committed_impl)
|
||
- [快照隔离与可重复读](/ch8#sec_transactions_snapshot_isolation)
|
||
- [多版本并发控制(MVCC)](/ch8#sec_transactions_snapshot_impl)
|
||
- [观察一致快照的可见性规则](/ch8#sec_transactions_mvcc_visibility)
|
||
- [索引与快照隔离](/ch8#indexes-and-snapshot-isolation)
|
||
- [快照隔离、可重复读和命名混淆](/ch8#snapshot-isolation-repeatable-read-and-naming-confusion)
|
||
- [防止丢失更新](/ch8#sec_transactions_lost_update)
|
||
- [原子写操作](/ch8#atomic-write-operations)
|
||
- [显式锁定](/ch8#explicit-locking)
|
||
- [自动检测丢失的更新](/ch8#automatically-detecting-lost-updates)
|
||
- [条件写入(比较并设置)](/ch8#sec_transactions_compare_and_set)
|
||
- [冲突解决与复制](/ch8#conflict-resolution-and-replication)
|
||
- [写偏斜与幻读](/ch8#sec_transactions_write_skew)
|
||
- [描述写偏斜](/ch8#characterizing-write-skew)
|
||
- [更多写偏斜的例子](/ch8#more-examples-of-write-skew)
|
||
- [导致写偏斜的幻读](/ch8#sec_transactions_phantom)
|
||
- [物化冲突](/ch8#materializing-conflicts)
|
||
- [可串行化](/ch8#sec_transactions_serializability)
|
||
- [实际串行执行](/ch8#sec_transactions_serial)
|
||
- [将事务封装在存储过程中](/ch8#encapsulating-transactions-in-stored-procedures)
|
||
- [存储过程的利弊](/ch8#sec_transactions_stored_proc_tradeoffs)
|
||
- [分片](/ch8#sharding)
|
||
- [串行执行总结](/ch8#summary-of-serial-execution)
|
||
- [两阶段锁定(2PL)](/ch8#sec_transactions_2pl)
|
||
- [两阶段锁定的实现](/ch8#implementation-of-two-phase-locking)
|
||
- [两阶段锁定的性能](/ch8#performance-of-two-phase-locking)
|
||
- [谓词锁](/ch8#predicate-locks)
|
||
- [索引范围锁](/ch8#sec_transactions_2pl_range)
|
||
- [可串行化快照隔离(SSI)](/ch8#sec_transactions_ssi)
|
||
- [悲观并发控制与乐观并发控制](/ch8#pessimistic-versus-optimistic-concurrency-control)
|
||
- [基于过时前提的决策](/ch8#decisions-based-on-an-outdated-premise)
|
||
- [检测陈旧的 MVCC 读取](/ch8#detecting-stale-mvcc-reads)
|
||
- [检测影响先前读取的写入](/ch8#sec_detecting_writes_affect_reads)
|
||
- [可串行化快照隔离的性能](/ch8#performance-of-serializable-snapshot-isolation)
|
||
- [分布式事务](/ch8#sec_transactions_distributed)
|
||
- [两阶段提交(2PC)](/ch8#sec_transactions_2pc)
|
||
- [系统性的承诺](/ch8#a-system-of-promises)
|
||
- [协调器故障](/ch8#coordinator-failure)
|
||
- [三阶段提交](/ch8#three-phase-commit)
|
||
- [跨不同系统的分布式事务](/ch8#sec_transactions_xa)
|
||
- [精确一次消息处理](/ch8#sec_transactions_exactly_once)
|
||
- [XA 事务](/ch8#xa-transactions)
|
||
- [存疑时持有锁](/ch8#holding-locks-while-in-doubt)
|
||
- [从协调器故障中恢复](/ch8#recovering-from-coordinator-failure)
|
||
- [XA 事务的问题](/ch8#problems-with-xa-transactions)
|
||
- [数据库内部的分布式事务](/ch8#sec_transactions_internal)
|
||
- [再谈精确一次消息处理](/ch8#exactly-once-message-processing-revisited)
|
||
- [总结](/ch8#summary)
|
||
- [参考](/ch8#参考)
|
||
|
||
## [9. 分布式系统的麻烦](/ch9)
|
||
- [故障与部分失效](/ch9#sec_distributed_partial_failure)
|
||
- [不可靠的网络](/ch9#sec_distributed_networks)
|
||
- [TCP 的局限性](/ch9#sec_distributed_tcp)
|
||
- [网络故障的实践](/ch9#sec_distributed_network_faults)
|
||
- [检测故障](/ch9#id307)
|
||
- [超时和无界延迟](/ch9#sec_distributed_queueing)
|
||
- [网络拥塞和排队](/ch9#network-congestion-and-queueing)
|
||
- [同步与异步网络](/ch9#sec_distributed_sync_networks)
|
||
- [我们不能简单地使网络延迟可预测吗?](/ch9#can-we-not-simply-make-network-delays-predictable)
|
||
- [不可靠的时钟](/ch9#sec_distributed_clocks)
|
||
- [单调时钟与日历时钟](/ch9#sec_distributed_monotonic_timeofday)
|
||
- [日历时钟](/ch9#time-of-day-clocks)
|
||
- [单调时钟](/ch9#monotonic-clocks)
|
||
- [时钟同步和准确性](/ch9#sec_distributed_clock_accuracy)
|
||
- [对同步时钟的依赖](/ch9#sec_distributed_clocks_relying)
|
||
- [用于事件排序的时间戳](/ch9#sec_distributed_lww)
|
||
- [带置信区间的时钟读数](/ch9#clock-readings-with-a-confidence-interval)
|
||
- [用于全局快照的同步时钟](/ch9#sec_distributed_spanner)
|
||
- [进程暂停](/ch9#sec_distributed_clocks_pauses)
|
||
- [响应时间保证](/ch9#sec_distributed_clocks_realtime)
|
||
- [限制垃圾回收的影响](/ch9#sec_distributed_gc_impact)
|
||
- [知识、真相和谎言](/ch9#sec_distributed_truth)
|
||
- [多数派原则](/ch9#sec_distributed_majority)
|
||
- [分布式锁和租约](/ch9#sec_distributed_lock_fencing)
|
||
- [隔离僵尸进程和延迟请求](/ch9#sec_distributed_fencing_tokens)
|
||
- [多副本隔离](/ch9#fencing-with-multiple-replicas)
|
||
- [拜占庭故障](/ch9#sec_distributed_byzantine)
|
||
- [弱形式的谎言](/ch9#weak-forms-of-lying)
|
||
- [系统模型与现实](/ch9#sec_distributed_system_model)
|
||
- [定义算法的正确性](/ch9#defining-the-correctness-of-an-algorithm)
|
||
- [安全性与活性](/ch9#sec_distributed_safety_liveness)
|
||
- [将系统模型映射到现实世界](/ch9#mapping-system-models-to-the-real-world)
|
||
- [形式化方法和随机测试](/ch9#sec_distributed_formal)
|
||
- [模型检查与规范语言](/ch9#model-checking-and-specification-languages)
|
||
- [故障注入](/ch9#sec_fault_injection)
|
||
- [确定性模拟测试](/ch9#deterministic-simulation-testing)
|
||
- [总结](/ch9#summary)
|
||
- [参考](/ch9#参考)
|
||
|
||
## [10. 一致性与共识](/ch10)
|
||
- [线性一致性](/ch10#sec_consistency_linearizability)
|
||
- [什么使系统具有线性一致性?](/ch10#sec_consistency_lin_definition)
|
||
- [依赖线性一致性](/ch10#sec_consistency_linearizability_usage)
|
||
- [锁定与领导者选举](/ch10#locking-and-leader-election)
|
||
- [约束与唯一性保证](/ch10#sec_consistency_uniqueness)
|
||
- [跨通道时序依赖](/ch10#cross-channel-timing-dependencies)
|
||
- [实现线性一致性系统](/ch10#sec_consistency_implementing_linearizable)
|
||
- [线性一致性与仲裁](/ch10#sec_consistency_quorum_linearizable)
|
||
- [线性一致性的代价](/ch10#sec_linearizability_cost)
|
||
- [CAP 定理](/ch10#the-cap-theorem)
|
||
- [线性一致性与网络延迟](/ch10#linearizability-and-network-delays)
|
||
- [ID 生成器和逻辑时钟](/ch10#sec_consistency_logical)
|
||
- [逻辑时钟](/ch10#sec_consistency_timestamps)
|
||
- [Lamport 时间戳](/ch10#lamport-timestamps)
|
||
- [混合逻辑时钟](/ch10#hybrid-logical-clocks)
|
||
- [Lamport/混合逻辑时钟 vs. 向量时钟](/ch10#lamporthybrid-logical-clocks-vs-vector-clocks)
|
||
- [线性一致的 ID 生成器](/ch10#sec_consistency_linearizable_id)
|
||
- [实现线性一致的 ID 生成器](/ch10#implementing-a-linearizable-id-generator)
|
||
- [使用逻辑时钟强制约束](/ch10#enforcing-constraints-using-logical-clocks)
|
||
- [共识](/ch10#sec_consistency_consensus)
|
||
- [共识的多面性](/ch10#sec_consistency_faces)
|
||
- [单值共识](/ch10#single-value-consensus)
|
||
- [比较并设置作为共识](/ch10#compare-and-set-as-consensus)
|
||
- [共享日志作为共识](/ch10#sec_consistency_shared_logs)
|
||
- [获取并增加作为共识](/ch10#fetch-and-add-as-consensus)
|
||
- [原子提交作为共识](/ch10#atomic-commitment-as-consensus)
|
||
- [共识的实践](/ch10#sec_consistency_total_order)
|
||
- [使用共享日志](/ch10#sec_consistency_smr)
|
||
- [从单主复制到共识](/ch10#from-single-leader-replication-to-consensus)
|
||
- [共识的微妙之处](/ch10#subtleties-of-consensus)
|
||
- [共识的利弊](/ch10#pros-and-cons-of-consensus)
|
||
- [总结](/ch10#summary)
|
||
- [参考文献](/ch10#参考文献)
|
||
|
||
## [第十一章:批处理](/ch11)
|
||
- [使用Unix工具的批处理](/ch11#使用unix工具的批处理)
|
||
- [简单日志分析](/ch11#简单日志分析)
|
||
- [命令链与自定义程序](/ch11#命令链与自定义程序)
|
||
- [排序 VS 内存中的聚合](/ch11#排序-vs-内存中的聚合)
|
||
- [Unix哲学](/ch11#unix哲学)
|
||
- [统一的接口](/ch11#统一的接口)
|
||
- [逻辑与布线相分离](/ch11#逻辑与布线相分离)
|
||
- [透明度和实验](/ch11#透明度和实验)
|
||
- [MapReduce和分布式文件系统](/ch11#mapreduce和分布式文件系统)
|
||
- [MapReduce作业执行](/ch11#mapreduce作业执行)
|
||
- [分布式执行MapReduce](/ch11#分布式执行mapreduce)
|
||
- [MapReduce工作流](/ch11#mapreduce工作流)
|
||
- [Reduce侧连接与分组](/ch11#reduce侧连接与分组)
|
||
- [示例:用户活动事件分析](/ch11#示例用户活动事件分析)
|
||
- [排序合并连接](/ch11#排序合并连接)
|
||
- [把相关数据放在一起](/ch11#把相关数据放在一起)
|
||
- [分组](/ch11#分组)
|
||
- [处理偏斜](/ch11#处理偏斜)
|
||
- [Map侧连接](/ch11#map侧连接)
|
||
- [广播散列连接](/ch11#广播散列连接)
|
||
- [分区散列连接](/ch11#分区散列连接)
|
||
- [Map侧合并连接](/ch11#map侧合并连接)
|
||
- [MapReduce工作流与Map侧连接](/ch11#mapreduce工作流与map侧连接)
|
||
- [批处理工作流的输出](/ch11#批处理工作流的输出)
|
||
- [建立搜索索引](/ch11#建立搜索索引)
|
||
- [键值存储作为批处理输出](/ch11#键值存储作为批处理输出)
|
||
- [批处理输出的哲学](/ch11#批处理输出的哲学)
|
||
- [Hadoop与分布式数据库的对比](/ch11#hadoop与分布式数据库的对比)
|
||
- [存储多样性](/ch11#存储多样性)
|
||
- [处理模型的多样性](/ch11#处理模型的多样性)
|
||
- [针对频繁故障设计](/ch11#针对频繁故障设计)
|
||
- [MapReduce之后](/ch11#mapreduce之后)
|
||
- [物化中间状态](/ch11#物化中间状态)
|
||
- [数据流引擎](/ch11#数据流引擎)
|
||
- [容错](/ch11#容错)
|
||
- [关于物化的讨论](/ch11#关于物化的讨论)
|
||
- [图与迭代处理](/ch11#图与迭代处理)
|
||
- [Pregel处理模型](/ch11#pregel处理模型)
|
||
- [容错](/ch11#容错)
|
||
- [并行执行](/ch11#并行执行)
|
||
- [高级API和语言](/ch11#高级api和语言)
|
||
- [向声明式查询语言的转变](/ch11#向声明式查询语言的转变)
|
||
- [专业化的不同领域](/ch11#专业化的不同领域)
|
||
- [本章小结](/ch11#本章小结)
|
||
- [参考文献](/ch11#参考文献)
|
||
|
||
## [第十二章:流处理](/ch12)
|
||
- [传递事件流](/ch12#传递事件流)
|
||
- [消息传递系统](/ch12#消息传递系统)
|
||
- [直接从生产者传递给消费者](/ch12#直接从生产者传递给消费者)
|
||
- [消息代理](/ch12#消息代理)
|
||
- [消息代理与数据库的对比](/ch12#消息代理与数据库的对比)
|
||
- [多个消费者](/ch12#多个消费者)
|
||
- [确认与重新传递](/ch12#确认与重新传递)
|
||
- [分区日志](/ch12#分区日志)
|
||
- [使用日志进行消息存储](/ch12#使用日志进行消息存储)
|
||
- [日志与传统的消息传递相比](/ch12#日志与传统的消息传递相比)
|
||
- [消费者偏移量](/ch12#消费者偏移量)
|
||
- [磁盘空间使用](/ch12#磁盘空间使用)
|
||
- [当消费者跟不上生产者时](/ch12#当消费者跟不上生产者时)
|
||
- [重播旧消息](/ch12#重播旧消息)
|
||
- [数据库与流](/ch12#数据库与流)
|
||
- [保持系统同步](/ch12#保持系统同步)
|
||
- [变更数据捕获](/ch12#变更数据捕获)
|
||
- [变更数据捕获的实现](/ch12#变更数据捕获的实现)
|
||
- [初始快照](/ch12#初始快照)
|
||
- [日志压缩](/ch12#日志压缩)
|
||
- [变更流的API支持](/ch12#变更流的api支持)
|
||
- [事件溯源](/ch12#事件溯源)
|
||
- [从事件日志中派生出当前状态](/ch12#从事件日志中派生出当前状态)
|
||
- [命令和事件](/ch12#命令和事件)
|
||
- [状态、流和不变性](/ch12#状态流和不变性)
|
||
- [不可变事件的优点](/ch12#不可变事件的优点)
|
||
- [从同一事件日志中派生多个视图](/ch12#从同一事件日志中派生多个视图)
|
||
- [并发控制](/ch12#并发控制)
|
||
- [不变性的局限性](/ch12#不变性的局限性)
|
||
- [流处理](/ch12#流处理)
|
||
- [流处理的应用](/ch12#流处理的应用)
|
||
- [复合事件处理](/ch12#复合事件处理)
|
||
- [流分析](/ch12#流分析)
|
||
- [维护物化视图](/ch12#维护物化视图)
|
||
- [在流上搜索](/ch12#在流上搜索)
|
||
- [消息传递和RPC](/ch12#消息传递和rpc)
|
||
- [时间推理](/ch12#时间推理)
|
||
- [事件时间与处理时间](/ch12#事件时间与处理时间)
|
||
- [知道什么时候准备好了](/ch12#知道什么时候准备好了)
|
||
- [你用的是谁的时钟?](/ch12#你用的是谁的时钟)
|
||
- [窗口的类型](/ch12#窗口的类型)
|
||
- [流连接](/ch12#流连接)
|
||
- [流流连接(窗口连接)](/ch12#流流连接窗口连接)
|
||
- [流表连接(流扩充)](/ch12#流表连接流扩充)
|
||
- [表表连接(维护物化视图)](/ch12#表表连接维护物化视图)
|
||
- [连接的时间依赖性](/ch12#连接的时间依赖性)
|
||
- [容错](/ch12#容错)
|
||
- [微批量与存档点](/ch12#微批量与存档点)
|
||
- [原子提交再现](/ch12#原子提交再现)
|
||
- [幂等性](/ch12#幂等性)
|
||
- [失败后重建状态](/ch12#失败后重建状态)
|
||
- [本章小结](/ch12#本章小结)
|
||
- [参考文献](/ch12#参考文献)
|
||
|
||
## [第十三章:数据系统的未来](/ch13)
|
||
- [数据集成](/ch13#数据集成)
|
||
- [组合使用派生数据的工具](/ch13#组合使用派生数据的工具)
|
||
- [理解数据流](/ch13#理解数据流)
|
||
- [派生数据与分布式事务](/ch13#派生数据与分布式事务)
|
||
- [全序的限制](/ch13#全序的限制)
|
||
- [排序事件以捕获因果关系](/ch13#排序事件以捕获因果关系)
|
||
- [批处理与流处理](/ch13#批处理与流处理)
|
||
- [维护衍生状态](/ch13#维护衍生状态)
|
||
- [应用演化后重新处理数据](/ch13#应用演化后重新处理数据)
|
||
- [Lambda架构](/ch13#lambda架构)
|
||
- [统一批处理和流处理](/ch13#统一批处理和流处理)
|
||
- [分拆数据库](/ch13#分拆数据库)
|
||
- [组合使用数据存储技术](/ch13#组合使用数据存储技术)
|
||
- [创建索引](/ch13#创建索引)
|
||
- [一切的元数据库](/ch13#一切的元数据库)
|
||
- [开展分拆工作](/ch13#开展分拆工作)
|
||
- [分拆系统vs集成系统](/ch13#分拆系统vs集成系统)
|
||
- [少了什么?](/ch13#少了什么)
|
||
- [围绕数据流设计应用](/ch13#围绕数据流设计应用)
|
||
- [应用代码作为衍生函数](/ch13#应用代码作为衍生函数)
|
||
- [应用代码和状态的分离](/ch13#应用代码和状态的分离)
|
||
- [数据流:应用代码与状态变化的交互](/ch13#数据流应用代码与状态变化的交互)
|
||
- [流处理器和服务](/ch13#流处理器和服务)
|
||
- [观察派生数据状态](/ch13#观察派生数据状态)
|
||
- [物化视图和缓存](/ch13#物化视图和缓存)
|
||
- [有状态、可离线的客户端](/ch13#有状态可离线的客户端)
|
||
- [将状态变更推送给客户端](/ch13#将状态变更推送给客户端)
|
||
- [端到端的事件流](/ch13#端到端的事件流)
|
||
- [读也是事件](/ch13#读也是事件)
|
||
- [多分区数据处理](/ch13#多分区数据处理)
|
||
- [将事情做正确](/ch13#将事情做正确)
|
||
- [数据库的端到端原则](/ch13#数据库的端到端原则)
|
||
- [正好执行一次操作](/ch13#正好执行一次操作)
|
||
- [抑制重复](/ch13#抑制重复)
|
||
- [操作标识符](/ch13#操作标识符)
|
||
- [端到端原则](/ch13#端到端原则)
|
||
- [在数据系统中应用端到端思考](/ch13#在数据系统中应用端到端思考)
|
||
- [强制约束](/ch13#强制约束)
|
||
- [唯一性约束需要达成共识](/ch13#唯一性约束需要达成共识)
|
||
- [基于日志消息传递中的唯一性](/ch13#基于日志消息传递中的唯一性)
|
||
- [多分区请求处理](/ch13#多分区请求处理)
|
||
- [及时性与完整性](/ch13#及时性与完整性)
|
||
- [数据流系统的正确性](/ch13#数据流系统的正确性)
|
||
- [宽松地解释约束](/ch13#宽松地解释约束)
|
||
- [无协调数据系统](/ch13#无协调数据系统)
|
||
- [信任但验证](/ch13#信任但验证)
|
||
- [维护完整性,尽管软件有Bug](/ch13#维护完整性尽管软件有bug)
|
||
- [不要盲目信任承诺](/ch13#不要盲目信任承诺)
|
||
- [验证的文化](/ch13#验证的文化)
|
||
- [为可审计性而设计](/ch13#为可审计性而设计)
|
||
- [端到端原则重现](/ch13#端到端原则重现)
|
||
- [用于可审计数据系统的工具](/ch13#用于可审计数据系统的工具)
|
||
- [做正确的事情](/ch13#做正确的事情)
|
||
- [预测性分析](/ch13#预测性分析)
|
||
- [偏见与歧视](/ch13#偏见与歧视)
|
||
- [责任与问责](/ch13#责任与问责)
|
||
- [反馈循环](/ch13#反馈循环)
|
||
- [隐私和追踪](/ch13#隐私和追踪)
|
||
- [监视](/ch13#监视)
|
||
- [同意与选择的自由](/ch13#同意与选择的自由)
|
||
- [隐私与数据使用](/ch13#隐私与数据使用)
|
||
- [数据资产与权力](/ch13#数据资产与权力)
|
||
- [回顾工业革命](/ch13#回顾工业革命)
|
||
- [立法与自律](/ch13#立法与自律)
|
||
- [本章小结](/ch13#本章小结)
|
||
- [参考文献](/ch13#参考文献)
|
||
|
||
## [术语表](/glossary)
|
||
|
||
## [后记](/colophon)
|
||
- [关于作者](/colophon#关于作者)
|
||
- [关于译者](/colophon#关于译者)
|
||
- [后记](/colophon#后记)
|