CN116775571B - 一种数据管理系统 - Google Patents
一种数据管理系统 Download PDFInfo
- Publication number
- CN116775571B CN116775571B CN202311066845.6A CN202311066845A CN116775571B CN 116775571 B CN116775571 B CN 116775571B CN 202311066845 A CN202311066845 A CN 202311066845A CN 116775571 B CN116775571 B CN 116775571B
- Authority
- CN
- China
- Prior art keywords
- file
- data
- module
- read
- searching
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000013523 data management Methods 0.000 title claims abstract description 12
- 230000015654 memory Effects 0.000 claims abstract description 31
- 238000000034 method Methods 0.000 claims description 38
- 238000013507 mapping Methods 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 9
- 230000006870 function Effects 0.000 claims description 8
- 238000003491 array Methods 0.000 claims description 6
- 238000010926 purge Methods 0.000 claims description 5
- 238000013500 data storage Methods 0.000 claims description 2
- 239000012634 fragment Substances 0.000 abstract description 3
- 230000003993 interaction Effects 0.000 abstract description 3
- 238000004590 computer program Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008094 contradictory effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000005291 magnetic effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Library & Information Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出了一种数据管理系统,所述系统包括输入模块、初始化模块、文件操作模块、读取模块、写入模块、查找模块、清空模块;所述系统用于借助硬盘以文件形式实现对有序数据的存储、读取、查找,代替内存作为程序运行中的数据交互中心;采用的固定文件大小、连续多份文件存储数据,有利于硬盘读写速率的最大化利用,有效规避碎片空间不连续使用。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种数据管理系统。
背景技术
在一般软件运行过程中,采用内存作为程序运行时的数据中心。但在采集软件中,常遇到大量频繁的数据输入,对于内存容量要求更大,从而提升了采集软件的应用成本。
例如,在采集控制软件中,每台下位机通过网线连接交换机,交换机通过网线连接软件所在电脑。每台下位机以100hz的频率,每通道向上发送110字节长的内容。若存在两台下位机,每台下位机共有32个通道,则采集软件每秒接收到110*64*100=704000字节长的内容,约687.5KB,而每110字节长内容,又可以解析出166字节长的采集数据内容。由此可见,在采集软件运行中内存将面大量的数据输入,极大提升了硬件成本。
为了解决上述问题,当前普遍借助虚拟内存和内存映射技术用硬盘代替部分内存,降低硬件成本。然而由于硬盘的读写性能远低于内存,导致无法完全使用硬盘代替内存。
发明内容
针对上述存在的拘束局限性,本发明提出了一种数据管理系统,基于虚拟内存和内存映射技术,完全采用硬盘代替内存,作为程序运行时的数据中心。
为实现上述目的,本发明采用了以下技术方案:
一种数据管理系统;所述系统用于借助硬盘以文件形式实现对有序数据的存储、读取、查找,代替内存作为程序运行中的数据交互中心。所述有序数据是指时间上连续的数据流。
所述系统包括输入模块、初始化模块、文件操作模块、读取模块、写入模块、查找模块、清空模块。
所述输入模块用于获得输入的本地存储路径;所述初始化模块用于实现系统的初始化操作;所述文件操作模块用于打开、关闭文件;所述读取模块用于从文件中读取数据;所述写入模块用于将数据写入文件内;所述查找模块用于根据目标查找数据;所述清空模块用于清空数据。
所述系统按照以下方式实现上述数据管理功能:
(1)输入模块获得本地存储路径;初始化模块进行系统初始化操作;
(2)在进行数据读取、写入时,均需要借由文件操作模块进行文件操作;
(3)若进行数据读取,则由读取模块从文件中循环读取文件中的数据;
(4)若进行数据写入,则由写入模块将数据循环写入文件;
(5)若进行数据查找,则由查找模块查找对应文件,通过二分法查找具体位置,通过顺序查找法符合条件的位置,并返回结果;
(5)若需要清空数据,则由清空模块循环清空所有文件,删除文件信息。
本发明与现有技术相对比,本发明具有以下优点:
(1)基于虚拟内存、内存映射技术,完全采用硬盘代替内存,作为程序运行时的数据中心,解决了采集软件中遇到的容量局限问题,降低了硬件成本;
(2)通过定位文件位置和文件中数据位置,精准打开相应硬盘位置,做到资源效果一对一,提升读写效率;
(3)支持多线程操作,进一步提升读写查的效率,同时保证运行安全;
(4)采用的固定文件大小、连续多份文件存储数据,有利于硬盘读写速率的最大化利用,有效规避碎片空间不连续使用。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
图1为本发明实施例提供的一种数据管理系统的结构图。
图2为本发明实施例提供的一种打开文件的步骤图。
图3为本发明实施例提供的一种数据读取操作的步骤图。
图4为本发明实施例提供的一种数据写入操作的步骤图。
具体实施方式
以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。为了进一步了解本发明,下面结合最佳实施例对本发明作进一步的详细说明。
本发明的发明点是提供一种数据管理系统;所述系统用于借助硬盘以文件形式实现对有序数据的存储、读取、查找,代替内存作为程序运行中的数据交互中心。所述有序数据是指时间上连续的数据流。
参考图1,所述系统包括输入模块、初始化模块、文件操作模块、读取模块、写入模块、查找模块、清空模块。
所述输入模块用于获得输入的本地存储路径;所述初始化模块用于实现系统的初始化操作;所述文件操作模块用于打开、关闭文件;所述读取模块用于从文件中读取数据;所述写入模块用于将数据写入文件内;所述查找模块用于根据目标查找数据;所述清空模块用于清空数据。
所述系统按照以下方式实现上述数据管理功能:
(1)输入模块获得本地存储路径;初始化模块进行系统初始化操作;
(2)在进行数据读取、写入时,均需要借由文件操作模块进行文件操作;
(3)若进行数据读取,则由读取模块从文件中循环读取文件中的数据;
(4)若进行数据写入,则由写入模块将数据循环写入文件;
(5)若进行数据查找,则由查找模块查找对应文件,通过二分法查找具体位置,通过顺序查找法符合条件的位置,并返回结果;
(5)若需要清空数据,则由清空模块循环清空所有文件,删除文件信息。
进一步地,由写入模块将数据写入文件时,文件大小限制为128MB,即单文件固定大小为128M。
需要说明的是,单文件固定大小设置为128M,既可以避免因文件过小导致频繁创建,也可以避免文件过大导致空间浪费。同时,单文件固定大小设置为128M时,内存映射效率高,这样一方面有利于硬盘读写速率的最大化利用,一方面能有效规避碎片空间不连续使用。
还需说明的是,数据的读取、写入、查找的操作可以多线程方式同时进行(即开启三个线程分别进行数据读取、数据写入、数据查找),在多线程下进行读取、写入操作时,因为是对不同文件的不同区域操作和加锁,故能保证不在同一硬盘区域即可不互斥操作,既解决了运行安全问题,又解决了效率问题。
所述初始化模块用于实现系统的初始化操作,所述初始化操作包括以下步骤:
步骤11、创建uuid(通用唯一识别码);
步骤12、在所述本地存储路径下创建子文件夹,并将子文件夹路径作为实际数据存储路径;所述子文件夹的名称为步骤11创建的uuid;
步骤13、初始化读写锁;
步骤14、数组总数置为0。
需要说明的是,数据总数为所述系统的基本参数,数据总数采用系统级原子保存,用以保证多线程的安全;在读取模块、写入模块及查找模块进行相应操作时,获得的是数据总数的副本值,保证系统功能的统一性。
所述文件操作模块用于打开、关闭文件;打开文件时将获得数据地址。
需要说明的是,在本系统中,数据以文件的形式进行存储和操作,数据读取、写入均需要进行文件操作。
参考图2,当需要打开文件时,所述文件操作模块按照以下步骤进行打开文件操作,获得数据地址:
步骤211、获得文件路径、操作类型、数据结构大小、数据开始位置、数据个数;
所述操作类型包括只读及读写;
步骤212、获取系统内存粒度;
步骤213、根据数据开始位置、数据结构大小、内存粒度、数据个数计算字节偏移与字节长度;
所述字节偏移的计算方式为:
其中offset为字节偏移,start为数据开始位置,datasize为数据结构大小,granulesize为内存粒度;
所述字节长度的计算方式为:
其中blength为字节长度,start为数据开始位置,datasize为数据结构大小,offset为字节偏移,datanum为数据个数;
步骤214、按照所述操作类型打开文件,若文件不存在则创建文件;
步骤215、按照操作类型配置文件读写锁,具体包括:
若操作类型为只读,则文件读写锁进行读保护;若操作类型为读写,则文件读写锁进行写保护;
文件读写锁操作的数据位置与数据长度分别为offset和blength,其中offset为字节偏移,blength为字节长度;
步骤216、按照操作类型创建文件的文件映射对象;
步骤217、将文件映射对象中的目标内容映射到进程内,得到基址;所述基址为打开文件后获得的虚拟内存地址;
步骤218、根据基址计算数据地址,并输出所述数据地址;
所述数据地址的计算方法为:
其中address为数据地址,base为基址,start为数据开始位置,datasize为数据结构大小,offset为字节偏移。
进一步地,步骤214中,打开文件通过操作系统CreateFile接口实现;
步骤215中,配置文件读写锁通过操作系统LockFile接口实现;
步骤216中,创建文件映射对象通过通过操作系统CreateFileMapping接口实现;
步骤217中,将目标内容映射到进程内通过操作系统MapViewOfFile接口实现。
当需要关闭文件时,所述文件操作模块按照以下步骤进行关闭文件操作:
步骤221、取消进程内基址的映射;
步骤222、关闭整个文件的文件映射对象;
步骤223、解除打开过程中的文件读写锁的保护;
步骤224、关闭文件。
所述读取模块用于根据第一输入地址、第一输入位置及第一输入个数,从文件中读取数据并获得读取成功数据个数;
所述第一输入地址为自定义数据类型内存地址;所述第一输入位置为数据开始位置;所述第一输入个数为需要读取的数据个数。
进一步地,步骤221中,取消进程内基址的映射通过操作系统UnmapViewOfFile接口实现;
步骤222中,关闭文件映射对象通过操作系统CloseHandle接口实现;
步骤223中,解除文件读写锁保护通过操作系统UnlockFile接口实现;
步骤224中,关闭文件通过操作系统CloseHandle接口实现。
参考图3,所述读取模块按照以下步骤进行数据读取操作:
步骤31、获得第一输入地址、第一输入位置及第一输入个数;
步骤32、打开清空锁的读保护;
步骤33、获得此时的数据总数,并获得第一目标数据结构大小及第一单文件最大数据数;
所述第一目标数据结构大小通过sizeof函数获得;
所述第一单文件最大数据数的计算方式为:单文件固定大小处以第一目标数据结构大小;
步骤34、进行读取初始化,循环读取数据;
步骤35、关闭清空锁的读保护,返回第一输出个数。
具体地,步骤34中,所述读取初始化包括以下步骤:
步骤3411、计算第一文件编号的初始值,计算方法为:
其中filenum10为第一文件编号的初始值,inputadd1为第一输入地址,filemax1为第一单文件最大数据数;
步骤3412、计算文件整体位置的初始值,计算方法为:
其中fileadd 0为文件整体位置的初始值,filenum10为第一文件编号的初始值,filemax1为第一单文件最大数据数;
步骤3413、第一输出个数设置为0。
步骤34中,所述循环读取数据包括以下步骤:
步骤3421、判断当前的文件整体位置与第一输入位置的关系以及当前的第一输出个数与第一输入个数的大小关系;
若文件整体位置不小于第一输入位置或第一输出个数不小于第一输入个数,则执行步骤35;否则执行步骤3422;
步骤3422、调用文件操作模块,打开当前第一文件编号对应的文件;
步骤3423、若成功打开文件,则取出第一目标数据量的数据,第一文件编号更新为当前第一文件编号加1,文件整体位置设置为当前文件整体位置加上第一单文件最大数据数,返回步骤3421;若未成功打开文件,则执行步骤35;
所述第一目标数据量的计算方式为:
其中,dsize1为第一目标数据量,filecount1为第一文件数据数,inputcount1为第一输入个数,outputcount1为第一输出个数。
具体地,步骤3422中,打开当前第一文件编号对应的文件是指:
按照步骤211-218打开文件,其中执行步骤211时获取的相应参数分别为:操作类型为只读;数据结构大小为步骤33中得到的第一目标数据结构大小;数据开始位置为第一文件开始位置;数据个数为第一文件数据数。
所述第一文件开始位置按照如下方式计算:
其中,filestart1为第一文件开始位置,inputadd1为第一输入地址,fileadd为文件整体位置,filemax1为第一单文件最大数据数,%为求余运算。
所述第一文件数据数按照如下方式计算:
其中,filecount1为第一文件数据数,filemax1为第一单文件最大数据数,filestart1为第一文件开始位置,inputcount1为第一输入个数,outputcount1为第一输出个数,tnum为数据总数,fileadd为文件整体位置,min为取最小值操作。
所述写入模块用于根据第二输入地址及第二输入个数将数据写入文件内,并获得写入成功数据个数;
所述第二输入地址为自定义数据类型内存地址;所述第二输入个数为需要写入的数据个数。
参考图4,所述写入模块按照以下步骤进行数据写入操作:
步骤41、获得第二输入地址、第二输入个数;
步骤42、打开清空锁的读保护;
步骤43、获得此时的数据总数,获得第二目标数据结构大小及第二单文件最大数据数;第二目标数据结构大小及第二单文件最大数据数与第一目标数据结构大小及第一单文件最大数据数大获得方式一致;
步骤44、进行写入初始化,循环写入数据;
步骤45、将数据总数更新为当前的数据总数加第二输出个数;
步骤46、关闭清空锁的读保护,返回第二输出个数。
具体地,步骤44中,所述写入初始化包括:
计算第二文件编号的初始值,计算方法为:
其中filenum20为第二文件编号的初始值,inputadd2为第二输入地址,filemax2为第二单文件最大数据数。
步骤44中,所述循环写入数据包括以下步骤:
步骤4421、判断当前的第二输出个数与第二输入个数的大小关系;
若第二输出个数不小于第二输入个数,则执行步骤45;否则执行步骤4422;
步骤4422、计算文件剩余数据数,若所述文件剩余数据数小于零,则执行步骤45;否则执行步骤4423;
所述文件剩余数据数的计算方法如下:
其中remianfile为文件剩余数据数,filenum2为第二文件编号,filemax2为第二单文件最大数据数,tnum为数据总数,outputcount2为第二输出个数;
步骤4423、调用文件操作模块,打开当前第二文件编号对应的文件;
步骤4424、若成功打开文件,则写入第二目标数据量的数据;
步骤4425、打开文件信息数组锁的写保护,若此时第二文件开始位置为0,则更新内存中的文件信息数据;所述文件信息数据是以动态数组定义的成员变量;
文件信息数据的更新方式为:将当前打开文件的文件信息中的文件数据头和文件数据尾分别更新为本次循环写入的第一个数据和最后一个数据;
若此时第二文件开始位置不为0,则更新文件信息中的文件数据尾为本次循环写入的最后一个数据;
步骤4426、关闭文件信息数组锁的写保护,第二文件编号更新为当前第二文件编号加1,返回步骤4421。
具体地,步骤4423中,打开当前第二文件编号对应的文件是指:
按照步骤211-218打开文件,其中执行步骤211时获取的相应参数分别为:
操作类型为读写;数据结构大小为步骤43中计算得到的第二目标数据结构大小;数据开始位置为第二文件开始位置;数据个数为第二文件数据数。
所述第二文件开始位置的计算方式为:
其中,filestart2为第二文件开始位置,filemax2为第二单文件最大数据数,remianfile为文件剩余数据数。
所述第二文件数据数按照如下方式计算:
其中,filecount2为第二文件数据数,remianfile为文件剩余数据数,inputcount2为第二输入个数,outputcount2为第二输出个数,min为取最小值操作。
所述查找模块用于根据目标查找数据及比较类型在文件中查找相应数据,获得查询结果;所述比较类型为二分比较或顺序比较中的任意一种;所述查询结果由结果标识和目标数据位置组成;
所述查找模块按照以下步骤实现数据查找操作:
步骤51、获得目标查找数据及比较类型;
步骤52、打开清空锁的读保护;
步骤53、获得此时的数据总数,计算第三目标数据结构大小及第三单文件最大数据数;
步骤54、打开文件信息读写锁的读保护,遍历所有的文件信息数组,在文件数据头与文件数据尾组成的闭区间内查找目标查找数据的文件索引;关闭文件信息读写锁的读保护;
步骤55、若步骤54中查找到目标查找数据的文件索引,则打开对应的文件,利用二分法查找目标查找数据在文件中的具体位置,获得第一查找结果;否则将查找结果的结果标识设置为失败,结束查找;
步骤56、判断比较类型是否为二分比较,若比较类型为二分比较,则将结果标识设置为成功,并将第一查找结果作为目标数据位置输出,结束查找;若比较类型为顺序比较,则从第一查找结果对应位置开始按照顺序查找法查找目标查找数据,获得第二查找结果;
步骤57、判断比较类型是否为顺序比较,若比较类型为顺序比较,则将结果标识设置为成功,并将第二查找结果作为目标数据位置输出,结束查找;若比较类型不为顺序比较,则将结果标识设置为失败,结束查找;
步骤58、关闭清空锁的读保护。
所述清空模块用于清空所有数据,所述清空模块按照以下步骤实现清空操作:
步骤61、打开清空锁的写保护;
步骤62、循环清空实际存储路径下的所有文件、删除文件信息数据;
步骤63、数组总数置为0;
步骤64、关闭清空锁的写保护。
作为一种实施例,本发明所述方法可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用计算机或任何其他类似硬件设备来实现。
本发明所述的系统可以软件程序的形式实施,所述软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,所述软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。
另外,本发明所述方法的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本发明所述的系统一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本发明所述方法的程序指令,可被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。
作为一种实施例,本发明还提供一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述的多个实施例的方法和/或技术方案。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
最后,需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
另外,各个实施例之间的技术方案可以互相结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求保护的范围之内。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (9)
1.一种数据管理系统,其特征在于,
所述系统包括输入模块、初始化模块、文件操作模块、读取模块、写入模块、查找模块、清空模块;
所述系统按照以下方式实现数据管理功能:
(1)输入模块获得本地存储路径;初始化模块进行系统初始化操作;
(2)在进行数据读取、写入时,均需要借由文件操作模块进行文件操作;
(3)若进行数据读取,则由读取模块从文件中循环读取文件中的数据;
(4)若进行数据写入,则由写入模块将数据循环写入文件;
(5)若进行数据查找,则由查找模块查找对应文件,通过二分法查找具体位置,通过顺序查找法符合条件的位置,并返回结果;
(5)若需要清空数据,则由清空模块循环清空所有文件,删除文件信息;
其中,所述文件操作模块进行文件操作包括打开文件;
所述文件操作模块打开文件通过以下步骤实现:
步骤211、获得文件路径、操作类型、数据结构大小、数据开始位置、数据个数;
步骤212、获取系统内存粒度;
步骤213、根据数据开始位置、数据结构大小、内存粒度、数据个数计算字节偏移与字节长度;
步骤214、按照所述操作类型打开文件,若文件不存在则创建文件;
步骤215、按照操作类型配置文件读写锁,具体包括:
若操作类型为只读,则文件读写锁进行读保护;若操作类型为读写,则文件读写锁进行写保护;
文件读写锁操作的数据长度为字节偏移加字节长度;
步骤216、按照操作类型创建文件的文件映射对象;
步骤217、将文件映射对象中的目标内容映射到进程内,得到基址;
步骤218、根据基址计算数据地址,并输出所述数据地址;
所述数据地址的计算方法为:
address=base+start*datasize-offset
其中address为数据地址,base为基址,start为数据开始位置,datasize为数据结构大小,offset为字节偏移。
2.根据权利要求1所述的系统,其特征在于,
所述初始化模块用于实现系统的初始化操作,所述初始化操作包括以下步骤:
步骤11、创建uuid;
步骤12、在所述本地存储路径下创建子文件夹,并将子文件夹路径作为实际数据存储路径;
步骤13、初始化读写锁;
步骤14、数组总数置为0。
3.根据权利要求1所述的系统,其特征在于,
所述字节偏移的计算方式为:
;
其中offset为字节偏移,start为数据开始位置,datasize为数据结构大小,granulesize为内存粒度;
所述字节长度的计算方式为:
;
其中blength为字节长度,start为数据开始位置,datasize为数据结构大小,offset为字节偏移,datanum为数据个数。
4.根据权利要求1所述的系统,其特征在于,
所述读取模块按照以下步骤进行数据读取操作:
步骤31、获得第一输入地址、第一输入位置及第一输入个数;
步骤32、打开清空锁的读保护;
步骤33、获得此时的数据总数,并获得第一目标数据结构大小及第一单文件最大数据数;
步骤34、进行读取初始化,循环读取数据;
步骤35、关闭清空锁的读保护,返回第一输出个数。
5.根据权利要求4所述的系统,其特征在于,
步骤34中,所述循环读取数据包括以下步骤:
步骤3421、判断当前的文件整体位置与第一输入位置的关系以及当前的第一输出个数与第一输入个数的大小关系;
若文件整体位置不小于第一输入位置或第一输出个数不小于第一输入个数,则执行步骤35;否则执行步骤3422;
步骤3422、调用文件操作模块,打开当前第一文件编号对应的文件;
步骤3423、若成功打开文件,则取出第一目标数据量的数据,第一文件编号更新为当前第一文件编号加1,文件整体位置设置为当前文件整体位置加上第一单文件最大数据数,返回步骤3421;若未成功打开文件,则执行步骤35;
所述第一目标数据量的计算方式为:
;
其中,dsize1为第一目标数据量,filecount1为第一文件数据数,inputcount1为第一输入个数,outputcount1为第一输出个数。
6.根据权利要求1所述的系统,其特征在于,
所述写入模块按照以下步骤进行数据写入操作:
步骤41、获得第二输入地址、第二输入个数;
步骤42、打开清空锁的读保护;
步骤43、获得此时的数据总数,计算第二目标数据结构大小及第二单文件最大数据数;
步骤44、进行写入初始化,循环写入数据;
步骤45、将数据总数更新为当前的数据总数加第二输出个数;
步骤46、关闭清空锁的读保护,返回第二输出个数。
7.根据权利要求6所述的系统,其特征在于,
步骤44中,所述循环写入数据包括以下步骤:
步骤4421、判断当前的第二输出个数与第二输入个数的大小关系;
若第二输出个数不小于第二输入个数,则执行步骤45;否则执行步骤4422;
步骤4422、计算文件剩余数据数,若所述文件剩余数据数小于零,则执行步骤45;否则执行步骤4423;
步骤4423、调用文件操作模块,打开当前第二文件编号对应的文件;
步骤4424、若成功打开文件,则写入第二目标数据量的数据;
步骤4425、打开文件信息数组锁的写保护,若此时第二文件开始位置为0,则更新内存中的文件信息数据,文件信息数据的更新方式为:将当前打开文件的文件信息中的文件数据头和文件数据尾分别更新为本次循环写入的第一个数据和最后一个数据;
若此时第二文件开始位置不为0,则更新文件信息中的文件数据尾为本次循环写入的最后一个数据;
步骤4426、关闭文件信息数组锁的写保护,第二文件编号更新为当前第二文件编号加1,返回步骤4421。
8.根据权利要求1所述的系统,其特征在于,
所述查找模块按照以下步骤实现数据查找操作:
步骤51、获得目标查找数据及比较类型;
步骤52、打开清空锁的读保护;
步骤53、获得此时的数据总数,计算第三目标数据结构大小及第三单文件最大数据数;
步骤54、打开文件信息读写锁的读保护,遍历所有的文件信息数组,在文件数据头与文件数据尾组成的闭区间内查找目标查找数据的文件索引;关闭文件信息读写锁的读保护;
步骤55、若步骤54中查找到目标查找数据的文件索引,则打开对应的文件,利用二分法查找目标查找数据在文件中的具体位置,获得第一查找结果;否则将查找结果的结果标识设置为失败,结束查找;
步骤56、判断比较类型是否为二分比较,若比较类型为二分比较,则将结果标识设置为成功,并将第一查找结果作为目标数据位置输出,结束查找;若比较类型为顺序比较,则从第一查找结果对应位置开始按照顺序查找法查找目标查找数据,获得第二查找结果;
步骤57、判断比较类型是否为顺序比较,若比较类型为顺序比较,则将结果标识设置为成功,并将第二查找结果作为目标数据位置输出,结束查找;若比较类型不为顺序比较,则将结果标识设置为失败,结束查找;
步骤58、关闭清空锁的读保护。
9.根据权利要求1所述的系统,其特征在于,
所述清空模块用于清空所有数据,所述清空模块按照以下步骤实现清空操作:
步骤61、打开清空锁的写保护;
步骤62、循环清空实际存储路径下的所有文件、删除文件信息数据;
步骤63、数组总数置为0;
步骤64、关闭清空锁的写保护。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311066845.6A CN116775571B (zh) | 2023-08-23 | 2023-08-23 | 一种数据管理系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311066845.6A CN116775571B (zh) | 2023-08-23 | 2023-08-23 | 一种数据管理系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116775571A CN116775571A (zh) | 2023-09-19 |
CN116775571B true CN116775571B (zh) | 2023-11-07 |
Family
ID=87989849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311066845.6A Active CN116775571B (zh) | 2023-08-23 | 2023-08-23 | 一种数据管理系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116775571B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929935A (zh) * | 2012-09-25 | 2013-02-13 | 上海证券交易所 | 一种基于事务的大容量数据读写方法 |
CN110399227A (zh) * | 2018-08-24 | 2019-11-01 | 腾讯科技(深圳)有限公司 | 一种数据访问方法、装置和存储介质 |
CN110647514A (zh) * | 2019-08-23 | 2020-01-03 | 北京浪潮数据技术有限公司 | 一种元数据更新方法、装置及元数据服务器 |
CN113885809A (zh) * | 2021-12-07 | 2022-01-04 | 云和恩墨(北京)信息技术有限公司 | 数据管理系统及方法 |
CN114116795A (zh) * | 2021-11-01 | 2022-03-01 | 北京力控元通科技有限公司 | 一种数据存储和查询方法、装置、存储介质及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11442994B2 (en) * | 2018-03-27 | 2022-09-13 | Substrate Inc. | Unified data store and transaction system |
-
2023
- 2023-08-23 CN CN202311066845.6A patent/CN116775571B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929935A (zh) * | 2012-09-25 | 2013-02-13 | 上海证券交易所 | 一种基于事务的大容量数据读写方法 |
CN110399227A (zh) * | 2018-08-24 | 2019-11-01 | 腾讯科技(深圳)有限公司 | 一种数据访问方法、装置和存储介质 |
CN110647514A (zh) * | 2019-08-23 | 2020-01-03 | 北京浪潮数据技术有限公司 | 一种元数据更新方法、装置及元数据服务器 |
CN114116795A (zh) * | 2021-11-01 | 2022-03-01 | 北京力控元通科技有限公司 | 一种数据存储和查询方法、装置、存储介质及电子设备 |
CN113885809A (zh) * | 2021-12-07 | 2022-01-04 | 云和恩墨(北京)信息技术有限公司 | 数据管理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116775571A (zh) | 2023-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109254733B (zh) | 用于存储数据的方法、装置和系统 | |
EP3103025B1 (en) | Content based organization of file systems | |
US7680842B2 (en) | Systems and methods for a snapshot of data | |
US7953704B2 (en) | Systems and methods for a snapshot of data | |
US7680836B2 (en) | Systems and methods for a snapshot of data | |
US8356013B2 (en) | Systems and methods for a snapshot of data | |
CN110018998B (zh) | 一种文件管理方法、系统及电子设备和存储介质 | |
JP6598996B2 (ja) | データ準備のためのシグニチャベースのキャッシュ最適化 | |
WO2019091085A1 (zh) | 一种快照比对的方法和装置 | |
US11494334B2 (en) | Embedded reference counts for file clones | |
JP6598997B2 (ja) | データ準備のためのキャッシュ最適化 | |
CN115114232A (zh) | 一种历史版本对象列举方法、装置及其介质 | |
CN112306957A (zh) | 获取索引节点号的方法、装置、计算设备和存储介质 | |
CN114153394A (zh) | 一种数据存储管理方法、装置及设备 | |
CN116775571B (zh) | 一种数据管理系统 | |
CN111221478A (zh) | 数据写入、读取方法、装置、设备及机器可读存储介质 | |
US11803469B2 (en) | Storing data in a log-structured format in a two-tier storage system | |
CN115858471A (zh) | 业务数据变更记录方法、装置、计算机设备及介质 | |
US8775746B2 (en) | Information processing system and method | |
CN114185849A (zh) | 文件操作方法、文件操作系统、电子设备及存储介质 | |
US20220318294A1 (en) | Probabilistic indices for accessing authoring streams | |
CN112380174B (zh) | 含删除文件的xfs文件系统解析方法、终端设备及存储介质 | |
CN116795296B (zh) | 一种数据存储方法、存储设备及计算机可读存储介质 | |
CN117828134A (zh) | 一种树形元数据结构下对象语义的快速定位方法 | |
CN113535404A (zh) | 数据管控方法、系统、装置和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |