From 867f31c22ddb86cb6ecb1ceb5e49e6ab0eb03729 Mon Sep 17 00:00:00 2001 From: Yin Gang Date: Sat, 31 Jul 2021 21:32:32 +0800 Subject: [PATCH] continue with chapter 4 --- ch2.md | 2 +- ch4.md | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ch2.md b/ch2.md index 6eeb7d7..7e521b7 100644 --- a/ch2.md +++ b/ch2.md @@ -236,7 +236,7 @@ CODASYL中的查询是通过利用遍历记录列和跟随访问路径表在数 我们没有办法说哪种数据模型更有助于简化应用代码,因为它取决于数据项之间的关系种类。对高度关联的数据而言,文档模型是极其糟糕的,关系模型是可以接受的,而选用图形模型(参见“[图数据模型](#图数据模型)”)是最自然的。 -#### 文档模型中的架构灵活性 +#### 文档模型中的模式灵活性 大多数文档数据库以及关系数据库中的JSON支持都不会强制文档中的数据采用何种模式。关系数据库的XML支持通常带有可选的模式验证。没有模式意味着可以将任意的键和值添加到文档中,并且当读取时,客户端对无法保证文档可能包含的字段。 diff --git a/ch4.md b/ch4.md index f3a6870..f6a3b1d 100644 --- a/ch4.md +++ b/ch4.md @@ -11,11 +11,11 @@ [TOC] -应用程序不可避免地随时间而变化。新产品的推出,对需求的深入理解,或者商业环境的变化,总会伴随着**功能(feature)** 的增增改改。[第一章](ch1.md)介绍了[**可演化性(evolvability)**](ch1.md#可演化性:拥抱变化)的概念:应该尽力构建能灵活适应变化的系统(参阅“[可演化性:拥抱变化]()”)。 +应用程序不可避免地随时间而变化。新产品的推出,对需求的深入理解,或者商业环境的变化,总会伴随着**功能(feature)** 的增增改改。[第一章](ch1.md)介绍了**可演化性(evolvability)**的概念:应该尽力构建能灵活适应变化的系统(参阅“[可演化性:拥抱变化](ch1.md#可演化性:拥抱变化)”)。 在大多数情况下,修改应用程序的功能也意味着需要更改其存储的数据:可能需要使用新的字段或记录类型,或者以新方式展示现有数据。 -我们在[第二章](ch2.md)讨论的数据模型有不同的方法来应对这种变化。关系数据库通常假定数据库中的所有数据都遵循一个模式:尽管可以更改该模式(通过模式迁移,即`ALTER`语句),但是在任何时间点都有且仅有一个正确的模式。相比之下,**读时模式(schema-on-read)**(或 **无模式(schemaless)**)数据库不会强制一个模式,因此数据库可以包含在不同时间写入的新老数据格式的混合(参阅 “文档模型中的模式灵活性” )。 +我们在[第二章](ch2.md)讨论的数据模型有不同的方法来应对这种变化。关系数据库通常假定数据库中的所有数据都遵循一个模式:尽管可以更改该模式(通过模式迁移,即`ALTER`语句),但是在任何时间点都有且仅有一个正确的模式。相比之下,**读时模式(schema-on-read)**(或 **无模式(schemaless)**)数据库不会强制一个模式,因此数据库可以包含在不同时间写入的新老数据格式的混合(参阅 “[文档模型中的模式灵活性](ch2.md#文档模型中的模式灵活性)” )。 当数据**格式(format)** 或**模式(schema)** 发生变化时,通常需要对应用程序代码进行相应的更改(例如,为记录添加新字段,然后修改程序开始读写该字段)。但在大型应用程序中,代码变更通常不会立即完成: @@ -36,7 +36,7 @@ 向前兼容性可能会更棘手,因为旧版的程序需要忽略新版数据格式中新增的部分。 -本章中将介绍几种编码数据的格式,包括 JSON,XML,Protocol Buffers,Thrift和Avro。尤其将关注这些格式如何应对模式变化,以及它们如何对新旧代码数据需要共存的系统提供支持。然后将讨论如何使用这些格式进行数据存储和通信:在Web服务中,**具象状态传输(REST)**和**远程过程调用(RPC)**,以及**消息传递系统**(如Actor和消息队列)。 +本章中将介绍几种编码数据的格式,包括 JSON,XML,Protocol Buffers,Thrift和Avro。尤其将关注这些格式如何应对模式变化,以及它们如何对新旧代码数据需要共存的系统提供支持。然后将讨论如何使用这些格式进行数据存储和通信:在Web服务中,**表述性状态传递(REST)**和**远程过程调用(RPC)**,以及**消息传递系统**(如Actor和消息队列)。 ## 编码数据的格式