一种面向单机的海量小记录高效存储管理方法
【技术领域】
[0001] 本发明涉及一种在单一计算机上高效存储海量小记录的存储管理方法,属于信息 存储相关技术领域。
【背景技术】
[0002] 随着互联网技术的发展,尤其是大数据时代的来临,信息化社会的诸多领域产生 了海量的数据,并且呈爆炸式增长。海量存储的需求面临严峻考验,这使得数据存储管理技 术在信息系统中所处地位也越来越重要。
[0003] 在很多应用系统中,经常需要在单机环境下管理大规模的日志记录。比较典型的 场景是安全审计记录。这种场景具有如下特点:
[0004] 1)这种记录的单条记录通常比较小。比如在信息安全中的审计日志记录,平均每 条记录仅有几百个字节;
[0005] 2)数量巨大。通常单机需要管理的日志数量达到几十亿条甚至更多,存储容量达 到TB级甚至更大;
[0006] 3)效率要求高。对入库效率要求非常高,达到每秒钟上万条条甚至更多的记录。 而这种环境下的计算机处理能力通常还比较弱。
[0007] 4)数据操作简单。一般为数据顺序入库,需要支持支持随机读取。不需要支持中 间插入操作,记录更新频率较低,不需要支持事务。
[0008] 在这种环境下,使用传统关系型数据库系统无论是在数据存储规模,还是入库效 率等方面都不能满足要求。而直接存储于文件系统又将导致大量磁盘碎片的产生。所以有 必要开发一种单机环境下面向海量小记录的高效存储管理技术。
[0009] 在现有的NoSQL的研宄中,对于海量数据的存储采用多机分布式的分片管理技 术,不适合本发明所针对的单机环境。
【发明内容】
[0010] 本发明的主要目的在于针对现有存储方法无法满足单机环境中海量小记录存储 管理的需求的问题,提出一种面向单机的海量小记录高效存储管理方法,使得能够在单一 计算机上高效的接收并存储大规模的小记录。
[0011] 为达到上述目的,本发明是通过以下技术方案实现的:
[0012] -种面向单机的海量小记录高效存储管理方法,该方法至少包括如下几项内容:
[0013] A.数据接收及缓存:接收小记录数据,为避免频繁I/O请求以及造成磁盘碎片,先 将记录存储在内存缓冲区中;
[0014] B.自动分块:所述内存缓冲区无法容纳新记录时,将所述内存缓冲区中的数据写 入到磁盘存储器中,并清空所述内存缓冲区以写入新的所述接收的新记录。为防止单个文 件太大影响I/O性能,限制每个数据文件的大小阈值。如果当前分块文件大小超过所述阈 值,自动新建分块文件,并将新数据将写入到新分块文件中;
[0015] C.树状目录生成:为防止当个目录下文件太多影响I/O性能,限制每个文件夹下 面的文件总数,以简化的树管理算法实现文件夹和分块文件的树状组织;
[0016] D.记录标识:采用特殊标识直接记录每个记录的物理地址,方便记录的访问。
[0017] 优选的:
[0018] 所述内存缓冲区的大小可配置。
[0019] 所述块文件动态生成过程包括以下步骤:
[0020] 步骤1.如果没有当前分块文件cFile,由树状目录生成算法获取当前工作目录 cPath,在cPath中生成分块文件,将该块文件作为当前块文件cFile,结束;
[0021] 步骤2.如果cFile剩余空间足以写入所述内存缓冲区的数据,结束;
[0022] 步骤3.如果当前目录cPath中块文件总数没有超过预定阈值,则在当前目录中生 成分块文件,并将该块文件作为当前工作块文件cFile,结束;
[0023] 步骤4.由树的树状目录生成算法生成新的存储目录,将新的存储目录作为当前 目录cPath,在cPath中生成块文件,并将该块文件作为当前块文件cFile。
[0024] 所述树状目录结构可以采用B-树、B+树或AVL树结构;树状目录结构的阶数,单 个文件夹下的文件夹的数量、块文件的数量和大小均是可配置的。
[0025] 所述的树状目录生成算法可以采用简化的B-树、B+树或AVL树生成算法。简化 的算法充分利用数据顺序插入的特征,避免树的旋转操作。
[0026] 所述每一条记录被添加一个标识,所述标识由分块文件编号以及块内偏移组成。 根据所述的分块文件标识可以定位到分块文件路径,根据所述块内偏移可以定位到记录 在块文件内部的起始位置。从而由所述记录标识可以直接定位记录的物理地址,方便记录 的随机访问。
[0027] 有益效果
[0028] 本发明提供的方法具有如下优势:
[0029] 1)更高的性能。本发明提出了一种基于单机实现海量小记录的存储管理方法。利 用操作系统的文件目录结构实现自动生长的树结构,在此树结构上实现动态的数据存储和 维护,可以达到恒定的高写入速度,同时降低存储对硬件性能的要求。
[0030]2)更容易管理海量数据。通过自动分片和自动的目录管理,可以很方便的实现数 据的备份、删除等管理。
[0031] 3)更好的处理复杂数据类型的能力。本发明可以根据用户应用领域的不同,以实 际需要为导向定制每条记录的字段,从而增强了本发明处理复杂数据类型的能力。
【附图说明】
[0032] 图1是本发明实施例的树型存储结构示意图;
[0033] 图2是本发明实施例的工作流程示意图;
[0034] 图3是本发明实施例的数据缓冲区域示意图;
[0035] 图4是本发明实施例的数据缓存流程图;
[0036] 图5是本发明实施例的块文件生成流程图;
[0037] 图6是本发明实施例的B-树树状目录生成示意图;
[0038] 图7是本发明实施例的B+树树状目录生成示意图。
【具体实施方式】
[0039] 下面详细描述中以实例的方式给出了许多具体细节,以确保对本发明技术方法的 透彻理解。但是,对于知道本领域基本常识的人,能够理解没有这些具体细节,本发明的实 施例也能实现。另外,没有详细描述众所周知的方法、过程、部件和电路,以避免本发明的实 现变得不清楚。
[0040] 本发明的基本思想是:将小记录首先写入内存缓冲区,当内存缓冲区满时将缓冲 区内容写入到块文件中;块文件被分散到自动生成的树状文件目录结构中。
[0041] 如图2所示,本发明具体工作流程如下:
[0042] 1、接收用户提交的新记录;
[0043] 2、生成记录标识,采用特殊标识直接记录每个记录的物理地址,方便记录的访 问;