海量数据如何分库分表

                           海量数据如何分库分表

    一般我们的分库策略有时间,类型,频率,下面来一一说明怎么分库:

(1)按时间分

    按时间分的好处有很多。第一,可以做数据老化,保留热点查询数据,将比较老旧的数据删除或者持久化到磁带等存储介质;第二,数据查询一般是查询热点数据,这样需要搜索的数据量少了很多;第三,在做数据同步的时候效率更高,同样是因为搜索的数据量少了很多。但同时也有一些弊端,第一,无法提前建好库或者表,需要代码自动创建,这就需要考虑建表库或者表的可靠性(一般情况下,应该能够保证);第二,很多数据库不能很好的支持多库(表)查询,比如hbase,需要我们自己编写分库(表)查询逻辑;第三,由于分库(表)之后,无法知道一个用户(或者设备)是否上报过数据,如果需要查询这个用户(或者设备)的最后状态,需要其他方式弥补(比如视图,快照)。

(2)按数据类别分

    大多数情况下,不同的数据类别其数据结构是不同的,当然nosql数据库可以存非结构化的数据,但使用起来比较麻烦,所以按数据类别分也是常用的方式。第一,区分数据类别,可以最大程度的结构化,方便使用;第二,业务上多数也会按数据类别进行使用,方便过滤,也减少了单库(表)的数据量。但是按数据类别分还是避免不了超级大库(表)的问题,所以一般还是要结合按时间分。

(3)按数据上报频率分

    数据上报频率不同,其数据类别一般也不同,所以按数据上报频率分跟按数据类别分差不太多,而且有可能相同的数据类别在不同场景上报频率不同,如果按频率分会对数据使用造成困扰。

    综上所述,对于海量数据来说,按时间加数据类别结合的方式分库(表)最为合适,当然具体情况具体分析,选择自己合适的分库(表)规则。

你可能感兴趣的:(海量数据如何分库分表)