首先说一下,这个功能其实也不算是很少见,但是也没那么常见。
有的时候涉及到的数据量比较大,我们会用一个很时髦的词“分表”来实现。但是其实更多时候这个表是按照时间来“分”的,所以我这里是一种不那么动态,但是也实现了分表的方式实现的。
先说一下大概的情况:我们这里是硬件设备数据的存储,每个设备开机的情况下30s推送一次数据。简单算一下,如果100个设备同时开机,一个月的记录数就是:
每分钟2条 * 60分钟 * 24小时 *100台机器 * 31天
一个月八百九十万条数据
所以说这个按照时间分表确实是有必要的。甚至说我这里按照月分只是一个根据具体情况定下来的一个行为,如果有必要按照天分也ok啊,当然了,不管是按照月,还是天,甚至星期我这个方法都是可以的.下面说下具体的做法。
首先我这里简单说下我用的是spring boot+mybatis (plus)框架,所以很多实现也是基于这两个框架的实现。还有我这里只是提供一个思路,具体的实现不建议和我学,容易被骂。
创建表
既然要按照月分表,起码每个月的表是要有的吧,但是一口气创建几十个未来月份的表也太扯了,所以这里是用定时任务创建表实现的。
这个定时任务不难,创建表也不难,但是刚刚说的不要和我学确实真的, 真的我用了一种非常偷懒的方式,我在mybatis的注解里直接写了sql语句