一年1T的数据容量,数据库设计
每小时都有数据导入,
所以最小查询颗粒是按小时,
当然也有日报,周报,月报,甚至年报生成,
主要是保证每小时的查询速度,之后依次考虑其它时间跨度的查询
请教大家有什么好的意见、想法,思路,都可以,不吝赐教了!

解决方案 »

  1.   

    1. 单小时查询比较多,如果是连续的,那是8到9,或者18到20
    2.每小时有1G多的数据量
    3.每小时数据量差距不大
    ===============================================
    我理解如下:
    1、有日区间查询,不多
    2、这个数据我觉得不怎么准确,原因是每小时数据差距不大,那么一年就有8T数据。和你最初给的不一致。
    我假设
    1、每小时产生数据1G,在线保留1年,每年有8T数据。
    2、每小时数据没有更新,或者更新很少
    3、每条记录大小约2k,每小时50W,每天1200W
    4、对每小时数局查询很多,且有其他条件
    5、假设每次数据汇总数后,数据均匀较少,比如小时数据有1000,汇总为天后变100,汇总月后变10
    ================================================
    结构如下
    1、小时数据
        每个月建立一个小时数据表data_hour_01,按照日期和时间分区,分区字段选为to_char(sysdate,'ddhh24'). 
        每小时把新加载的数据按照天统一要求进行统计,放在Data_Day_01 (该表按照日分区)
    2、每天统计
       Data_day_sum (按照月份分区),每天凌晨1点把昨天数据从Data_Day_01 汇总到Data_day_sum
    3、每月统计
       Data_month_sum ,每月最后一天从Data_day_sum汇总产生。====================================
    对联机程序的要求,
    1、查询程序要根据查询时间选择合适的表,并且根据分区字段传入合适的分区值。
    2、小时表、小时汇总表要支持并行 
    对批量汇总程序
    1、要根据时间将数据放在正确的分区。
    2、各级汇总有机制,方便异常数据分析
    3、支持断点,避免错误后完全重跑。====================
    最后,实际中各级汇总表是否要分区,看你的数据量,和查询响应时间。
    我是按照你打算联机查询小时数据、汇总数据分析的。