数据管理方法和数据管理系统的制作方法

文档序号:6443080阅读:174来源:国知局
专利名称:数据管理方法和数据管理系统的制作方法
技术领域
本发明涉及数据处理技术领域,特别涉及数据管理方法和数据管理系统。
背景技术
伴随信息技术和市场的发展,数据库的使用越来越被人们所熟知。数据库、内存管理等应用也越来越广泛,目前主流的数据库方案采用数据表结合内存的方式存储及管理数据。在访问数据库时,现将数据库中的数据读取到内存中,然后再从内存中获取访问结果。然而,随着数据量的爆发式增长,现有数据库方案的弊端逐渐显现,例如,在数据表单表记录量为4000万,并发访问数量超过400时,数据库性能就会出现比较明显下降,达到10秒以上的单条处理时间,数据访问效率较低;并且,2000万条的数据所需的内存存储空间就会大于2G,对内存的存储量要求过高,且由于将这些数据载入内存的耗时较长,导致服务器启动过慢,不能满足实际生产环境需求。

发明内容
本发明提供了一种数据管理方法和数据管理系统,以解决现有数据访问效率较低以及对内存要求过高、服务器启动过慢的问题。为达到上述目的,本发明实施例采用了如下技术方案:本发明实施例提供了一种数据管理方法,所述方法包括:创建存储数据的本地数据文件;根据所述本地数据文件生成本地索引文件,所述本地索引文件包括每条数据在本地数据文件中位置信息;在接收到访问请求时,根据访问请求从本地索引文件中获取所访问数据的位置信息;根据所述位置信息在本地数据文件中访问相应的数据。本发明实施例还提供了一种数据管理系统,所述系统包括本地文件数据库和数据库访问装置,所述本地文件数据库,创建存储数据的本地数据文件,根据所述本地数据文件生成本地索引文件,所述本地索引文件包括每条数据在本地数据文件中位置信息;所述数据库访问装置,在接收到访问请求时,根据访问请求从本地索引文件中获取所访问数据的位置信息,以及,根据所述位置信息在本地数据文件中访问相应的数据。本发明实施例的有益效果是:本发明实施例采用本地文件的形式存储数据和数据的索引,由于主要数据采用文件形式存储实现,在进行数据访问时,直接访问本地文件,所需耗用的服务器内存很小,几乎不占用内存,从而最大限度地降低了内存消耗,提高了服务器的启动速度;且数据不会因为服务器的重启或故障发生丢失,保证了数据的安全。并且,本方案能够支持大并发量的访问,实现准确快速的数据访问。


图1为本发明实施例一提供的一种数据管理方法流程示意图;图2为本发明实施例二提供的数据读取方法流程示意图;图3为本发明实施例二提供的数据插入方法流程示意图;图4为本发明实施例二提供的数据修改方法流程示意图;图5为本发明实施例二提供的数据删除方法流程示意图;图6为本发明实施例三提供的一种数据管理系统结构示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。参见图1,为本发明实施例一提供的一种数据管理方法,所述方法包括:11:创建存储数据的本地数据文件。本地数据文件中存储数据的关键字和数据本身,数据关键字是数据在系统中唯一性的标识信息,其具体数值和实现方式可以根据需要进行选取,例如,所选取的关键字可以为一个字符串,例如表示为TEST:13699229851,其中TEST符号指示其后的字符串为关键字;所选取的关键字也可以为一个整数,例如,表示为PID:6,其中,PID符号指示其后的整数为关键字。12:根据所述本地数据文件生成本地索引文件,所述本地索引文件包括每条数据在数据文件中位置信息。进一步的,本实施例按照二叉树结构生成本地索引文件,以进一步的加快数据访问的速度。二叉树结构的一个节点中包括一条数据的关键字和该条数据在数据文件中相对于数据起始位置的偏移量,该偏移量即为上述位置信息。二叉树结构是每个节点最多有两个子树的有序树结构。二叉树的每个节点至多只有二棵子树(不存在度大于2的节点),二叉树的子树有左右之分,通常被分别称作左子树(left subtree)和右子树(right subtree)。左右子树的次序不能颠倒。由于左右子树的这种有序性,在二叉树结构中查找数据时,每个节点只会按照左子树和右子树中一个方向的路径进行查找,能够大大提高数据查找的效率。通过上述步骤11和12,生成了本地数据文件和本地索引文件,从而创建了 一个本地文件数据库。其中,“本地”是相对于网络中的服务器一侧而言,本地文件数据库可以在本地终端的硬盘上实现,在访问本地文件数据库时,直接访问本地磁盘,而不需将数据库中的数据读入服务器的内存中,从而减少数据操作过程中耗用内存的大小,提高访问速度,加快网络服务器的开启速度,满足实际的要求。在数据访问过程中,可以通过调用并打开本地数据文件和索引文件确认本地文件数据库是否已经存在,当能够成功打开本地数据文件和索引文件时,确认本地文件数据库存在,执行后续的访问操作,当文件打开失败时,确认本地文件数据库不存在,执行上述步骤11和12。 13:在接收到访问请求时,根据访问请求从本地索弓I文件中获取所访问数据的位置信息。访问请求中携带所需访问数据的关键字,根据访问请求中携带的关键字,在本地索引文件的二叉树结构中搜索得到所访问数据的偏移量。将访问请求中的关键字与各二叉树节点中的关键字进行比较,当相同时,确认该二叉树节点存储了所需的偏移量(如表示为M),并将该偏移量提取出来。现有方案在进行信息查找时,通常利用哈希算法进行数据定位,然而,采用哈希算法时需要预估并保留所需占用的全部存储空间,信息冗余度较大(达到25 %以上),极大浪费了存储资源,针对这一缺点,本方案采用了二叉树结构的本地索引文件,达到了提高资源利用率和访问速度的效果。实验证明,本方案对于具有8000万条数据的文件,单条数据检索时间不超过30微秒,与直接在内存查询数据的时间相当,并且,远大于现有数据库的100毫秒的检索时间。14:根据所述位置信息在本地数据文件中访问相应的数据。例如,当利用数据指针在本地数据文件中定位数据时,将数据指针移至当前位置,该当前位置为相对于本地数据文件的数据起始位置偏移M的位置。进一步的,在执行上述步骤13之前,所述方法还包括:检查本地索引文件是否为最新的版本,若是,从该本地索引文件中获取所述位置信息,若否,加载最新版本的本地索引文件,从新加载的本地索引文件中获取所述位置信息。在执行上述步骤14之前,所述方法还包括:检查本地数据文件是否为最新的版本,若是,在该本地数据文件中访问相应的数据,若否,加载最新版本的本地数据文件,在新加载的本地数据文件中访问相应的数据。由上所述,本发明实施例采用本地文件的形式存储数据和数据的索引,由于主要数据采用文件形式存储实现,在进行数据访问时,直接访问本地文件,所需耗用的服务器内存很小,几乎不占用内存,从而最大限度地降低了内存消耗,提高了服务器的启动速度;且数据不会因为服务器的重启或故障发生丢失,保证了数据的安全。并且,本方案能够支持大并发量的访问,实现准确快速的数据访问。本发明实施例二分别以数据读取、数据插入、数据修改和数据删除的场景为例,具体说明本方案提供的数据管理方法。数据读取参见图2,数据读取操作包括如下处理:21:检查本地索引文件(或简称索引文件)是否为最新的版本。例如,本方案中设置时间戳信息,所述时间戳信息记录本地索引文件和本地数据文件的修改或变动的时间;检查本地索弓I文件的修改时间是否与时间戳信息中本地索弓I文件最后一次修改时间相一致,若是,确认本地索引文件为最新的版本,执行步骤22,若否,确认本地索引文件不是最新的版本,执行步骤23。22:检查本地数据文件(或简称数据文件)是否为最新的版本。检查本地数据文件的修改时间是否与时间戳信息中本地数据文件最后一次修改时间相一致,若是,确认本地数据文件为最新的版本,执行步骤24,若否,确认本地数据文件不是最新的版本,执行步骤23。23:重新加载最新文件。
根据时间戳信息,重新加载最新的索引文件和/或数据文件。当新加载的文件能够成功打开,即能够正常使用时,执行步骤24。24:读取偏移量。从最新版本的索引文件中读取出所访问数据的位置信息,即偏移量。25:偏移文件指针。在数据文件中利用文件指针对数据进行定位,将文件指针移动至上述偏移量所指示的位置。26:获得数据。读取当前位置下指针所指示的数据,获取所需的数据。数据插入本方案采用将新增数据插入数据文件尾,参见图3,包括如下处理:31:偏移数据文件指针至文件尾(新插入数据始终位于文件尾)。该文件尾部即为本地数据文件中最后一条已有数据的下一条数据位置。32:获得数据文件指针当前位置的偏移字节数。上述偏移字节数为文件尾部位置相对于文件首部的偏移量,即为新增数据的位置信息。33:将偏移字节数写入索引文件中。将新增数据的偏移量和关键字添加至索引文件的二叉树结构中。34:判断写入是否成功。判断对索引文件的写入是否成功,例如,在执行完写入操作后,索引文件返回响应信息,根据接收到的索引文件响应信息,确认将所述偏移量成功写入本地索引文件中后,继续执行数据插入操作,否则,再次写入索引文件直至写入成功,或者,返回插入错误码,插入失败,结束插入操作。索引文件写入成功后,将新增的一条数据写入本地数据文件的文件尾部。进一步的,本方案中在将新增的一条数据写入本地数据文件的文件尾部之前,所述方法还包括:根据本地数据文件中已存储数据的关键字和新增数据的关键字,确认本地数据文件中不存在与新增的数据相同的已有数据,若新增的数据与已有数据相同,返回插入失败。通过这种操作保证了不再重复增加相同的数据,节省了文件资源。进一步的,可以通过时间戳信息将数据插入至最新版本的索引文件和数据文件中。数据修改41:检查索引文件是否为最新的版本。例如,本方案中设置时间戳信息,所述时间戳信息记录本地索引文件和本地数据文件的修改或变动的时间;检查本地索引文件的修改时间是否与时间戳信息中本地索引文件最后一次修改时间相一致,若是,确认本地索引文件为最新的版本,执行步骤42,若否,确认本地索引文件不是最新的版本,执行步骤43。42:检查数据文件是否为最新的版本。检查本地数据文件的修改时间是否与时间戳信息中本地数据文件最后一次修改时间相一致,若是,确认本地数据文件为最新的版本,执行步骤44,若否,确认本地数据文件不是最新的版本,执行步骤43。43:重新加载最新文件。根据时间戳信息,重新加载最新的索引文件和/或数据文件。当新加载的文件能够成功打开,即能够正常使用时,执行步骤44。44:读取偏移量。从最新版本的索引文件中读取出所需修改数据的位置信息,即偏移量。45:偏移文件指针。在最新版本的数据文件中利用文件指针对数据进行定位,将文件指针移动至上述偏移量所指示的位置。46:修改数据。修改当前位置下指针所指示的数据。数据删除51:检查索引文件是否为最新的版本。例如,本方案中设置时间戳信息,所述时间戳信息记录本地索引文件和本地数据文件的修改或变动的时间;检查本地索弓I文件的修改时间是否与时间戳信息中本地索弓I文件最后一次修改时间相一致,若是,确认本地索引文件为最新的版本,执行步骤52,若否,确认本地索引文件不是最新的版本,执行步骤53。52:检查数据文件是否为最新的版本。检查本地数据文件的修改时间是否与时间戳信息中本地数据文件最后一次修改时间相一致,若是,确认本地数据文件为最新的版本,执行步骤54,若否,确认本地数据文件不是最新的版本,执行步骤53。53:重新加载最新文件。根据时间戳信息,重新加载最新的索引文件和/或数据文件。当新加载的文件能够成功打开,即能够正常使用时,执行步骤54。54:读取偏移量。从最新版本的索引文件中读取出所需删除数据的位置信息,即偏移量。在读取到偏移量之后,在索引文件中删除所读取的偏移量,从而使数据访问者无法获取到数据的位置信息。也可以进一步地在索引文件中删除数据的关键字。55:偏移文件指针。在最新的数据文件中利用文件指针对数据进行定位,将文件指针移动至上述偏移量所指示的位置,确定出待删除数据在本地数据文件中的位置。56:修改数据。在数据文件中,删除当前位置下文件指针所指示的数据。进一步的,也可以同时删除数据文件中所存储的待删除数据的关键字。考虑到数据删除的情景在实际中的需求较小,本方案中在数据文件中删除数据后,保留本地数据文件中相应位置处的存储空间,从而避免了再次重新生成索引文件,降低数据库的维护复杂度。
本发明实施例三提供了 一种数据管理系统,参见图6,所述系统包括本地文件数据库61和数据库访问装置62,所述本地文件数据库61,创建存储数据的本地数据文件,根据所述本地数据文件生成本地索引文件,所述本地索引文件包括每条数据在数据文件中位置信息;所述数据库访问装置62,在接收到访问请求时,根据访问请求从本地索引文件中获取所访问数据的位置信息,以及,根据所述位置信息在本地数据文件中访问相应的数据。进一步的,所述本地文件数据库61具体按照二叉树结构生成本地索引文件,所述二叉树结构中一个节点包括一条数据的关键字和该条数据在数据文件中相对于数据起始位置的偏移量,该偏移量为所述位置信息;所述数据库访问装置62具体根据访问请求中携带的关键字,在本地索引文件的二叉树结构中搜索得到所访问数据的偏移量。进一步的,所述数据库访问装置62在根据访问请求从本地索引文件中获取所访问数据的位置信息之前,检查本地索引文件是否为最新的版本,若是,从该本地索引文件中获取所述位置信息,若否,加载最新版本的本地索引文件,从新加载的本地索引文件中获取所述位置信息;所述数据库访问装置62在根据所述位置信息在本地数据文件中访问相应的数据之前,检查本地数据文件是否为最新的版本,若是,在该本地数据文件中访问相应的数据,若否,加载最新版本的本地数据文件,在新加载的本地数据文件中访问相应的数据。进一步的,本实施例的系统中设置有时间戳信息,所述时间戳信息记录本地索引文件和本地数据文件的修改时间;所述数据库访问装置62检查本地索引文件是否为最新的版本包括:检查本地索引文件的修改时间是否与时间戳信息中本地索引文件最后一次修改时间相一致,若是,确认本地索引文件为最新的版本,若否,确认本地索引文件不是最新的版本;所述数据库访问装置62检查本地数据文件是否为最新的版本包括:检查本地数据文件的修改时间是否与时间戳信息中本地数据文件最后一次修改时间相一致,若是,确认本地数据文件为最新的版本,若否,确认本地数据文件不是最新的版本。进一步的,所述数据库访问装置62还通过如下方式在本地文件数据库61中增加一条新的数据:获取本地数据文件中最后一条已有数据的下一条数据的偏移量;将所述偏移量写入本地索引文件中;将新增的一条数据写入本地数据文件的文件尾部。进一步的,所述数据库访问装置62还通过如下方式在本地文件数据库61对一条数据进行修改:根据待修改数据的关键字从本地索引文件中获取待修改数据的偏移量;根据所获取到的偏移量,确定待修改数据在本地数据文件中的位置;对所确定位置处的待修改数据进行修改。进一步的,所述数据库访问装置62还通过如下方式在本地文件数据库61中删除一条数据:
根据待删除数据的关键字从本地索引文件中获取待删除数据的偏移量后,删除本地索引文件中待删除数据的偏移量;根据所获取到的偏移量,确定待删除数据在本地数据文件中的位置,删除所确定位置处的待删除数据,并保留本地数据文件中所确定位置处的存储空间。本发明系统实施例中各装置的具体工作方式可以参见本发明实施例的方法实施例。本发明实施例采用本地文件的形式存储数据和数据的索引,由于主要数据采用文件形式存储实现,在进行数据访问时,直接访问本地文件,所需耗用的服务器内存很小,几乎不占用内存,从而最大限度地降低了内存消耗,提高了服务器的启动速度;且数据不会因为服务器的重启或故障发生丢失,保证了数据的安全。并且,本方案能够支持大并发量的访问,实现准确快速的数据访问。由上所述,本发明实施例至少能够达到如下技术效果:I)主要数据采用文件形式本地存储,数据访问时无需先将文件加载至服务器,从而几乎不需占用服务器的内存;2)数据访问速度快,对于具有8000万条数据的文件,单条数据检索时间不超过30微秒,与直接在内存查询数据的时间相当,并且,远大于现有数据库的100毫秒的检索时间;3)因为采用的是本地文件,所以服务启动不需要重新装载内存,服务启动时间大大加快,并且服务器重启或故障时,数据文件不会有任何丢失;4)提供了 一套比较完善的数据文件生成工具,所以不需要二次开发就可以构造一个本地文件数据库,开发速度快;5)在使用和开发时,检索数据只需要打开、查询、关闭等三部动作,大大节省了开发的时间和人员成本。本方案能够广泛应用在短信上下行管理系统中,例如上行分拣、过滤黑名单用户、过滤VIP用户、用户区域信息检索等等。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包括在本发明的保护范围内。
权利要求
1.一种数据管理方法,其特征在于,所述方法包括: 创建存储数据的本地数据文件; 根据所述本地数据文件生成本地索引文件,所述本地索引文件包括每条数据在本地数据文件中位置信息; 在接收到访问请求时,根据访问请求从本地索引文件中获取所访问数据的位置信息; 根据所述位置信息在本地数据文件中访问相应的数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述本地数据文件生成本地索引文件包括: 按照二叉树结构生成本地索引文件,所述二叉树结构中一个节点包括一条数据的关键字和该条数据在本地数据文件中相对于数据起始位置的偏移量,该偏移量为所述位置信息; 所述根据访问请求从本地索引文件中获取所访问数据的位置信息包括: 根据访问请求中携带的关键字,在本地索引文件的二叉树结构中搜索得到所访问数据的偏移量。
3.根据权利要求1所述的方法,其特征在于, 在根据访问请求从本地索引文件中获取所访问数据的位置信息之前,所述方法还包括: 检查本地索引文件是否为最新的版本,若是,从该本地索引文件中获取所述位置信息,若否,加载最新版本的本 地索引文件,从新加载的本地索引文件中获取所述位置信息; 在根据所述位置信息在本地数据文件中访问相应的数据之前,所述方法还包括: 检查本地数据文件是否为最新的版本,若是,在该本地数据文件中访问相应的数据,若否,加载最新版本的本地数据文件,在新加载的本地数据文件中访问相应的数据。
4.根据权利要求3所述的方法,其特征在于,设置时间戳信息,所述时间戳信息记录本地索引文件和本地数据文件的修改时间; 所述检查本地索引文件是否为最新的版本包括: 检查本地索引文件的修改时间是否与时间戳信息中本地索引文件最后一次修改时间相一致,若是,确认本地索引文件为最新的版本,若否,确认本地索引文件不是最新的版本; 所述检查本地数据文件是否为最新的版本包括: 检查本地数据文件的修改时间是否与时间戳信息中本地数据文件最后一次修改时间相一致,若是,确认本地数据文件为最新的版本,若否,确认本地数据文件不是最新的版本。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括通过如下方式增加一条新的数据: 获取本地数据文件中最后一条已有数据的下一条数据的偏移量; 将所述偏移量和新增数据的关键字写入本地索引文件中; 将新增的数据写入本地数据文件的文件尾部。
6.根据权利要求5所述的方法,其特征在于, 在将新增的数据写入本地数据文件的文件尾部之前,所述方法还包括: 根据接收到的索引文件响应信息,确认将所述偏移量和关键字成功写入本地索引文件中;以及, 根据本地数据文件中已存储数据的关键字和新增数据的关键字,确认本地数据文件中不存在与新增的数据相同的已有数据。
7.根据权利要求3所述的方法,其特征在于,所述方法还包括通过如下方式对一条数据进行修改: 根据待修改数据的关键字从本地索引文件中获取待修改数据的偏移量; 根据所获取到的偏移量,确定待修改数据在本地数据文件中的位置; 对所确定位置处的待修改数据进行修改。
8.根据权利要求3所述的方法,其特征在于,所述方法还包括通过如下方式删除一条数据: 根据待删除数据的关键字从本地索引文件中获取待删除数据的偏移量之后,删除本地索引文件中待删除数据的偏移量; 根据所获取到的偏移量,确定待删除数据在本地数据文件中的位置,删除所确定位置处的待删除数据,并保留本地数据文件中所确定位置处的存储空间。
9.一种数据管理系统,其特征在于,所述系统包括本地文件数据库和数据库访问装置, 所述本地文件数据库,创建存储数据的本地数据文件,根据所述本地数据文件生成本地索引文件,所述本地索引文件包括每条数据在本地数据文件中位置信息; 所述数据库访问装置,在接收到访问请求时,根据访问请求从本地索引文件中获取所访问数据的位置信息,以及,根据所 述位置信息在本地数据文件中访问相应的数据。
10.根据权利要求9所述的系统,其特征在于, 所述本地文件数据库具体按照二叉树结构生成本地索引文件,所述二叉树结构中一个节点包括一条数据的关键字和该条数据在数据文件中相对于数据起始位置的偏移量,该偏移量为所述位置信息; 所述数据库访问装置具体根据访问请求中携带的关键字,在本地索引文件的二叉树结构中搜索得到所访问数据的偏移量。
全文摘要
本发明公开了一种数据管理方法和数据管理系统,能够最大限度地降低数据访问时服务器的内存消耗,提高服务器的启动速度,实现准确快速的数据访问。本发明实施例提供的一种数据管理方法包括创建存储数据的本地数据文件;根据本地数据文件生成本地索引文件,该本地索引文件包括每条数据在数据文件中位置信息;在接收到访问请求时,根据访问请求从本地索引文件中获取所访问数据的位置信息;根据所述位置信息在本地数据文件中访问相应的数据。
文档编号G06F17/30GK103177026SQ20111043955
公开日2013年6月26日 申请日期2011年12月23日 优先权日2011年12月23日
发明者张孝岐 申请人:北京新媒传信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1