安装部署doris集群与基础使用

安装部署doris集群

机器IP节点
192.168.218.220fe+be
192.168.218.221be
192.168.218.227be

前期准备

systemctl stop firewalld
systemctl disable firewalld

#永久关闭selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0  # 临时

# 关闭swap
swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久

#设置系统最大打开文件句柄数
vi /etc/security/limits.conf 
* soft nofile 1000000
* hard nofile 1000000
临时设置
ulimit  -n  1000000

#修改虚拟内存区域数量
sysctl -w vm.max_map_count=3000000
安装jdk及依赖包
yum install -y build-essential gcc-10 g++-10 java-1.8.0-openjdk.x86_64 maven cmake byacc flex automake libtool-bin bison binutils-dev libiberty-dev zip unzip libncurses5-dev curl git ninja-build python

#配置java环境变量
cat >>/etc/profile <<EOF
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
EOF

source /etc/profile

安装解压Doris安装包

tar  -zxf  apache-doris-2.1.5-bin-x64.tar.gz
cd   apache-doris-2.1.5-bin-x64
cd  fe/conf
vim fe.conf
CUR_DATE=`date +%Y%m%d-%H%M%S`
#CUR_DATE 变量设置为当前日期和时间,格式为 YYYYMMDD-HHMMSS。
# Log dir
LOG_DIR = /data/doris/log/fe
#LOG_DIR 变量定义了日志文件的存储目录,默认为 /data/doris/log/fe。

# CMS JAVA OPTS 启动参数,默认 Java 最大堆内存为 8GB,在 JAVA_OPTS 参数中指定 -Xmx 选项可以调整 Java 最大堆内存。
JAVA_OPTS="-Dsun.security.krb5.debug=true -Djavax.security.auth.useSubjectCredsOnly=false -Xss4m -Xmx16384m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:/data/doris/log/fe/fe.gc.log.$CUR_DATE"

meta_dir = /data/doris-meta
#meta_dir 定义了存储元数据的目录,默认值是 ${DORIS_HOME}/doris-meta。此目录在启动 Frontend 之前必须创建。

http_port, rpc_port, query_port, edit_log_port, arrow_flight_sql_port 分别定义了 HTTP 服务端口、RPC 端口、查询端口、编辑日志端口和 Arrow Flight SQL 端口。默认配置如下:
http_port = 8030
rpc_port = 9020
query_port = 9030
edit_log_port = 9010
arrow_flight_sql_port = -1(未启用)

priority_networks = 10.10.10.0/24;192.168.0.0/16
priority_networks 是一个可选配置,用于指定使用的 IP 地址范围,采用 CIDR 格式或单一 IP 格式。该配置为可选项,默认值为空
og_roll_size_mb:定义日志文件的滚动大小,单位为 MB。
sys_log_level:系统日志级别,设置为 INFO,可以选择的级别包括 INFO、WARN、ERROR、FATAL。
sys_log_mode:系统日志模式,设置为 NORMAL。可选的模式还有 BRIEF 和 ASYNC。

启动fe

/opt/apache-doris-2.1.5-bin-x64/fe/bin/start_fe.sh --daemon

查看启动日志确保服务启动成功

tail -f  /data/doris/log/fe/日志.log

修改be配置

## 在 storage_root_path 中使用 medium 指定磁盘类型
## /home/disk1/doris,medium:HDD: 表示该目录存储冷数据;
## /home/disk2/doris,medium:SSD: 表示该目录存储热数据;
storage_root_path=/home/disk1/doris,medium:HDD;/home/disk2/doris,medium:SSD
220的be
priority_networks = 192.168.218.220/24
221的be
priority_networks = 192.168.218.221/24
227的be
priority_networks = 192.168.218.227/24

mkdir -p /home/disk1/doris
mkdir -p /home/disk2/doris

启动be

/opt/apache-doris-2.1.5-bin-x64/be/bin/start_be.sh --daemo

在192.168.218.221和192.168.218.227上都操作只需开启be

在fe上添加be

ALTER SYSTEM ADD FOLLOWER "192.168.218.220:9010";

alter system add backend "192.168.218.220:9050";
alter system add backend "192.168.218.221:9050";
alter system add backend "192.168.218.227:9050";
ALTER SYSTEM ADD BROKER broker1 "192.168.218.220:8000";
ALTER SYSTEM ADD BROKER broker2 "192.168.218.221:8000";
ALTER SYSTEM ADD BROKER broker3 "192.168.218.227:8000";

一键启停集群脚本

#!/bin/bash
case $1 in
    "start")
        for host in 192.168.218.221 192.168.218.220 192.168.218.227 ; do
            echo "========== 在 $host 上启动 fe  ========="
            ssh $host "source /etc/profile; /opt/doris/fe/bin/start_fe.sh --daemon"
        
        for host in hadoop102 hadoop103 hadoop104 ; do
            echo "========== 在 $host 上启动 be  ========="
            ssh $host "source /etc/profile; /opt/doris/be/bin/start_be.sh --daemon"
        done

       ;;
    "stop")
            for host in 192.168.218.221 192.168.218.220 192.168.218.227 ; do
                echo "========== 在 $host 上停止 fe  ========="
                ssh $host "source /etc/profile; /opt/doris/fe/bin/stop_fe.sh "
            done
            for host in hadoop102 hadoop103 hadoop104 ; do
                echo "========== 在 $host 上停止 be  ========="
                ssh $host "source /etc/profile; /opt/doris/be/bin/stop_be.sh "
            done

           ;;

    *)
        echo "你启动的姿势不对"
        echo "  start   启动doris集群"
        echo "  stop    停止stop集群"

    ;;
esac

Doris基础使用

用户创建

Doris采用MySQL协议进行通信,可以通过MySQL client 或者 MySQL JDBC连接到 Doris 集群。Doris集群内置root用户,密码默认为空,root 用户默认拥有集群所有权限,例如:权限变更权限(Grant_priv )、节点变更权限(Node_priv ,包括 FE、BE、BROKER 节点的添加、删除、下线等操作)。

mysql> SET PASSWORD FOR 'root' = PASSWORD('your_password');
Query OK, 0 rows affected (0.00 sec)

创建数据库

mysql> create database example_db;
Query OK, 0 rows affected (0.02 sec)

给予用户权限

#给test用户进行数据库访问授权
mysql> GRANT ALL ON example_db TO test;
Query OK, 0 rows affected (0.08 sec)

创建数据库的表

mysql> use example_db;
Database changed

#创建 example_db.example_tbl 表
CREATE TABLE IF NOT EXISTS example_db.example_tbl
(
    `user_id` LARGEINT NOT NULL COMMENT "用户id",
    `date` DATE NOT NULL COMMENT "数据灌入日期时间",
    `city` VARCHAR(20) COMMENT "用户所在城市",
    `age` SMALLINT COMMENT "用户年龄",
    `sex` TINYINT COMMENT "用户性别",
    `last_visit_date` DATETIME REPLACE DEFAULT "1970-01-01 00:00:00" COMMENT "用户最后一次访问时间",
    `cost` BIGINT SUM DEFAULT "0" COMMENT "用户总消费",
    `max_dwell_time` INT MAX DEFAULT "0" COMMENT "用户最大停留时间",
    `min_dwell_time` INT MIN DEFAULT "99999" COMMENT "用户最小停留时间"
)
AGGREGATE KEY(`user_id`, `date`, `city`, `age`, `sex`)
DISTRIBUTED BY HASH(`user_id`) BUCKETS 1
PROPERTIES (
    "replication_allocation" = "tag.location.default: 1"
);

mysql> show tables;
+----------------------+
| Tables_in_example_db |
+----------------------+
| example_tbl          |
+----------------------+
1 row in set (0.01 sec)

测试准备一些数据

[root@node1 ~]# mkdir data
[root@node1 ~]# cd data && vim test.csv
10000,2017-10-01,北京,20,0,2017-10-01 06:00:00,20,10,10
10000,2017-10-01,北京,20,0,2017-10-01 07:00:00,15,2,2
10001,2017-10-01,北京,30,1,2017-10-01 17:05:45,2,22,22
10002,2017-10-02,上海,20,1,2017-10-02 12:59:12,200,5,5
10003,2017-10-02,广州,32,0,2017-10-02 11:20:00,30,11,11
10004,2017-10-01,深圳,35,0,2017-10-01 10:00:15,100,3,3
10004,2017-10-03,深圳,35,0,2017-10-03 10:20:22,11,6,6
curl  --location-trusted -u root:123 -T test.csv -H "column_separator:," http://127.0.0.1:8030/api/example_db/example_tbl/_stream_load
可以看到
[root@localhost data]# curl  --location-trusted -u root:123 -T test.csv -H "column_separator:," http://127.0.0.1:8030/api/example_db/example_tbl/_stream_load
{
    "TxnId": 36,
    "Label": "297f20b1-40c0-44b1-a4fa-1dfeedd6300e",
    "Comment": "",
    "TwoPhaseCommit": "false",
    "Status": "Success",
    "Message": "OK",
    "NumberTotalRows": 7,
    "NumberLoadedRows": 7,
    "NumberFilteredRows": 0,
    "NumberUnselectedRows": 0,
    "LoadBytes": 400,
    "LoadTimeMs": 269,
    "BeginTxnTimeMs": 26,
    "StreamLoadPutTimeMs": 156,
    "ReadDataTimeMs": 0,
    "WriteDataTimeMs": 57,
    "CommitAndPublishTimeMs": 28
}
-T test.csv : 这里使我们刚才保存的数据文件,如果路径不一样,请指定完整路径。
-u root : 123这里是用户名密码,我们使用默认用户root,密码默认为空。
127.0.0.1:8030 : 分别是 fe 的 ip 和 http_port。

NumberLoadedRows: 表示已经导入的数据记录数
NumberTotalRows: 表示要导入的总数据量
Status :Success 表示导入成功

查询数据表

select * from example_tbl;

MySQL [example_db]> select * from example_tbl;
+---------+------------+--------+------+------+---------------------+------+----------------+----------------+
| user_id | date       | city   | age  | sex  | last_visit_date     | cost | max_dwell_time | min_dwell_time |
+---------+------------+--------+------+------+---------------------+------+----------------+----------------+
| 10000   | 2017-10-01 | 北京   |   20 |    0 | 2017-10-01 07:00:00 |   35 |             10 |              2 |
| 10001   | 2017-10-01 | 北京   |   30 |    1 | 2017-10-01 17:05:45 |    2 |             22 |             22 |
| 10002   | 2017-10-02 | 上海   |   20 |    1 | 2017-10-02 12:59:12 |  200 |              5 |              5 |
| 10003   | 2017-10-02 | 广州   |   32 |    0 | 2017-10-02 11:20:00 |   30 |             11 |             11 |
| 10004   | 2017-10-01 | 深圳   |   35 |    0 | 2017-10-01 10:00:15 |  100 |              3 |              3 |
| 10004   | 2017-10-03 | 深圳   |   35 |    0 | 2017-10-03 10:20:22 |   11 |              6 |              6 |
+---------+------------+--------+------+------+---------------------+------+----------------+----------------+
6 rows in set (0.140 sec)

MySQL [example_db]> select * from example_tbl where city='上海';
+---------+------------+--------+------+------+---------------------+------+----------------+----------------+
| user_id | date       | city   | age  | sex  | last_visit_date     | cost | max_dwell_time | min_dwell_time |
+---------+------------+--------+------+------+---------------------+------+----------------+----------------+
| 10002   | 2017-10-02 | 上海   |   20 |    1 | 2017-10-02 12:59:12 |  200 |              5 |              5 |
+---------+------------+--------+------+------+---------------------+------+----------------+----------------+
1 row in set (0.036 sec)

MySQL [example_db]> select city, sum(cost) as total_cost from example_tbl group by city;
+--------+------------+
| city   | total_cost |
+--------+------------+
| 北京   |         37 |
| 上海   |        200 |
| 广州   |         30 |
| 深圳   |        111 |
+--------+------------+
4 rows in set (0.127 sec)

创建表语法结构

SQL语法结构
CREATE TABLE [IF NOT EXISTS] [database.]table
(
    column_definition_list,
    [index_definition_list]
)
[engine_type]
[keys_type]
[table_comment]
[partition_desc]
[distribution_desc]
[rollup_list]
[properties]

column_definition_list

column_definition_list 表示定义的列信息,一个表中可以定义多个列,每个列的定义如下

column_name column_type [KEY] [aggr_type] [NULL] [default_value] [column_comment]

以上定义列参数解释如下:

  • column_name:列名;
  • column_type:列类型,Doris支持常见的列类型:INT、BIGING、FLOAT、DATE、VARCHAR等,详细参考数据类型小节;
  • aggr_type:表示聚合类型,支持以下聚合类型:
SUM:求和。适用数值类型。
MIN:求最小值。适合数值类型。
MAX:求最大值。适合数值类型。
REPLACE:替换。对于维度列相同的行,指标列会按照导入的先后顺序,后倒入的替换先导入的。
REPLACE_IF_NOT_NULL:非空值替换。和 REPLACE 的区别在于对于null值,不做替换。这里要注意的是字段默认值要给NULL,而不能是空字符串,如果是空字符串,会给你替换成空字符串。
HLL_UNION:HLL 类型的列的聚合方式,通过 HyperLogLog 算法聚合。
BITMAP_UNION:BIMTAP 类型的列的聚合方式,进行位图的并集聚合。
  • default_value:列默认值,当导入数据未指定该列的值时,系统将赋予该列default_value。语法为 default default_value,当前default_value支持两种形式:
#1.用户指定固定值,如:
k1 INT DEFAULT '1',
k2 CHAR(10) DEFAULT 'aaaa'

#2.系统提供的关键字,目前只用于DATETIME类型,导入数据缺失该值时系统将赋予当前时间
dt DATETIME DEFAULT CURRENT_TIMESTAMP
  • column_comment:列注释。

index_definition_list

index_definition_list表示定义的索引信息。定义索引可以是一个或多个,多个使用逗号隔开。索引定义语法如下:

INDEX index_name (col_name) [USING BITMAP] COMMENT 'xxxxxx'

示例:

INDEX idx1 (k1) USING BITMAP COMMENT "This is a bitmap index1",
INDEX idx2 (k2) USING BITMAP COMMENT "This is a bitmap index2",
...

engine_type

engine_type表示表引擎类型,在Apache Doris中表分为普通表和外部表,两类表主要通过ENGINE类型来标识是那种类型的表。普通表就是Doris中创建的表ENGINE为OLAP,OLAP是默认的Engine类型;外部表有很多类型,ENGIE也不同,例如:MYSQL、BROKER、HIVE、ICEBERG 、HUDI。
示例:

ENGINE=olap

key_type

key_type表示数据类型。用法如下:

key_type(col1, col2, ...)

key_type 支持以下模型:

  • DUPLICATE KEY(默认):其后指定的列为排序列。
  • AGGREGATE KEY:其后指定的列为维度列。
  • UNIQUE KEY:其后指定的列为主键列。
DUPLICATE KEY(col1, col2),
AGGREGATE KEY(k1, k2, k3),
UNIQUE KEY(k1, k2)

table_comment

table_comment表示表注释,示例:

COMMENT "This is my first DORIS table"

partition_desc

partitioin_desc表示分区信息,支持三种写法

1.LESS THAN:仅定义分区上界。下界由上一个分区的上界决定

PARTITION BY RANGE(col1[, col2, ...])
(
    PARTITION partition_name1 VALUES LESS THAN MAXVALUE|("value1", "value2", ...),
    PARTITION partition_name2 VALUES LESS THAN MAXVALUE|("value1", "value2", ...)
)

2.FIXED RANGE: 定义分区的左闭右开区间

PARTITION BY RANGE(col1[, col2, ...])
(
    PARTITION partition_name1 VALUES [("k1-lower1", "k2-lower1", "k3-lower1",...), ("k1-upper1", "k2-upper1", "k3-upper1", ...)),
    PARTITION partition_name2 VALUES [("k1-lower1-2", "k2-lower1-2", ...), ("k1-upper1-2", MAXVALUE, ))
)

3.MULTI RANGE :批量创建 *RANGE* 分区,定义分区的左闭右开区间,设定时间单位和步长,时间单位支持年、月、日、周和小时。

PARTITION BY RANGE(col)
(
   FROM ("2000-11-14") TO ("2021-11-14") INTERVAL 1 YEAR,
   FROM ("2021-11-14") TO ("2022-11-14") INTERVAL 1 MONTH,
   FROM ("2022-11-14") TO ("2023-01-03") INTERVAL 1 WEEK,
   FROM ("2023-01-03") TO ("2023-01-14") INTERVAL 1 DAY
)

distribution_desc

distribution_desc定义数据分桶方式。有两种方式分别为HASH分桶语法和RANDOM分桶语法。

Hash 分桶
语法: DISTRIBUTED BY HASH (k1[,k2 …]) [BUCKETS num]
说明: 使用指定的 key 列进行哈希分桶。

Random 分桶
语法: DISTRIBUTED BY RANDOM [BUCKETS num]
说明: 使用随机数进行分桶

rollup_list

rollup_list指的是建表的同时可以创建多个物化视图(ROLLUP),多个物化视图使用逗号隔开,语法如下:

ROLLUP (rollup_definition[, rollup_definition, ...])

以上语法中rollup_definition是定义多个物化视图,语法如下:

rollup_name (col1[, col2, ...]) [DUPLICATE KEY(col1[, col2, ...])] [PROPERTIES("key" = "value")]

示例:

ROLLUP (
r1 (k1, k3, v1, v2),
r2 (k1, v1)
)

示例:

CREATE TABLE IF NOT EXISTS my_database.my_table
(
    id INT NOT NULL,
    name VARCHAR(100),
    created_at DATE,
    PRIMARY KEY (id)
)
ENGINE=OLAP
COMMENT 'This table stores user data.'
PARTITION BY RANGE (created_at) (
    PARTITION p2023 VALUES LESS THAN ('2024-01-01'),
    PARTITION p2024 VALUES LESS THAN ('2025-01-01')
)
DISTRIBUTED BY HASH(id) BUCKETS 10
PROPERTIES ('replication_allocation' = 'tag.location.default: 3');
CREATE TABLE `rec_data` (
    `Id` VARCHAR(255) NOT NULL,
    `TagId` VARCHAR(255) NOT NULL,
    `RealTime` DATETIME(3) NOT NULL,
    `RealValue` VARCHAR(255) NULL,
    `CreateTime` DATETIME NOT NULL
)
ENGINE=OLAP
DUPLICATE KEY(`Id`, `TagId`, `RealTime`)
AUTO PARTITION BY RANGE (date_trunc(`RealTime`, 'day'))
()
DISTRIBUTED BY HASH(`Id`) BUCKETS AUTO
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"min_load_replica_num" = "-1",
"is_being_synced" = "false",
"storage_medium"= "hdd",
"storage_format" = "V2",
"inverted_index_storage_format" = "V1",
"light_schema_change" = "true",
"disable_auto_compaction" = "false",
"enable_single_replica_compaction" = "false",
"group_commit_interval_ms" = "9000",
"group_commit_data_bytes" = "134217728"
);

字段含义
Id: 字符串类型,最大长度 255,不能为空。用作标识符。
TagId: 字符串类型,最大长度 255,不能为空。用于标识标签。
RealTime: 带有 3 位小数的日期时间类型,不能为空。表示真实时间。
RealValue: 字符串类型,最大长度 255,可以为 null。表示实时值。
CreateTime: 日期时间类型,不能为空。表示创建时间。

引擎和主键定义

ENGINE=OLAP
DUPLICATE KEY(`Id`, `TagId`, `RealTime`)

ENGINE=OLAP: 使用 OLAP 引擎,适合处理大规模的数据分析和复杂查询。

DUPLICATE KEY(Id, TagId, RealTime): 定义了一个重复键(主键),表示这三列的组合在表中必须是唯一的。这意味着可以有相同的 Id 和 TagId,但对于同一时间的 RealTime 记录,必须是唯一的。

自动分区设置

AUTO PARTITION BY RANGE (date_trunc(`RealTime`, 'day'))
()

AUTO PARTITION BY RANGE: 使用范围分区,基于 RealTime 字段进行分区。date_trunc(RealTime, ‘day’) 将 RealTime 截断到天级别,从而按天分区。这种方法可以有效地管理数据,因为它允许系统在查询时自动识别和优化数据访问。

(): 这里没有定义具体的分区规则,表示系统将自动管理分区的创建。

数据分布

DISTRIBUTED BY HASH(`Id`) BUCKETS AUTO

DISTRIBUTED BY HASH(Id): 使用 Id 字段进行哈希分布,确保数据在不同的节点之间均匀分布。

BUCKETS AUTO: 系统会自动决定分布桶的数量,通常根据数据量和负载进行调整,以达到最佳性能。

表的属性配置

replication_allocation = "tag.location.default: 1": 指定副本的分配策略,表示在默认位置放置一个副本。

min_load_replica_num = "-1": 最小负载副本数设为 -1,通常表示没有具体要求。

is_being_synced = "false": 表示当前表没有正在进行同步。

storage_medium= "hdd": 存储介质选择为硬盘(HDD),这通常适合大规模的数据存储。

storage_format = "V2": 使用 V2 存储格式,通常代表更高的存储效率和性能。

inverted_index_storage_format = "V1": 反向索引存储格式为 V1,可能影响到搜索效率。

light_schema_change = "true": 启用轻量级模式更改,允许对表结构进行非破坏性更改,避免全表重建。

disable_auto_compaction = "false": 启用自动压缩,以节省存储空间并提高查询效率。

enable_single_replica_compaction = "false": 禁用单副本压缩,意味着即便是单个副本的数据也不会进行压缩。

group_commit_interval_ms = "9000": 设置组提交的时间间隔为 9000 毫秒,影响写入性能和效率。

group_commit_data_bytes = "134217728": 设置组提交的数据字节数为 134217728 字节(即 128 MB),同样影响写入性能。
CREATE TABLE `rec_queueData` (
    `Id` VARCHAR(255),
		`CreateTime` DATETIME,
		`QueueName` VARCHAR(256),
    `DataId` BIGINT,
    `Data` VARCHAR(255),
    `IsDatatrue` BOOLEAN,
    `Tagid` VARCHAR(255),
    `Dtime` DATETIME(3),
    `ExeStatus` BOOLEAN,
    `ExeMsg` VARCHAR(255),
    `ExeIp` VARCHAR(255),
    `PubStatus` BOOLEAN,
    `PubMsg` VARCHAR(255),
    `PubTime` DATETIME,
    `ExeTime` DATETIME,
    `IsDeleted` BOOLEAN
)
ENGINE=OLAP
UNIQUE KEY(`Id`, `CreateTime`,`QueueName`)
PARTITION BY RANGE(`CreateTime`)()
DISTRIBUTED BY HASH(`Id`) BUCKETS AUTO
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"is_being_synced" = "false",
"dynamic_partition.enable" = "true",
"dynamic_partition.time_unit" = "DAY",
"dynamic_partition.time_zone" = "Asia/Shanghai",
"dynamic_partition.start" = "-6",
"dynamic_partition.end" = "1",
"dynamic_partition.prefix" = "p_",
"dynamic_partition.replication_allocation" = "tag.location.default: 1",
"dynamic_partition.buckets" = "10",
"dynamic_partition.create_history_partition" = "true",
"dynamic_partition.history_partition_num" = "-1",
"dynamic_partition.hot_partition_num" = "0",
"dynamic_partition.reserved_history_periods" = "NULL",
"dynamic_partition.storage_policy" = "",
"storage_format" = "V2",
"light_schema_change" = "true",
"disable_auto_compaction" = "false",
"enable_single_replica_compaction" = "false"
);

字段说明
Id (VARCHAR(255)): 记录的唯一标识符,字符串类型。通常用于区分不同的记录。
CreateTime (DATETIME): 记录创建的时间,格式为日期和时间。
QueueName (VARCHAR(256)): 队列的名称,用于标识数据所属的队列。
DataId (BIGINT): 数据的标识符,通常用于关联其他表中的记录。
Data (VARCHAR(255)): 存储的数据内容,可以是任意字符串。
IsDatatrue (BOOLEAN): 布尔值,指示数据是否有效(true)或无效(false)。
Tagid (VARCHAR(255)): 标签标识符,用于进一步分类或标识数据。
Dtime (DATETIME(3)): 数据时间,精确到毫秒,用于记录数据的时间戳。
ExeStatus (BOOLEAN): 执行状态,指示操作是否成功(true)或失败(false)。
ExeMsg (VARCHAR(255)): 执行消息,提供关于执行状态的详细信息。
ExeIp (VARCHAR(255)): 执行的 IP 地址,通常用于记录操作来源。
PubStatus (BOOLEAN): 发布状态,指示数据是否已被发布(true)或未发布(false)。
PubMsg (VARCHAR(255)): 发布消息,提供关于发布状态的详细信息。
PubTime (DATETIME): 数据发布的时间。
ExeTime (DATETIME): 执行操作的时间。
IsDeleted (BOOLEAN): 删除标志,指示记录是否已被删除(true 表示已删除,false 表示未删除)。

索引与约束
UNIQUE KEY: 在 (Id, CreateTime, QueueName) 上建立唯一索引,确保这三列的组合在表中是唯一的,防止重复记录。
分区和分布设置

PARTITION BY RANGE(CreateTime)(): 使用 CreateTime 字段进行范围分区(目前未定义具体分区策略)。

DISTRIBUTED BY HASH(Id) BUCKETS AUTO: 通过 Id 字段进行哈希分布,系统将自动管理分区桶的数量。

表的属性
ENGINE=OLAP: 指定使用 OLAP 引擎,适合大规模分析查询。
PROPERTIES: 设置了一系列属性,控制表的行为和性能,包括:
动态分区: 启用动态分区功能,允许根据时间自动创建和管理分区。
副本分配: 控制副本的分配,确保数据的高可用性。
存储格式: 指定使用 V2 格式,可能涉及到存储性能优化。
轻量级模式更改: 允许轻量级的模式变化,以支持后续的修改。

分区相关配置
dynamic_partition.enable = "true": 启用动态分区功能,允许系统根据时间自动创建和管理分区。

dynamic_partition.time_unit = "DAY": 指定动态分区的单位是按天分区。

dynamic_partition.time_zone = "Asia/Shanghai": 指定动态分区使用的时区为上海时间。

dynamic_partition.start = "-6": 表示分区从当前时间的前 6 天开始。

dynamic_partition.end = "1": 表示分区的结束时间为当前时间的后 1 天。

dynamic_partition.prefix = "p_": 指定分区名称的前缀为 p_,分区的名称会以 p_ 开头,例如 p_20231018。

dynamic_partition.replication_allocation = "tag.location.default: 1": 配置分区的副本分配。这里表示将数据副本放在默认位置的 1 个副本上。

dynamic_partition.buckets = "10": 指定分区桶的数量为 10。

dynamic_partition.create_history_partition = "true": 启用历史分区的创建。

dynamic_partition.history_partition_num = "-1": 表示没有历史分区限制,系统会自动管理历史分区。

dynamic_partition.hot_partition_num = "0": 指定热分区的数量为 0,这意味着所有分区都为冷数据分区。

dynamic_partition.reserved_history_periods = "NULL": 没有限制保留的历史分区数。

存储和压缩设置
storage_format = "V2": 使用 V2 存储格式,V2 格式通常意味着更高的存储效率和更快的读写速度。

disable_auto_compaction = "false": 禁用自动压缩。压缩可以节省存储空间,且提升查询速度。

enable_single_replica_compaction = "false": 禁用单副本压缩,这意味着即便是单副本的数据也不会进行压缩。

其他设置
light_schema_change = "true": 启用轻量级模式更改。意味着在进行模式(例如表结构)更改时,不需要全表重建,系统会自动调整。

is_being_synced = "false": 指定表是否正在同步,当前设置为不进行同步。

replication_allocation = "tag.location.default: 1": 继续设置副本分配策略,将副本放置在默认标签位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值