@@ -10,7 +10,7 @@ import StepContent from '@site/src/components/Steps/step-content';
1010
1111### 流的工作原理
1212
13- 流可以以两种模式运行:** 标准** 和** 仅追加** 。在创建流时,使用 ` APPEND_ONLY ` 参数(默认为 ` false ` )指定模式。 [ CREATE STREAM ] ( /sql/sql-commands/ddl/stream/create-stream ) 。
13+ 流可以以两种模式运行:** 标准** 和** 仅追加** 。在创建流时使用 ` APPEND_ONLY ` 参数(默认为 ` false ` )指定模式。
1414
1515- ** 标准** :捕获所有类型的数据更改,包括插入、更新和删除。
1616- ** 仅追加** :在此模式下,流仅包含数据插入记录;数据更新或删除不会被捕获。
@@ -47,7 +47,7 @@ SHOW FULL STREAMS;
4747└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
4848```
4949
50- 现在,向每个表插入两个值,并观察流捕获的内容 :
50+ 现在,向每个表插入两个值并观察流捕获的内容 :
5151
5252``` sql
5353-- 插入两个新值
@@ -126,7 +126,7 @@ SELECT * FROM s_append_only;
126126
127127#### 消费流
128128
129- 让我们创建两个新表,并将流捕获的内容插入其中 。
129+ 让我们创建两个新表并将流捕获的内容插入其中 。
130130
131131``` sql
132132CREATE TABLE t_consume_standard (b INT );
@@ -152,7 +152,7 @@ SELECT * FROM t_consume_append_only;
152152└─────────────────┘
153153```
154154
155- 如果您现在查询流,您会发现它们是空的,因为它们已经被消费了 。
155+ 如果您现在查询流,您会发现它们是空的,因为它们已经被消费 。
156156
157157``` sql
158158-- 空结果
@@ -188,7 +188,7 @@ SELECT * FROM s_standard;
188188SELECT * FROM s_append_only;
189189```
190190
191- 上述结果表明,标准流将 UPDATE 操作转换为 DELETE( ` 3 ` ) 和 INSERT( ` 4 ` ) 的组合,而仅追加流没有捕获任何内容。如果我们现在删除值 ` 4 ` ,我们可以得到以下结果:
191+ 上述结果表明,标准流将 UPDATE 操作转换为 DELETE ( ` 3 ` ) 和 INSERT ( ` 4 ` ) 的组合,而仅追加流没有捕获任何内容。如果我们现在删除值 ` 4 ` ,我们可以得到以下结果:
192192
193193``` sql
194194DELETE FROM t_standard WHERE a = 4 ;
@@ -224,7 +224,7 @@ INSERT INTO table SELECT * FROM stream;
224224
225225如果此 ` INSERT ` 事务提交,流被消费。
226226
227- ** 失败的事务** :如果事务失败,流保持不变,可供将来消费 。
227+ ** 失败的事务** :如果事务失败,流保持不变并可用于未来的消费 。
228228
229229** 并发访问** :_ 一次只能有一个事务成功消费一个流_ 。如果多个事务尝试消费同一个流,只有第一个提交的事务成功,其他事务失败。
230230
@@ -320,14 +320,14 @@ SELECT * FROM s;
320320
321321### 示例:实时跟踪和转换数据
322322
323- 以下示例演示如何使用流来捕获和跟踪实时用户活动 。
323+ 以下示例演示了如何使用流来捕获和跟踪实时用户活动 。
324324
325325#### 1. 创建表
326326
327327该示例使用三个表:
328328
329329- ` user_activities ` 表记录用户活动。
330- - ` user_profiles ` 表存储用户配置文件 。
330+ - ` user_profiles ` 表存储用户档案 。
331331- ` user_activity_profiles ` 表是两个表的组合视图。
332332
333333` activities_stream ` 表作为流创建,以捕获 ` user_activities ` 表的实时变更。然后,流被查询消费,以使用最新数据更新 ` user_activity_profiles ` 表。
@@ -340,7 +340,7 @@ CREATE TABLE user_activities (
340340 timestamp TIMESTAMP
341341);
342342
343- -- 创建表以存储用户配置文件
343+ -- 创建表以存储用户档案
344344CREATE TABLE user_profiles (
345345 user_id INT ,
346346 username VARCHAR ,
@@ -353,7 +353,7 @@ INSERT INTO user_profiles VALUES (102, 'Bob', 'San Francisco');
353353INSERT INTO user_profiles VALUES (103 , ' Charlie' , ' Los Angeles' );
354354INSERT INTO user_profiles VALUES (104 , ' Dana' , ' Chicago' );
355355
356- -- 创建表以存储用户活动和配置文件的组合视图
356+ -- 创建表以存储用户活动和档案的组合视图
357357CREATE TABLE user_activity_profiles (
358358 user_id INT ,
359359 username VARCHAR ,
396396 -- 变更数据的源表
397397 activities_stream AS a
398398JOIN
399- -- 与用户配置文件数据连接
399+ -- 与用户档案数据连接
400400 user_profiles AS p
401401ON
402402 a .user_id = p .user_id
426426
427427#### 5. 实时数据处理的任务更新
428428
429- 为了保持 ` user_activity_profiles ` 表的最新状态,重要的是定期将其与 ` activities_stream ` 中的数据同步。此同步应与 ` user_activities ` 表的更新间隔一致,确保 ` user_activity_profiles ` 准确反映最新的用户活动和配置文件,以便进行实时数据分析 。
429+ 为了保持 ` user_activity_profiles ` 表的最新状态,重要的是定期将其与 ` activities_stream ` 中的数据同步。此同步应与 ` user_activities ` 表的更新间隔一致,确保 ` user_activity_profiles ` 准确反映最新的用户活动和档案,以进行实时数据分析 。
430430
431431Databend的 ` TASK ` 命令(目前处于私有预览阶段),可以用于定义每分钟或每秒更新 ` user_activity_profiles ` 表的任务。
432432
@@ -448,8 +448,4 @@ WHEN stream_status('activities_stream') AS
448448 ON a .user_id = p .user_id
449449 -- 仅包含 action 为 'INSERT' 的行
450450 WHERE a .change $action = ' INSERT' ;
451- ```
452-
453- :::tip 任务处于私有预览阶段
454- ` TASK ` 命令目前处于私有预览阶段,因此语法和用法可能会在未来发生变化。
455- :::
451+ ```
0 commit comments