mirror of
https://github.com/DistSysCorp/ddia.git
synced 2024-12-26 12:50:46 +08:00
Update ch11.md
This commit is contained in:
parent
bc4facbfd9
commit
8859c04986
4
ch11.md
4
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)被删掉了。如果仍然用时间窗口来解释的话,就是——在物化视图的场景中,你需要一个足够长的、一直延伸到事件流起点的时间窗口。
|
类似的,在事件溯源系统中,应用层的状态也是通过持续应用事件日志来维持的;这里的应用层的状态本质上也是一种物化视图。但和**数据流分析**场景不同,在**物化视图**场景中仅考虑固定的时间窗口内的状态是不够的——物化视图通常需要将所有时间以来的事件进行叠加应用,除非,有些过时日志已经通过日志紧缩(TODO: link)被删掉了。如果仍然用时间窗口来解释的话,就是——在物化视图的场景中,你需要一个足够长的、一直延伸到事件流起点的时间窗口。
|
||||||
|
|
||||||
@ -487,7 +487,7 @@ CEP 系统常使用偏高层的描述式查询语言,如 SQL 或者图形用
|
|||||||
- Actor 之间的通信通常是短暂且一对一的,而事件日志则是持久的且通常是多下游的(多个订阅者/消费者)。
|
- Actor 之间的通信通常是短暂且一对一的,而事件日志则是持久的且通常是多下游的(多个订阅者/消费者)。
|
||||||
- Actor 间可以用任意模式(注意区分模式和方式,Actor 的通信方式肯定是消息传递)进行通信(包括循环往复的请求-应答模式),但流处理通常由有向无环的流水线构成。每个任务通常以多个流作为输入,进行处理后,然后产生一个新的流。
|
- Actor 间可以用任意模式(注意区分模式和方式,Actor 的通信方式肯定是消息传递)进行通信(包括循环往复的请求-应答模式),但流处理通常由有向无环的流水线构成。每个任务通常以多个流作为输入,进行处理后,然后产生一个新的流。
|
||||||
|
|
||||||
也就是说,类 RPC 系统和流处理系统间在定位上有一些交叉。举个例子,Apache Storm 有一个叫做**分布式 RPC的功能,可以将用户的一个查询分发到所有处理事件流上的节点。在这些节点上,查询请求和事件会被交替的执行,之后所有查询结果会被聚合后返回给用户(参阅多分区的数据处理)。
|
也就是说,类 RPC 系统和流处理系统间在定位上有一些交叉。举个例子,Apache Storm 有一个叫做分布式 RPC的功能,可以将用户的一个查询分发到所有处理事件流上的节点。在这些节点上,查询请求和事件会被交替的执行,之后所有查询结果会被聚合后返回给用户(参阅多分区的数据处理)。
|
||||||
|
|
||||||
当然,也可以使用 Actor 框架来进行流处理。但在系统节点宕机时,这些框架通常不对消息的交付有任何保证。因此,除非你实现额外的逻辑,否则这种方式通常不能够进行容错。
|
当然,也可以使用 Actor 框架来进行流处理。但在系统节点宕机时,这些框架通常不对消息的交付有任何保证。因此,除非你实现额外的逻辑,否则这种方式通常不能够进行容错。
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user