CN101639848B - 一种空间数据引擎及应用其管理空间数据的方法 - Google Patents
一种空间数据引擎及应用其管理空间数据的方法 Download PDFInfo
- Publication number
- CN101639848B CN101639848B CN2009100858045A CN200910085804A CN101639848B CN 101639848 B CN101639848 B CN 101639848B CN 2009100858045 A CN2009100858045 A CN 2009100858045A CN 200910085804 A CN200910085804 A CN 200910085804A CN 101639848 B CN101639848 B CN 101639848B
- Authority
- CN
- China
- Prior art keywords
- data
- file
- segment
- elongated
- block
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种空间数据引擎及应用其管理空间数据的方法,该空间数据引擎包括:文件存储管理模块,用于通过内存映射文件来完成:对物理文件中数据的加载或将数据写入物理文件中、分配内存映射文件的映射对象,物理文件的逻辑组织单元包括:数据页、数据组块、数据块、数据段、数据区和数据对象;数据缓冲管理模块,用于在对数据进行加载或将数据写入时,将数据以数据页为单位加载到缓存块中;日志管理模块,用于创建及管理日志文件,在日志文件中记录对应数据文件中数据的变更;数据访问接口模块,用于提供用以访问物理文件中数据的数据集、表及游标。利用上述技术方案,实现了基于内存映射文件的空间数据引擎,提高了数据的访问效率。
Description
技术领域
本发明涉及地理信息技术领域,特别是涉及一种空间数据引擎及应用其管理空间数据的方法。
背景技术
空间数据是用于表示空间物体的位置、形状、大小和分布特征等方面信息的数据,适用于描述二维、三维和多维分布的关于区域的现象。空间数据的特点是不仅包括物体本身的空间位置及状态信息,还包括表示物体的空间关系的信息。空间数据引擎提供存储、访问及检索空间数据的功能,是用户应用系统充分利用空间数据的关键。
在空间数据的生产中,需要一种适合数据编辑,具有恢复能力的空间数据存储载体。现有技术中,针对空间数据的访问存储问题,有以下两种解决方法:
(1)全内存访问方法:数据以文件方式存储,使用时将数据全部载入内存,访问在内存中完成;
(2)数据库访问方法:将数据存入数据库中,数据访问交给数据库引擎来完成,通过数据库,系统具备了海量数据和事务处理的能力。
而在实现本发明的过程中,发明人发现现有技术中至少存在如下问题:
上述方法(1)虽然读写操作简单、高效,但内存占用大;
上述方法(2)的数据访问逻辑复杂、效率低下,许多功能难以定制。
在空间数据生产中,数据一般按区域存储,数据规模相对内存偏大,生产作业时数据更新频繁;而且,由于空间数据绘制和数据作业批处理的要求,对数据访问效率及内存限制要求高,从而,需要提供一种适应空间数据生产特点的、效率高、且实现简单的空间数据引擎和空间数据存储访问方法。
发明内容
为了解决上述问题,本发明的目的是提供一种基于内存映射文件的空间数据引擎及应用其管理空间数据的方法,该空间数据引擎及方法具有很高的数据读写性能,能够适应空间数据生产的特点,且效率高、实现简单。
为了实现上述目的,本发明提供了一种空间数据引擎装置,包括文件存储管理模块、数据缓冲管理模块、日志管理模块和数据访问接口模块,其中:
文件存储管理模块,通过内存映射文件来完成对物理文件中数据的加载或将数据写入物理文件中、分配与所述物理文件相对应的磁盘空间、分配与所述物理文件相对应的内存映射文件的映射对象、及管理所述物理文件的空闲块列表,所述物理文件包括数据文件和日志文件,所述物理文件的逻辑组织单元包括:数据页、数据组块、数据块、数据段、数据区和数据对象;所述数据组块由多个连续的数据页组成;所述数据块由多个数据页组成,所述数据块的块头记录包含:数据块编号、数据段编号、数据对象编号、事务编号;所述数据段由定长数据块或定变长数据块组成,定长数据块中以行为单位存储了定长类型的数据和固定长度的变长数据描述信息,包括在变长块中的位置及字节大小,变长数据块中记录了变长的数据信息;所述数据区是数据段的集合,分为用户数据区和索引区,所述用户数据区记录了用户存储的数据,所述索引区记录用于定位所述用户数据区中数据段的信息;所述数据对象,由一对数据区和索引区构成;
数据缓冲管理模块,包括多个缓存块,用于在对所述物理文件中的数据进行加载或将数据写入物理文件时,将欲加载或欲写入的数据以数据页为单位加载到所述缓存块中;
日志管理模块,用于创建及管理与数据文件相对应的日志文件,在所述日志文件中记录所述对应数据文件中数据的变更;
数据访问接口模块,用于提供用以访问所述物理文件中数据的数据集、表及游标;所述数据集与所述物理文件相对应;每个数据集存储了多张表,表中的数据使用游标来访问,所述游标提供了对表中行的访问方法,游标中记录了它所指向行的信息。
另一方面,提供了一种利用本发明实施例的空间数据引擎装置管理空间数据的方法,其中,所述空间数据引擎中、在数据对象的索引区中记录用户数据区数据段编号到该数据段中数据块地址的映射对SIDX,所述空间数据引擎中、定长数据块中所有行的字节数目相同,所述方法包括:
读取数据文件中空间数据的步骤,所述读取步骤具体包括:
步骤a,根据游标指向的、当前欲读取的数据集中数据行的行号,确定所述数据行对应的数据段的编号;
步骤b,根据所述数据段的编号,从当前数据对象的索引区中获得所述数据段中数据块的地址信息;
步骤c,根据所述数据块的地址信息,将所述数据段加载到数据缓冲管理模块的缓存块中;
步骤d,从所述数据缓冲管理模块的缓存块中读取所述数据段中的数据;
其中,在开始一个新事务时,将游标当前的SIDX和行序号压入事务栈中,复制一个新的SIDX作为游标的当前SIDX,并递增事务编号。
上述技术方案中的一个技术方案具有如下技术效果:
基于本发明的新的数据逻辑组织结构的物理文件、以及通过本发明的文件存储管理模块、数据缓冲管理模块、日志管理模块和数据访问接口模块,本发明实施例的空间数据引擎可实现利用内存映射文件的方式进行空间数据的读写,从而可以获得很高的数据读写性能,适应了空间数据生产的特点,且效率高,实现简单。
附图说明
图1为本发明实施例的空间数据引擎的结构示意图;
图2为本发明实施例的管理空间数据的方法中,读取数据的流程示意图。
具体实施方式
为使本发明实施例要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
图1为本发明的实施例的空间数据引擎的结构示意图。如图1,本发明一实施例的空间数据引擎包括:文件存储管理模块101、数据缓冲管理模块102、日志管理模块103、数据访问接口模块104。
下面对各模块的功能进行较详细的说明。
文件存储管理模块,用于通过内存映射文件来完成:对物理文件中数据的加载或将数据写入物理文件中、分配与物理文件相对应的磁盘空间、分配与物理文件相对应的内存映射文件的映射对象、及管理物理文件的空闲块列表。本发明的实施例中,系统维护的物理文件包括:数据文件和日志文件,这两个文件的物理组织和格式相同。物理文件的逻辑组织单元按照从小到大分为:数据页、数据组块(CHUNK)、数据块、数据段、数据区和数据对象;其中,数据组块由多个连续的数据页组成;数据块由多个数据页组成;数据段由定长数据块或定变长数据块组成,定长数据块中以行为单位存储了定长类型的数据和固定长度的变长数据描述信息,包括在变长块中的位置及字节大小,变长数据块中记录了变长的数据信息,比如字符串,几何信息等;数据区是数据段的集合,分为用户数据区和索引区,用户数据区用于记录用户存储的数据,索引区记录用于定位用户数据区中数据段的信息;数据对象,由一对数据区和索引区构成;所述数据对象包括:表;
数据缓冲管理模块,包括多个缓存块,用于在对物理文件中的数据加载或将数据写入物理文件中时,将欲加载或欲写入的数据以数据页为单位加载到缓存块中;
日志管理模块,用于创建及管理与数据文件相对应的日志文件,在日志文件中记录对应数据文件中数据的变更;
数据访问接口模块,用于提供用以访问物理文件中数据的数据集、表及游标;数据集与物理文件相对应;数据集的每个数据集存储了一张或多张表,表中的数据使用游标来访问,游标提供了对表中行的访问方法,游标中记录了它所指向行的信息,如当前行序号、当前行缓冲和/或当前数据段的位置。
基于上述新定义的数据逻辑组织结构的物理文件、以及通过上述文件存储管理模块、数据缓冲管理模块、日志管理模块和数据访问接口模块,本发明实施例的空间数据引擎可实现利用内存映射文件的方式进行空间数据的读写,从而可以获得很高的数据读写性能,适应了空间数据生产的特点,且效率高,实现简单。
从层的角度来讲,本发明实施例的空间数据引擎按照功能从低到高分为4层:文件存储管理层、数据缓冲管理层、日志管理层、数据访问层。其中,文件存储管理层包括:文件存储管理模块和物理文件。数据缓冲管理层包括:数据缓冲管理模块。日志管理层包括:日志管理模块。数据访问层包括:数据访问接口模块。
示例性地,本发明的实施例中,对组成物理文件的上述各逻辑组织单元进行如下定义:
定义1,数据页PAGE是数据组织的最小单元;示例性,但不作为限制地,数据页由64KB空间组成;
定义2,数据CHUNK由若干个连续的数据页组成;
定义3,数据块BLOCK由若干个数据页组成;按存储的数据类型可分为定长数据块和变长数据块;数据块的块头记录中包含数据块编号、数据段编号、数据对象编号、事务编号等信息;
定义4,数据段SECTION为由定长数据块,或定变长数据块组成的逻辑单位;定长数据块中以行为单位存储了定长类型的数据和固定长度的、变长数据的描述信息,变长数据的描述信息包括:变长数据在变长数据块中的位置及变长数据包括的字节数目,变长数据块中记录了变长的数据信息;
定义5,数据区EXTENT是数据段的集合,分为用户数据区和索引区;用户数据区用于记录用户存储的数据,索引区记录的是用来定位用户数据区中数据段的信息;
定义6,数据对象由一对数据区和索引区构成,在数据集中用编号来唯一标识;表是一种数据对象。
现有技术的数据引擎实现多使用系统文件函数来读写数据,如SQLite,MySQL等,但该方法数据读写效率低。本发明实施例的空间数据引擎通过内存映射文件来获得较高的数据读写性能。为解决内存映射文件的文件大小在创建后不能扩展的问题,本发明的实施例提出了一种在文件映射的物理空间不够时,采取动态分配数据块的方法来解决该问题。该动态分配数据块的方法可由文件存储管理模块中的数据块分配模块来实现。下面对该动态分配数据块的方法进行详细描述。
数据块的分配ALLOC_BLOCK,用于在物理存储文件中分配一个可用的空闲块。具体包括如下步骤:
在向物理文件写入空间数据时,如果当前分配的映射对象的物理空间不够存储欲写入的空间数据,则通知与该物理文件对应的数据集中已经打开的游标记录当前所加载的物理文件的地址、卸载已经加载的数据段,这些游标在接到 通知后,进行相应的记录操作和卸载操作;
根据欲写入的空间数据所需的物理空间,重新分配内存映射文件的映射对象,并根据重新分配的映射对象更新物理文件尾;
通知所有相关的游标将在上述步骤中卸载的数据段重新加载到缓存块中。
示例性地,在用户修改数据文件时,如利用SET_XXX,MOVE_TO_INSERT_ROW修改数据文件时,系统在日志文件中分配块;及,用户将修改提交到数据文件中时,对数据文件分配数据块。上述SET_XXX,MOVE_TO_INSERT_ROW的功能参见下文的详细描述。
现有技术的数据引擎多采用B-TREE索引组织表来实现对数据的访问,其优点是对于检索行占全部数据量的比例很小且索引列是高基数列时性能突出,但它对数据更新敏感,一般来说10%-15%的数据修改就需要重建索引。而空间数据模型中表间相互引用关系复杂,针对主键的随机检索普遍,比如道路网的拓扑挂接关系。由于B-TREE对一个随机的主键每次都需从根节点开始来定位行,随机检索性能不甚理想,因此,B-TREE不适合数据生产条件下的数据组织。本发明实施例的空间数据引擎使用改进的堆组织表来解决上述问题,主要包括:
(1)空间系统引擎中、表的用户数据区中的数据段使用双向链表建立连接;
(2)在索引区中记录用户数据区数据段编号(SECTID)到该数据段中各类型数据块地址的映射对,简称为SIDX;
(3)定长数据块中所有行的字节大小相同。
对于行中的变长数据,定长数据块中存储一个定长的信息头即固定长度的、变长数据的描述信息,数据本身存储在变长数据块中。因此一个定长块可以容纳的行数固定,固定块内的行紧跟上一行存储,这样根据行序号就可以定位到SECTID,进而得到数据块在文件中的位置信息。
针对基于主键的检索可以建立另外一张索引表来定位行。索引和实际数据存储分开后,在内存中维护索引表,可以提高更新效率。
本发明实施例的空间数据引擎中,缓冲管理模块包含多个缓存块,用来实现数据页交换机制。上层系统需要的数据通过数据缓冲管理获得。数据缓冲管 理模块包括如下模块中的一个或多个:
数据段加载模块,用于根据数据段编号,加载定长数据块到所述数据缓冲管理模块的缓存块中;
数据组块加载模块,用于根据数据段及数据页编号,加载变长数据占用的数据页到所述数据缓冲管理模块的缓存块中。
具体的,数据缓冲管理模块的主要功能如下:
(1)数据段的加载LOAD_SECTION
功能:根据数据段编号加载数据到缓存管理模块中。
本系统只将需要的数据以数据页为单位加载到缓存中。当需要的数据还没加载时,才进行数据读写。缓存块根据访问即读取的需要被不同数据页重复使用。上述方法可以减少内存的占用和磁盘读写。为控制内存占用,此函数只加载定长数据块。在用户使用游标访问数据时,使用该数据段的加载方法来加载数据。
示例性地,在用户使用游标访问数据时加载数据段。
(2)数据CHUNK的加载LOAD_CHUNK
功能:根据数据段及数据页编号加载数据到缓存管理模块中。
由于数据变更,一段时间后变长数据块可能比较大。为了减少内存的占用,系统只加载变长数据占用的数据页而不是整个变长数据块。示例性地,当用户在修改或读取变长数据时,根据变长数据在变长数据区中的位置和长度,计算该变长数据对应的数据组块,并加载。
示例性地,当用户在修改或读取变长数据时,系统根据变长数据在变长数据区的位置和长度,计算其对应的数据组块即对应占用的连续数据页,并加载。
本发明实施例的空间数据引擎中,日志管理模块用于完成数据变更的记录,为事务及数据恢复提供基础。为保证数据恢复的正确性,数据文件和日志文件需要一种机制确保相互一一对应。日志文件和数据文件物理格式相同,以数据块为单位记录变更。每个事务存在一个事务编号,用于表明事务发生的先后顺序。当数据集正常关闭时,系统会自动删除对应的日志文件。示例性地,日志管理模块包括如下模块中的一个或多个:
日志文件创建模块,用于创建与数据文件一一对应的日志文件,所述相对 应的数据文件和日志文件的文件头中记录的随机数序列一致;
数据块备份模块,用于将指定的数据段从数据文件备份到对应的日志文件中,并在所述日志文件中为所述备份的数据块分配一个用于标识事务顺序的、递增的事务编号;
数据恢复模块,用于将所述日志文件中的有效数据块按照自身的事务编号的顺序恢复到所述数据文件中。
具体的,日志管理模块主要功能为如下所示:
(1)日志管理模块的创建CREATE_LOG
功能:创建对应的日志文件。
数据文件和日志文件通过文件名称相互标识。创建日志文件时,在日志文件头和数据集文件头中会记录一个随机数序列,当日志文件和随机数序列一致时,说明日志文件和数据文件相互匹配。在提交所有修改之前,对应表一直处于无效状态。
(2)数据块的备份BACKUP_ON_LOG
功能:将指定的数据段从物理文件备份到日志文件中。
由于数据块可能被重复使用,因此数据块的物理顺序不能表明事务顺序。为了数据恢复的正确性,备份数据块时同时要为其分配一个递增的事务ID。
(3)数据恢复RECOVERY
功能:将日志文件中的有效数据块按事务ID即事务编号的顺序恢复到数据文件中。
数据集打开时,系统都会检查每个表,一旦发现存在无效表,会进行数据恢复。在找到匹配的日志文件后,扫描对应表的所有数据块,对于多个数据块ID相同的数据块,只保留事务ID最大的,恢复数据文件。
数据访问接口模块对外提供访问数据的方法,包括数据集、表、游标等的实现。本发明的实施例中,数据访问接口模块包括如下模块中的一个或多个:
新行加入模块,用于向游标中加入新的数据行;
游标移动模块,用于根据行号在表中检索行;
行数据访问模块,用于读取游标当前指向行的数据;
定长数据变更模块,用于变更游标当前行定长列的值;
变长数据变更模块,用于变更游标当前行变长列的值;
开始事务模块,用于开始一个新的事务;
提交修改模块,用于将所有的数据变更提交到数据文件中;
回滚模块,用于放弃自最近事务以来的所有变更。
优选地,该新行加入模块包括:
空闲字节获取单元,用于找到数据集的、当前表的最后一个数据段,并得到最后一个数据段中空闲字节的数目;
空闲空间判断单元,用于判断空闲字节的数目是否足够存储新加入的数据行,并在判断出空闲字节的数目足够存储新加入的数据行时,在日志文件中备份最后一个数据段,并更新当前在索引区中记录的数据段编号到数据段中数据块地址信息的映射对;并在判断出空闲字节的数目不够时,分配新数据段;
更新单元,用于将最后一个数据段或新数据段加载至数据缓冲管理模块,从缓存管理模块中得到数据段,并更新当前行序号、行缓存和当前数据段。
示例性地,空闲空间判断单元在判断出空闲字节的数据不够时,分配新数据段的方法同上文所述的数据块的分配方法。
本发明实施例中,数据访问接口模块还包括:
下面对本发明实施例的数据访问接口模块中数据集、表、游标等的实现进行详细说明。
数据集包含若干张表。一个数据集在没有被更新时对应一个数据文件,当有数据更新时,还会有一个日志文件。
表是行的集合,从类型上分用户表、索引表和系统表三种。用户表存储了用户关心的数据;索引表提供了快速检索用户表里行的途径;系统表存储了用户表的元数据和系统信息。
表使用表头数据块表示。创建表或打开表就是在文件中创建或加载该数据块。
用户通过游标访问表中数据,分为只读游标和读写游标。允许多个读游标和唯一的读写游标同时存在。游标在内部维护当前行序号、当前行缓冲、当前数据段、以及文件存储管理模块和数据缓冲管理模块等的信息。如果是读写游标还存在一个日志管理模块。每个打开的游标都会加入到表的游标集合中。
定长块中可以容纳的行数固定,各类型数据列大小固定。根据行号可以加载对应数据块,根据列在行中的偏移可得到对应的数据。
在修改数据时,在日志文件中复制还没有备份的数据块,并更新游标的对应缓存,将数据的变更保留在日志文件中。提交事务时修改数据文件。本系统由于使用内存映射文件,在事务实现时与传统方式有所不同,具体方法见下文。下面对用于实现新行加入、游标移动、行数据访问、定长数据变更、变长数据变更、开始事务、提交修改、回滚等功能的功能模块或功能函数进行描述。其中,行数据访问通过检索定长数据和检索变长数据来实现。
(1)利用游标向物理文件中加入新行MOVE_TO_INSERT_ROW
找到当前表的最后一个数据段,并得到数据段的空闲字节数目;
如果这个数据段的空闲空间的大小不够,则分配新数据段;否则,在日志文件中备份这个数据段,更新当前SIDX,加载表最后一个数据段,从缓存管理模块中得到这个数据段,并更新当前行序号,行缓存和当前数据段。
(2)变更定长数据SET_XXX,其中XXX代表定长数据类型,如INT;用于变更游标当前行定长列的值;
判断当前行所在的定长数据块是否已经备份到日志文件中;如果没有,则备份该定长数据块的数据到日志文件,重新从日志文件只加载这个块到数据缓存管理模块的缓存块中;
从数据缓存管理模块中得到上述对应的缓存块
根据输入的列序号得到列在行中的偏移,并复制输入的数据到缓存块中。
(3)移动MOVE_TO,用于根据行号在表中检索行;
根据行序号计算行所在的数据段编号SECTID;
根据上述数据段编号,从索引区的SIDX中得到该数据段在文件中的偏移,并加载其到数据缓冲管理器中;
更新游标的行缓冲。
上述游标移动模块的功能通过该移动函数实现。
(4)检索定长数据GET_XXX,XXX为定长数据类型,如INT等;
加载当前行对应的数据段定长块到内存;
根据列序号得到列偏移;
根据列偏移返回数据。
(5)检索变长数据GET_BYTEARRAY,如检索几何信息的数据;
加载当前行对应的数据段定长块到内存;
根据列序号得到列偏移;
根据列偏移得到变长描述信息;
加载变长块到内存,根据变长信息定位变长块中的数据,并返回。
(6)变更变长数据类型的数据SET_BYTEARRAY
功能:变更游标当前行变长列的值。
从定长数据块中存储的变长信息头中得到变长列的变长数据的相关信息,包括:变长数据在数据块内的偏移及变长数据包含的字节的数目;
根据变长数据体即变长数据的位置信息、块内的偏移、变长数据包含的字节数目,定位数据体所占用的数据页,并判断这个连续的数据页是否已经加载到游标缓存中,如果没有,则加载数据页;
如果当前变长列数据占用的空间大小足够存储输入的变长数据,则直接将输入的变长数据存入,并结束流程;
如果当前变长列数据占用的空间的大小不够存储输入的变长数据,且当前变长块中有空闲的空间,则直接将输入的数据复制到空闲空间,更新SIDX;如果当前变长列数据占用的空间的大小不够存储输入的变长数据,且当前变长块中没有空闲的空间,则分配新扩大的变长数据块,复制原变长块到新块,更新SIDX;
重新加载对应的数据页到缓存块中。将原变长数据块加入空闲列表中;计算存储输入的变长数据所占用的数据页,将计算出的数据页加载到缓存块中;记录这个存储了变长数据的变长数据槽的大小;复制数据到变长数据的空闲位置中;在定长块中更新对应变长块的存储信息。
(7)开始事务START_TRANSACTION
功能:开始一个新的事务。
将游标当前的SIDX、行序号压入事务栈中、并复制一个新的SIDX作为游标的当前SIDX,递增事务ID。
(8)提交修改COMMIT
功能:将所有的数据变更提交到数据文件中。
找到所有已备份到日志文件中的数据段;
在数据文件的表头中标识开始提交日志文件;
复制日志文件中的数据段到数据文件中;
对于重新分配的数据块,更新SIDX,将废弃的块加入数据文件空闲块列表;标识这个表有效;
将已经提交的日志文件中的数据块加入日志文件的空闲块列表;
清空事务栈。重新加载当前行,当前数据段;
将原来的缓存块重新从数据文件中加载;
通知所有游标重新更新它们的缓存块;
(9)回滚ROLLBACK
功能:放弃自最近事务开始以来的所有变更。
如果事务栈为空,返回;
在当前SIDX中将所有属于当前事务ID的数据段标识废弃,全部回收到空闲链表中;
释放当前SIDX。将事务栈顶的SIDX作为当前SIDX。重新加载游标的当前行和数据段;
将原来映射到当前事务ID的日志的缓存块重新加载。
为了加快数据的检索,数据引擎中需要建立索引。B-TREE的随机检索性能不佳,本系统使用表来实现。这个表中存储的是主键-行序号映射对。用户根据内存的占用情况可以选择是全部加载到内存,还是以游标的方式。除主键外的其他字段也可以建立索引表。
本发明实施例的空间数据引擎可嵌入到具体的空间数据应用系统中。
本发明的实施例还提供了一种利用上述实施例的空间数据引擎管理空间数据的方法。在前文对本发明实施例的空间数据引擎的描述中,已结合描述了应用本发明实施例的空间数据引擎管理空间数据的方法。在此,仅对本发明实施例的管理空间数据的方法的主要步骤进行描述,具体实现细节可参照前文中的相应描述。
本发明实施例的管理空间数据的方法,包括读取数据文件中空间数据的步 骤。图2为本发明实施例的方法中,读取步骤的流程示意图。如图2,该读取步骤包括:
步骤201,根据游标指向的、当前欲读取的数据集中数据行的行号,确定数据行对应的数据段的编号;
步骤202,根据数据段的编号,从当前数据对象的索引区中获得数据段中数据块的地址信息;
步骤203,根据数据块的地址信息,将数据段加载到数据缓冲管理模块的缓存块中;
步骤204,从数据缓冲管理模块的缓存块中读取数据段中的数据。
本发明实施例的管理空间数据的方法,实现了基于内存映射文件的访问物理文件中的数据,上层系统需要的数据通过游标从数据缓冲管理模块中的缓存块获得,与现有技术的管理空间数据的方法相比,提高了数据访问的效率。
示例性地,步骤201中,由于每个定长块中存储的行数固定,例如每块存储5行,且除最后一块外全部存满,因此当需要检索第31行时,SECTID=31/5,该行在定长块中的位置为31%5即31除以5的余数。
优选地,该实施例的方法,其中,在步骤201之后,步骤202之前,还包括步骤b1:根据数据段的编号,判断数据段是否已加载到了数据缓冲管理模块的缓存块中;如是,则转入执行步骤203;否则,执行步骤204。
本发明的该实施例在实现物理文件的访问时,只在缓存块中加载未曾加载过的数据,不重复加载已经加载过的数据,这样能提高访问的效率,节约内存。
优选地,该实施例的方法,其中,步骤b1包括如下步骤:
判断数据段是否已备份到对应的日志文件中;如是,则确定出数据段已加载到了数据缓冲管理模块的缓存块中;否则,确定出数据段未加载到数据缓冲管理模块的缓存块。
优选地,该实施例的方法,其中,步骤203中,将数据段加载到数据缓冲管理模块的缓存块中的步骤包括:以数据页为单位,将数据段的定长数据块加载到数据缓冲管理模块的缓存块中;和/或,以数据页为单位,将数据段的变长数据块中变长数据占用的数据页加载到数据缓冲管理模块的缓存块中。
优选地,该实施例的方法,其中,还包括:
将数据写入数据文件的步骤,写入步骤具体包括:
步骤m,根据数据文件对应的数据集中、表的总行数,确定最后一个数据段的编号;
步骤n,判断最后一个数据段的空闲空间是否足够存储欲写入的空间数据;如是,则执行步骤p;否则,执行步骤q;
步骤p,在对应的日志文件中备份最后一个数据段,更新当前索引区中记录的、用户数据区数据段编号到数据段中数据块地址的映射对,将最后一个数据段加载到数据缓冲管理模块的缓存块中,从数据缓冲管理模块的缓存块中得到最后一个数据段,并更新当前行序号、行缓存和当前数据段,结束流程;
步骤q,在对应的日志文件中新分配一个数据段,并将新分配的数据段加载到数据缓冲管理模块的缓存块中,从缓存块中读取新分配的数据段,在新分配的数据段中分配用于存储欲写入的空间数据的新的空间,并更新当前行序号、行缓存和当前数据段。
本发明实施例的方法中,写入操作是用户通过游标触发的。本发明实施例的上述将数据写入数据文件的步骤是在用户写操作之前的步骤,在执行完上述写入步骤后,用户直接修改内存即可,内存映射文件有个特性就是对内存的修改会直接体现在磁盘的文件上。
其中,步骤q中,采用上述数据块的分配ALLOC_BLOCK的方法来实现在日志文件中新分配一个数据段。
优选地,该实施例的管理空间数据的方法中,在步骤m之后,步骤n之前,还包括:
判断最后一个数据段是否已备份到对应的日志文件中;如是,则在数据缓冲管理模块中得到最后一个数据段对应的缓存块,并将该缓存块的内容修改为欲写入的数据,结束当前流程;否则,执行步骤n。
优选地,该实施例的管理空间数据的方法中,还包括:变更游标当前行变长列的数据的步骤,包括:
步骤i,得到变长列对应的变长数据的位置信息、在数据块内的偏移、以及变长列对应的变长数据包含的字节数目,定位变长数据所涉及的数据页,并判断变长数据所涉及的数据页是否已经加载到游标缓存中,如是,则执行步骤 j;否则,加载变长数据所占用的数据页;
步骤j,在当前变长列的空间大小不够存储欲写入的变长数据、且当前变长数据块中没有空闲的空间时,分配新的、扩大的变长数据块,复制原变长数据块到新变长数据块,更新当前索引区中记录的、数据段编号到数据段中数据块地址信息的映射对,并重新加载对应的数据页到数据缓冲管理模块的缓存块中;
步骤k,将变更前的原变长数据块加入空闲列表中;计算存储输入的变长数据需占用的数据页,并将占用的数据页加载到数据缓冲管理模块的缓存块中;
步骤l,记录新变长数据块的大小,复制数据到变长数据的空闲位置中,在定长块中更新对应变长块的存储信息。
该实施例的步骤j中,分配新的、扩大的变长数据块的方法同前文所述的数据块的分配的方法。
下面对具体实现中,如何利用本发明实施例的管理空间数据的方法进行空间数据的存储和读取进行举例说明。
用户通过数据访问接口模块中的游标来触发系统相应功能实现存储数据,根据上文对游标的描述,可利用游标具有的相应变更定长数据的函数来存储数据,例如:
SET_INT(INT COLUMN,INT*DATA);
SET_DOUBLE(INT COLUMN,DOUBLE*DATA);
MOVE_TO_INSERT_ROW。
A,当用户调用游标相应SET_XXX(其中,XXX表示数据类型)函数后,包括如下步骤:
根据游标当前行的行号,计算得到对应的数据段SECTION的编号.
判断数据段SECTION是否已备份到日志文件中;
如果已经备份到日志文件中,则直接在数据缓冲管理模块中得到数据段对应的内存,修改该内存的内容,并返回给用户,结束当前流程;
如果未备份到日志文件中,则在日志文件的空闲列表中查找对应的合适大小的数据块;
如果在空闲列表没有找到上述对应的合适大小的数据块,则分配新的数据块,如利用上文所述的ALLOC_BLOCK函数来实现分配;并在分配完后,将原数据文件中的数据段复制到新分配的日志文件数据块中,并通过数据缓冲管理模块加载这个在日志文件中的数据段到内存,并返回给用户。
B,当用户调用游标相应MOVE_TO_INSERT_ROW函数后,包括如下步骤:
系统根据表中的行的总数,计算最后一个数据段SECTION的编号。
判断该最后一个数据段是否已备份到日志文件中;如果未备份到日志文件中,则在日志文件中分配数据块,并将原数据文件中的该最后一个数据段的数据块到这个块中,步骤同上述A中的复制步骤;
判断最后一个数据段的空闲空间是否足够,如果空间不足够,则在日志文件中分配新的数据段,并加载到内存。
在这个数据段中分配新的空间,作为新行。
对于读取,用户使用游标来访问表中的数据,在指定行序号后,游标移动到相应行,具体地,根据上文对游标的描述,可利用游标具有的游标移动函数MOVE_TO(INT ROW_ID)和检索定长数据函数GET_XXX(INT COLUMN)来访问数据,其中,ROW_ID为欲访问的行,COLUMN表示数据在指定行中所处的列,具体包括如下步骤:
用户使用MOVE_TO(INT ROW_ID)来在表中移动游标到指定行,用户使用GET_XXX(INT COLUMN)来从数据缓冲管理器中得到对应的数据段,在数据段中得到对应行,并返回行中对应列的数据。
本发明实施例的管理空间数据的方法中,还包括如下步骤中的一个或多个:
创建步骤,在数据文件中的数据有更新时,创建与所述数据文件一一对应的日志文件,所述数据文件的文件头和所述对应的日志文件的文件头中记录的随机数序列一致;
备份步骤,将数据文件中的数据块备份到日志文件,并在备份数据块时,在日志文件中为备份的数据块分配一个用于标识事务顺序的、递增的事务编号;
恢复步骤,在进行数据恢复时,将日志文件中的有效数据块按事务编号的顺序恢复到数据文件中。
本发明实施例的管理空间数据的方法中的事务的实现方法及已在前文对空间数据引擎的描述中进行了描述,在此不再赘述。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明实施例所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (23)
1.一种空间数据引擎装置,其特征在于,包括文件存储管理模块、数据缓冲管理模块、日志管理模块和数据访问接口模块,其中:
所述文件存储管理模块,用于通过内存映射文件来完成:对物理文件中数据的加载或将数据写入物理文件中、分配与所述物理文件相对应的磁盘空间、分配与所述物理文件相对应的内存映射文件的映射对象、及管理所述物理文件的空闲块列表,所述物理文件包括数据文件和日志文件,所述物理文件的逻辑组织单元包括:数据页、数据组块、数据块、数据段、数据区和数据对象;所述数据组块由多个连续的数据页组成;所述数据块由多个数据页组成,所述数据块的块头记录包含:数据块编号、数据段编号、数据对象编号、事务编号;所述数据段由定长数据块或变长数据块组成,所述定长数据块中以行为单位存储了定长类型的数据和固定长度的变长数据的描述信息,所述变长数据的描述信息包括:所述变长数据在变长数据块中的位置及所述变长数据包括的字节数目,所述变长数据块中记录了变长的数据信息;所述数据区是数据段的集合,分为用户数据区和索引区,所述用户数据区用于记录用户存储的数据,所述索引区记录用于定位所述用户数据区中数据段的信息;所述数据对象,由一对数据区和索引区构成,所述数据对象包括:表;
所述数据缓冲管理模块,包括多个缓存块,用于在对所述物理文件中的数据加载或将数据写入物理文件中时,将欲加载或欲写入的数据以数据页为单位加载到所述缓存块中;
所述日志管理模块,用于创建及管理与数据文件相对应的日志文件,在所述日志文件中记录对应数据文件中数据的变更;
所述数据访问接口模块,用于提供用以访问所述物理文件中数据的数据集、表及游标;所述数据集与所述物理文件相对应;所述数据集中的每一个存储了一张或多张表,所述表中的数据使用游标来访问,所述游标提供了表中行的访问方法,所述游标中记录了自身所指向行的信息。
2.根据权利要求1所述的空间数据引擎装置,其特征在于,所述物理文件按如下方式进行数据组织:
所述数据对象的用户数据区中的数据段使用双向链表建立连接;
在所述索引区中记录所述用户数据区数据段编号到所述数据段中数据块地址的映射对SIDX;
所述定长数据块中所有行的字节数目相同。
3.根据权利要求2所述的空间数据引擎装置,其特征在于,所述文件存储管理模块包括:
数据块分配模块,用于在将数据写入所述物理文件时,如果当前分配的映射对象的物理空间不够存储欲写入的数据,则通知与所述物理文件相对应的数据集中已经打开的游标记录当前所加载的物理文件的地址,卸载已经加载的数据段;并根据所述欲写入的数据所需的物理空间,重新分配内存映射文件的映射对象;并根据重新分配的映射对象更新所述物理文件的文件尾,并通知所有相关的游标将所述卸载的数据段重新加载到所述缓存块。
4.根据权利要求3所述的空间数据引擎装置,其特征在于,所述数据缓冲管理模块包括如下模块中的一个或多个:
数据段加载模块,用于根据数据段编号,加载定长数据块到所述数据缓冲管理模块的缓存块中;
数据组块加载模块,用于根据数据段及数据页编号,加载变长数据占用的数据页到所述数据缓冲管理模块的缓存块中。
5.根据权利要求1所述的空间数据引擎装置,其特征在于,所述日志管理模块包括如下模块中的一个或多个:
日志文件创建模块,用于创建与数据文件一一对应的日志文件,相对应的数据文件和日志文件的文件头中记录的随机数序列一致;
数据块备份模块,用于将指定的数据段从数据文件备份到对应的日志文件中,并在所述日志文件中为备份的数据块分配一个用于标识事务顺序的、递增的事务编号;
数据恢复模块,用于将所述日志文件中的有效数据块按照自身的事务编号的顺序恢复到所述数据文件中。
6.根据权利要求4所述的空间数据引擎装置,其特征在于,所述数据访问接口模块包括如下模块中的一个或多个:
新行加入模块,用于向所述游标中加入新的数据行;
游标移动模块,用于根据行号在表中检索行;
行数据访问模块,用于读取游标当前指向行的数据;
定长数据变更模块,用于变更游标当前行定长列的值;
变长数据变更模块,用于变更游标当前行变长列的值;
开始事务模块,用于开始一个新的事务;
提交修改模块,用于将所有的数据变更提交到所述数据文件中;
回滚模块,用于放弃自最近事务以来的所有变更。
7.根据权利要求6所述的空间数据引擎装置,其特征在于,所述新行加入模块包括:
空闲字节获取单元,用于找到所述数据集的、当前表的最后一个数据段,并得到所述最后一个数据段中空闲字节的数目;
空闲空间判断单元,用于判断所述空闲字节的数目是否足够存储新加入的数据行,并在判断出所述空闲字节的数目足够存储所述新加入的数据行时,在所述日志文件中备份所述最后一个数据段,并更新当前在所述索引区中记录的所述用户数据区数据段编号到所述数据段中数据块地址的映射对;并在判断出所述空闲字节的数目不够时,分配新数据段;
更新单元,用于将所述最后一个数据段或所述新数据段加载至所述数据缓冲管理模块,从所述数据缓冲管理模块中得到所述数据段,并更新当前行序号、行缓存和当前数据段。
8.一种利用权利要求1的空间数据引擎装置管理空间数据的方法,其特征在于,所述空间数据引擎中、在数据对象的索引区中记录用户数据区数据段编号到所述数据段中数据块地址的映射对SIDX,所述空间数据引擎中、定长数据块中所有行的字节数目相同,所述方法包括:
读取数据文件中空间数据的步骤,所述读取步骤具体包括:
步骤a,根据游标指向的、当前欲读取的数据集中数据行的行号,确定所述数据行对应的数据段的编号;
步骤b,根据所述数据段的编号,从当前数据对象的索引区中获得所述数据段中数据块的地址信息;
步骤c,根据所述数据块的地址信息,将所述数据段加载到数据缓冲管理模块的缓存块中;
步骤d,从所述数据缓冲管理模块的缓存块中读取所述数据段中的数据;
其中,在开始一个新事务时,将游标当前的SIDX和行序号压入事务栈中,复制一个新的SIDX作为游标的当前SIDX,并递增事务编号。
9.根据权利要求8所述的管理空间数据的方法,其特征在于,所述数据对象的用户数据区中的数据段使用双向链表建立连接。
10.根据权利要求8所述的管理空间数据的方法,其特征在于,在所述步骤a之后,所述步骤b之前,还包括:
步骤b1,根据所述数据段的编号,判断所述数据段是否已加载到了所述数据缓冲管理模块的缓存块中;如是,则转入执行步骤c;否则,执行步骤b。
11.根据权利要求10所述的管理空间数据的方法,其特征在于,所述步骤b1包括如下步骤:
判断所述数据段是否已备份到对应的日志文件中;如是,则确定出所述数据段已加载到了所述数据缓冲管理模块的缓存块中;否则,确定出所述数据段未加载到所述数据缓冲管理模块的缓存块。
12.根据权利要求8所述的管理空间数据的方法,其特征在于,所述步骤c中,所述将数据段加载到所述数据缓冲管理模块的缓存块中的步骤包括:
以数据页为单位,将所述数据段的定长数据块加载到所述数据缓冲管理模块的缓存块中;和/或,
以数据页为单位,将所述数据段的变长数据块中变长数据占用的数据页加载到所述数据缓冲管理模块的缓存块中。
13.根据权利要求8所述的管理空间数据的方法,其特征在于,还包括:
将数据写入数据文件的步骤,所述写入步骤具体包括:
步骤m,根据所述数据文件对应的数据集中,表的总行数,确定最后一个数据段的编号;
步骤n,判断所述最后一个数据段的空闲空间是否足够存储欲写入的空间数据;如是,则执行步骤p;否则,执行步骤q;
步骤p,在对应的日志文件中备份所述最后一个数据段,更新当前索引区中记录的、用户数据区数据段编号到数据段中数据块地址的映射对,将所述最后一个数据段加载到所述数据缓冲管理模块的缓存块中,从所述数据缓冲管理模块的缓存块中得到所述最后一个数据段,并更新游标当前所指向行的信息,结束流程;
步骤q,在对应的日志文件中新分配一个数据段,并将所述新分配的数据段加载到所述数据缓冲管理模块的缓存块中,从所述缓存块中得到所述新分配的数据段,在所述新分配的数据段中分配用于存储欲写入的空间数据的新的空间,并更新游标当前所指向行的信息。
14.根据权利要求13所述的管理空间数据的方法,其特征在于,所述步骤q中,在对应的日志文件中新分配一个数据段的步骤包括:
通知与所述日志文件相对应的数据集中已经打开的游标记录当前所加载的物理文件的地址、卸载已经加载的数据段;
根据所述欲写入的空间数据所需的物理空间,重新分配内存映射文件的映射对象;
根据所述重新分配的映射对象更新所述日志文件的文件尾,并通知所有相关的游标将所述卸载的数据段重新加载到所述缓存块。
15.根据权利要求13所述的管理空间数据的方法,其特征在于,在所述步骤m之后,所述步骤n之前,还包括:
判断所述最后一个数据段是否已备份到对应的日志文件中;如是,则在所述数据缓冲管理模块中得到所述最后一个数据段对应的缓存块,并将所述缓存块原来存储的数据修改为所述欲写入的空间数据,结束当前流程;否则,执行步骤n。
16.根据权利要求8所述的管理空间数据的方法,其特征在于,还包括:
变更游标当前行变长列的数据的步骤,包括:
步骤i,根据所述变长列对应的变长数据的位置信息、在数据块内的偏移、以及所述变长列对应的变长数据包含的字节数目,定位所述变长数据所涉及的数据页,并判断所述变长数据所涉及的数据页是否已经加载到游标缓存中,如是,则执行步骤j;否则,加载所述变长数据所占用的数据页;
步骤j,在当前变长列的空间大小不够存储欲写入的变长数据、且当前变长数据块中没有空闲的空间时,分配新的、扩大的变长数据块,复制原变长数据块到新变长数据块,更新当前索引区中记录的、用户数据区数据段编号到数据段中数据块地址的映射对,并重新加载对应的数据页到所述数据缓冲管理模块的缓存块中;
步骤k,将变更前的原变长数据块加入空闲列表中;计算存储输入的变长数据需占用的数据页,并将所述占用的数据页加载到所述数据缓冲管理模块的缓存块中;
步骤l,记录所述新变长数据块的大小,复制数据到变长数据的空闲位置中,在定长数据块中更新对应变长数据块的存储信息。
17.根据权利要求8所述的管理空间数据的方法,其特征在于,还包括:
变更游标当前行定长列的数据的步骤,包括:
判断当前行所在的定长数据块是否已经备份到日志文件中;如果没有,则备份所述定长数据块的数据到日志文件,重新从日志文件加载所述定长数据块到数据缓冲管理模块的缓存块中;
从数据缓冲管理模块中得到所述定长数据块对应的缓存块;
根据输入的列序号得到列在行中的偏移,并复制输入的数据到所述对应的缓存块中。
18.根据权利要求8所述的管理空间数据的方法,其特征在于,还包括:
在数据文件中的数据有更新时,创建与所述数据文件一一对应的日志文件,所述数据文件的文件头和所述对应的日志文件的文件头中记录的随机数序列一致。
19.根据权利要求18所述的管理空间数据的方法,其特征在于,还包括:
将数据文件中的数据块备份到所述日志文件,并在备份所述数据块时,在所述日志文件中为所述备份的数据块分配一个用于标识事务顺序的、递增的事务编号。
20.根据权利要求19所述的管理空间数据的方法,其特征在于,还包括:
在进行数据恢复时,将所述日志文件中的有效数据块按事务编号的顺序恢复到所述数据文件中。
21.根据权利要求19所述的管理空间数据的方法,其特征在于,还包括:
将所有的数据变更提交到数据文件的步骤,所述提交步骤具体包括:
步骤s1,找到所有已备份到日志文件中的数据段;
步骤s2,在数据文件的表头中标识开始提交日志文件;
步骤s3,复制日志文件中的数据段到数据文件中;
步骤s4,对于重新分配的数据块,更新SIDX,将废弃的块加入数据文件空闲块列表,并标识这个表有效;
步骤s5,将已经提交的日志文件中的数据块加入日志文件的空闲块列表;
步骤s6,清空事务栈,重新加载当前行,当前数据段;
步骤s7,将原来的缓存块重新从数据文件中加载;
步骤s8,通知所有游标重新更新自身的缓存块。
22.根据权利要求8所述的管理空间数据的方法,其特征在于,还包括:放弃自最近事务开始以来的所有变更的步骤,所述放弃步骤具体包括:
步骤s10,在事务栈为非空时,在当前SIDX中将所有属于当前事务编号的数据段标识废弃,全部回收到空闲链表中;
步骤s11,释放当前SIDX,将事务栈顶的SIDX作为当前SIDX;
步骤s12,重新加载游标的当前行和当前数据段;
步骤s13,将原来映射到当前事务编号的日志的缓存块重新加载。
23.根据权利要求8或9所述的管理空间数据的方法,其特征在于,还包括:
建立索引表来检索所述数据文件中存储的空间数据的步骤,所述索引表中存储有主键-行序号映射对。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100858045A CN101639848B (zh) | 2009-06-01 | 2009-06-01 | 一种空间数据引擎及应用其管理空间数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100858045A CN101639848B (zh) | 2009-06-01 | 2009-06-01 | 一种空间数据引擎及应用其管理空间数据的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101639848A CN101639848A (zh) | 2010-02-03 |
CN101639848B true CN101639848B (zh) | 2011-06-01 |
Family
ID=41614832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100858045A Active CN101639848B (zh) | 2009-06-01 | 2009-06-01 | 一种空间数据引擎及应用其管理空间数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101639848B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107967360A (zh) * | 2017-12-22 | 2018-04-27 | 广东雅达电子股份有限公司 | 一种实时数据库文件存储方法 |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193873B (zh) * | 2010-03-04 | 2013-06-05 | 中国科学院微电子研究所 | 快速读写物理版图数据的方法 |
US8745329B2 (en) * | 2011-01-20 | 2014-06-03 | Google Inc. | Storing data across a plurality of storage nodes |
CN102521112A (zh) * | 2011-11-18 | 2012-06-27 | 深圳中兴网信科技有限公司 | 一种基于内存的日志信息读写方法 |
CN103136293B (zh) * | 2011-12-02 | 2016-01-13 | 福建星网视易信息系统有限公司 | 图片资源包的格式设计和读取方法 |
CN102768672B (zh) * | 2012-06-12 | 2016-02-17 | 北大方正集团有限公司 | 一种磁盘空间管理方法和装置 |
CN102929935B (zh) * | 2012-09-25 | 2016-01-13 | 上海证券交易所 | 一种基于事务的大容量数据读写方法 |
CN103870492B (zh) * | 2012-12-14 | 2017-08-04 | 腾讯科技(深圳)有限公司 | 一种基于键排序的数据存储方法和装置 |
CN103077187A (zh) * | 2012-12-20 | 2013-05-01 | 曙光信息产业(北京)有限公司 | 日志管理方法和日志管理系统 |
CN103092775B (zh) * | 2013-01-31 | 2015-06-10 | 武汉大学 | 一种基于键值结构的空间数据双缓存方法及机制 |
CN103823865A (zh) * | 2014-02-25 | 2014-05-28 | 南京航空航天大学 | 一种数据库主存索引方法 |
CN106033440A (zh) * | 2015-03-16 | 2016-10-19 | 中国石油化工股份有限公司 | 一种空间数据的管理方法 |
CN105095111B (zh) * | 2015-07-17 | 2018-08-03 | 浪潮(北京)电子信息产业有限公司 | 一种提高存储虚拟化安全性的方法及存储虚拟化设备 |
CN105426410B (zh) * | 2015-11-02 | 2018-11-09 | 东软集团股份有限公司 | 数据采集系统和用于数据采集系统的分析方法 |
CN105357453A (zh) * | 2015-11-24 | 2016-02-24 | 长春乙天科技有限公司 | 基于多探测器成像相机的通讯群发群收控制方法 |
CN105912687B (zh) * | 2016-04-19 | 2019-05-24 | 江苏物联网研究发展中心 | 海量分布式数据库存储单元 |
CN106330431A (zh) * | 2016-08-29 | 2017-01-11 | 北京瑞卓喜投科技发展有限公司 | 基于区块链技术的数据处理方法、装置及系统 |
CN106407409A (zh) * | 2016-09-22 | 2017-02-15 | Tcl集团股份有限公司 | 基于das架构存储服务器的虚拟文件系统及其文件管理方法 |
CN106503084A (zh) * | 2016-10-10 | 2017-03-15 | 中国科学院软件研究所 | 一种面向云数据库的非结构化数据的存储与管理方法 |
CN106909623B (zh) * | 2017-01-19 | 2019-11-26 | 中国科学院信息工程研究所 | 一种支持高效海量数据分析和检索的数据装置及数据存储方法 |
CN107688624B (zh) * | 2017-08-18 | 2020-12-29 | 杭州迪普科技股份有限公司 | 一种日志索引构建方法及装置 |
CN108052290A (zh) | 2017-12-13 | 2018-05-18 | 北京百度网讯科技有限公司 | 用于存储数据的方法和装置 |
CN108829345B (zh) * | 2018-05-25 | 2020-02-21 | 华为技术有限公司 | 日志文件的数据处理方法和终端设备 |
JP7115429B2 (ja) * | 2018-08-10 | 2022-08-09 | 株式会社デンソー | 車両用マスタ装置、ロールバックの実行制御方法及びロールバックの実行制御プログラム |
CN109542890B (zh) * | 2018-10-11 | 2024-01-26 | 平安科技(深圳)有限公司 | 数据修改方法、装置、计算机设备及存储介质 |
CN110750587B (zh) * | 2019-10-15 | 2023-04-25 | 大连莱克科技发展有限公司 | 一种调试设备的大量高速日志处理方法 |
CN112328594B (zh) * | 2020-10-23 | 2024-02-02 | 许继集团有限公司 | 一种嵌入式装置模型数据管理方法及装置 |
-
2009
- 2009-06-01 CN CN2009100858045A patent/CN101639848B/zh active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107967360A (zh) * | 2017-12-22 | 2018-04-27 | 广东雅达电子股份有限公司 | 一种实时数据库文件存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101639848A (zh) | 2010-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101639848B (zh) | 一种空间数据引擎及应用其管理空间数据的方法 | |
CN100478959C (zh) | 嵌入式数据库的存储管理方法 | |
CN1983266B (zh) | 闪速类介质中存储事务记录的文件系统 | |
CN102591982B (zh) | 执行增量sql服务器数据库备份的方法和系统 | |
CN104040481B (zh) | 用于融合、存储和检索增量式备份数据的方法和系统 | |
US8135907B2 (en) | Method and system for managing wear-level aware file systems | |
CN102184260B (zh) | 一种云计算环境下的海量数据存取方法 | |
US8280858B2 (en) | Storage pool scrubbing with concurrent snapshots | |
CN101488153A (zh) | 嵌入式Linux下大容量闪存文件系统的实现方法 | |
US7584229B2 (en) | Method and system for priority-based allocation in a storage pool | |
Kim et al. | LGeDBMS: a small DBMS for embedded system with flash memory | |
CN101515276B (zh) | 一种文件数据写操作的方法、文件数据恢复方法及系统 | |
CN106662981A (zh) | 存储设备、程序和信息处理方法 | |
US20020029214A1 (en) | Synchronizable transactional database method and system | |
US20070136387A1 (en) | Transaction-Safe FAT Files System | |
CN1983265A (zh) | 具有倒置层次结构的文件系统 | |
CN107180092A (zh) | 一种文件系统的控制方法、装置及终端 | |
JP2012507072A (ja) | 分散ストレージシステムにおけるデータのアトミックな複合変形 | |
CN105718217A (zh) | 一种精简配置存储池数据一致性维护的方法及装置 | |
CN100424699C (zh) | 一种属性可扩展的对象文件系统 | |
CN101888405A (zh) | 一种云计算的文件系统和数据处理方法 | |
CN103577513A (zh) | 藉延迟节点实例化以缓存xml信息集的系统和/或方法 | |
US10496612B2 (en) | Method for reliable and efficient filesystem metadata conversion | |
US11636069B2 (en) | Data storage system and method | |
Strzelczak et al. | Concurrent Deletion in a Distributed {Content-Addressable} Storage System with Global Deduplication |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |