暂无图片
请教关于建表与分区的问题
我来答
分享
暂无图片 匿名用户
请教关于建表与分区的问题

【使用环境】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_timedev_id),
INDEX idx_dev_id (dev_id)
);
image

1、是否需要分表?单表的数据量多少合适?
2、如何分区和子分区?单分区的数据量多少合适?
3、对应的 OceanBase 场景下的建表语句是什么?
4、总计需要大概多少节点和存储空间?【使用环境】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_timedev_id),
INDEX idx_dev_id (dev_id)
);
image

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

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
O
OceanBase社区传送门

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

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏