1.需求及场景概述
现有系统中因历史数据量过大,产生了将历史数据进行按月存储的要求,系统和数据库交互使用的是sqlalchemy,假设系统的原来的历史记录表(record)如下:
为了将历史数据按月分表存储,我们需要以此表为基础按月创建对应的月表来进行分表存储,同时又要使用orm的功能。面对这样的需求我们很自然的会想到创建如下模型
class Recode_202405(Base):
__tablename__ = 'record_202405'
id = Column(INT(11), primary_key=True)
name = Column(String(100, 'utf8mb4_unicode_ci'))
这样当然可以,但是我们不可能每月手动去创建这个模型,然后重启自己的服务,这明显有问题, 那如何解决呢,下面就介绍一种在这种场景下基于sqlalchemy实现的分表存储方案。
首先,我们对我们应用场景及需求进行一下描述:
1.我们有一张基础表,这个表作为我们创建月表的模板。
2.当有新数据需要入库时,我们将数据按月存储到当前月份的月表中,如果当月表不存在系统自动创建。
3.支持使用OMR方便数据存储及查询。
2.实现方案
既然要支持使用ORM ,我们势必要获取月表的mo