请教关于建表与分区的问题

【使用环境】32 vCPU 64GB

【使用版本】4.2.0_CE_BP1

【问题描述】

请教下各位老师,考虑如果是这样的一个场景:
1 亿的设备数,每个设备每天 96 条记录,存 1 年的数据,共 35040 亿条
使用场景为查询设备时间范围的数据,以及计算设备和时间范围的数据

参考 MySQL 建表语句:
DROP TABLE IF EXISTS dev_data;
CREATE TABLE dev_data (
data_time BIGINT,
dev_id VARCHAR(32),
data1 DECIMAL(25, 3),
data2 DECIMAL(25, 3),
data3 DECIMAL(25, 3),
data4 DECIMAL(25, 3),
data5 DECIMAL(25, 3),
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (data_time, dev_id),
INDEX idx_dev_id (dev_id)
);
image

1、是否需要分表?单表的数据量多少合适?
2、如何分区和子分区?单分区的数据量多少合适?
3、对应的 OceanBase 场景下的建表语句是什么?
4、总计需要大概多少节点和存储空间?

建议写一下示例 SQL 更好。
不需要分表,但是需要分区。分区可能使用二级分区。具体如何分区就看你的场景SQL定。

1)此类大表需要做分区表
2)数据量比较大,建议考虑做成二级分区,分区选取需要根据业务字段来,可以考虑按时间年、月、日分区,我们推荐单个分区100G数据量,不超过200G。
3)创建分区可以参考https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000034921
4)存储空间主要看副本数和磁盘大小的规划,看你字段比较简单,压缩比会高一点,具体还是需要和其他业务数据结合测试下,ob主推 3个zone 和5个zone场景,后期做纵向扩容满足存储和性能问题。
建议先实测下。