From 8859c04986adf5829898e8ef3afaa4950cb0ee49 Mon Sep 17 00:00:00 2001 From: qtmuniao Date: Tue, 26 Mar 2024 10:38:52 +0800 Subject: [PATCH] Update ch11.md --- ch11.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ch11.md b/ch11.md index 4d51bf3..93837a5 100644 --- a/ch11.md +++ b/ch11.md @@ -465,7 +465,7 @@ CEP 系统常使用偏高层的描述式查询语言,如 SQL 或者图形用 ### 管理物化视图 -我们在数据库和流处理(TODO: link)一节中提到过,数据库的变更流可以用来维护一些衍生数据系统,如缓存、搜索索引和数据仓库。这些衍生数据系统可以看做物化视图(参见[聚合:数据立方和物化视图](https://ddia.qtmuniao.com/#/ch03?id=%e8%81%9a%e5%90%88%ef%bc%9a%e6%95%b0%e6%8d%ae%e7%ab%8b%e6%96%b9%e5%92%8c%e7%89%a9%e5%8c%96%e8%a7%86%e5%9b%be))的一些特例:**构造一个面向某种查询优化的视图,并将新到来的更改不断更新到该视图上。 +我们在数据库和流处理(TODO: link)一节中提到过,数据库的变更流可以用来维护一些衍生数据系统,如缓存、搜索索引和数据仓库。这些衍生数据系统可以看做物化视图(参见[聚合:数据立方和物化视图](https://ddia.qtmuniao.com/#/ch03?id=%e8%81%9a%e5%90%88%ef%bc%9a%e6%95%b0%e6%8d%ae%e7%ab%8b%e6%96%b9%e5%92%8c%e7%89%a9%e5%8c%96%e8%a7%86%e5%9b%be))的一些特例:构造一个面向某种查询优化的视图,并将新到来的更改不断更新到该视图上。 类似的,在事件溯源系统中,应用层的状态也是通过持续应用事件日志来维持的;这里的应用层的状态本质上也是一种物化视图。但和**数据流分析**场景不同,在**物化视图**场景中仅考虑固定的时间窗口内的状态是不够的——物化视图通常需要将所有时间以来的事件进行叠加应用,除非,有些过时日志已经通过日志紧缩(TODO: link)被删掉了。如果仍然用时间窗口来解释的话,就是——在物化视图的场景中,你需要一个足够长的、一直延伸到事件流起点的时间窗口。 @@ -487,7 +487,7 @@ CEP 系统常使用偏高层的描述式查询语言,如 SQL 或者图形用 - Actor 之间的通信通常是短暂且一对一的,而事件日志则是持久的且通常是多下游的(多个订阅者/消费者)。 - Actor 间可以用任意模式(注意区分模式和方式,Actor 的通信方式肯定是消息传递)进行通信(包括循环往复的请求-应答模式),但流处理通常由有向无环的流水线构成。每个任务通常以多个流作为输入,进行处理后,然后产生一个新的流。 -也就是说,类 RPC 系统和流处理系统间在定位上有一些交叉。举个例子,Apache Storm 有一个叫做**分布式 RPC的功能,可以将用户的一个查询分发到所有处理事件流上的节点。在这些节点上,查询请求和事件会被交替的执行,之后所有查询结果会被聚合后返回给用户(参阅多分区的数据处理)。 +也就是说,类 RPC 系统和流处理系统间在定位上有一些交叉。举个例子,Apache Storm 有一个叫做分布式 RPC的功能,可以将用户的一个查询分发到所有处理事件流上的节点。在这些节点上,查询请求和事件会被交替的执行,之后所有查询结果会被聚合后返回给用户(参阅多分区的数据处理)。 当然,也可以使用 Actor 框架来进行流处理。但在系统节点宕机时,这些框架通常不对消息的交付有任何保证。因此,除非你实现额外的逻辑,否则这种方式通常不能够进行容错。