
# 附录
#### 背景信息
**使用云盘组件RAID磁盘阵列**
表1常见RAID磁盘阵列介绍 
| RAID级别 | 简介                                                        | 读写性能                                                                  | 安全性能                                                                       | 磁盘使用率 | 组建不同RAID阵列所需的最少磁盘数量 |
|:---|:---|:---|:---|:---|:---|
| RAID0  | RAID0将数据分条存储在多个磁盘上，可实现并行读写，提供最快的读写速率。                     | 多个磁盘并行读写获取更高性能                                                        | 最差 没有冗余能力，一个磁盘损坏，整个RAID阵列数据都不可用              | 100%  | 两块                  |
| RAID1  | 通过构造数据镜像实现数据冗余，阵列中一半的磁盘容量投入使用，另一半磁盘容量用来做镜像，提供数据备份。        | 读性能：与单个磁盘相同 写性能：需要将数据写入是两个磁盘，写性能低于单个磁盘 | 最高 提供磁盘数据的完整备份，当阵列中的一个磁盘失效时，系统可以自动采用镜像磁盘的数据 | 50%   | 两块                  |
| RAID01 | 结合RAID0和RAID1两种磁盘阵列，先将一半磁盘组建成RAID0分条存储数据，再用另一半磁盘做RAID1镜像。 | 读性能：和RAID0相同 写性能：和RAID1相同               | 比RAID10的安全性能低                                                              | 50%   | 四块                  |
| RAID10 | 结合RAID1和RAID0两种磁盘阵列，先将磁盘两两组建成RAID1镜像，再组建RAID0将数据分条存储。     | 读性能：RAID0相同 写性能：RAID1相同                | 和RAID1的安全性能相同                                                              | 50%   | 四块                  |
| RAID5  | RAID5不需要单独指定数据校验磁盘，而是将每块磁盘生成的校验信息分块存储至阵列中的每块磁盘中。          | 读性能：和RAID0相同 写性能：由于要写入奇偶校验信息，写性能低于单个磁盘   | 比RAID10的安全性能低                                                              | 66.7% | 三块                  |
   
#### 源代码
样例1：DLI Flink SQL脚本
```
CREATE SOURCE STREAM alarm_info (alarm_id STRING, alarm_type INT) WITH ( 
type = "dis", 
region = "cn-east-3", 
channel = "dis-alarm-input", 
partition_count = "1", 
encode = "csv", 
offset = "0", 
field_delimiter = "," 
); 
 
CREATE SINK STREAM over_alarm ( 
alarm_over STRING 
/* over speed message */ 
) WITH ( 
type = "smn", 
region = "cn-east-3", 
topic_urn = " urn:smn:cn-east-3:0b9553e29c0026f22f3dc007a430e45a:alarm_over ", 
message_subject = "alarm", 
message_column = "alarm_over" 
); 
 
INSERT INTO 
over_alarm 
SELECT 
"your alarm over (" || CAST(alarm_type as CHAR(20)) || ") ." 
FROM 
alarm_info 
WHERE 
alarm_type > 8; 
 
CREATE SINK STREAM alarm_info_output (alarm_id STRING, alarm_type INT) WITH ( 
type = "dis", 
region = "cn-east-3", 
channel = "dis-alarm-output", 
PARTITION_KEY = "alarm_type", 
encode = "csv", 
field_delimiter = "," 
); 
 
INSERT INTO 
alarm_info_output 
SELECT 
* 
FROM 
alarm_info 
WHERE 
alarm_type > 0; 
附：测试源数据示例 
alarm_idalarm_type 
601143 
601215 
601226 
601237 
601248 
601260 
601279 
6012810 
601296
```
样例2：创建数据表alarm_info，alarm_count_info
```
create table alarm_info( 
alarm_time string, 
alarm_id string, 
alarm_type int 
) using csv options(path 's3a://obs-alarm-platform/alarm_info') partitioned by(alarm_time); 
 
create table alarm_count_info( 
alarm_time string, 
alarm_type int, 
alarm_count int 
) using csv options(path 's3a://obs-alarm-platform/alarm_count_info');
```
样例3：按告警类别进行统计
```
insert into 
alarm_count_info 
select 
alarm_time, 
alarm_type, 
count(alarm_type) 
from 
alarm_info 
group by 
alarm_time, 
alarm_type;
```
