一切源于一次失眠
2019年10月份,当时一直在考虑公司的软件产品中的实时库部分目前存在的问题。目前公司的产品能够达到10万点秒级记录的水品,瓶颈在历史记录的存储使用的是第三方关系型数据库,在大量历史数据需要存储时,记录存储跟不上;即使后来优化也就能达到20万的水平,离主流单机100万的水平差距较大,距离业界翘楚PI据说达到了千万级别更是一个天上,一个地下。能否设计一种合理的文件存储结构,能达到快速存储以及快速检索就成了要考虑的内容。快速存储的问题不大,目前固态硬盘写入速度那是刚刚的,即使机械硬盘写入速度也能够胜任百万点历史记录存储。在长时间大量数据写入后,快速检索是问题的关键。检索的时间不会随着数据量的增大有明显的衰减,是文件结构设计是否合理的关键。 一次失眠,在辗转反侧之际,考虑下快速检索的问题。突然想到,如果我们想要在全中国14亿怎么找到一个人和在北京2000人口中找到一个人所需的步骤几乎差不多,这里的关键是,每个人都一个按照行政进行编码的地址。如果对一个点数据的所有历史数据进行编码,检索时按照这个编码进行检索,可以非常快的检索到数据。在自动化系统中,大部分数据都是时序型数据(即数据随着时间变化着),结合操作系统存储数据是以文件为单位的,同时在文件中不同的位置使用指针来表示;所以时间,文件,指针就是我们的编码参考依据。
一切源于执着
把整体构想和公司反馈后,没有被采用,原因是和目前的方案相比,变动较大。但是内心里不想放弃,这偶尔的灵感,怕时间长了,一切都忘了。所以下定决心,把想法变成现实,也就是现在的Mars 实时物联数据库 。 从构想到发布第一个版本,我打算用时1年的时间,同时将其整体开源。