CN105302912A - 一种数据存储方法及设备 - Google Patents
一种数据存储方法及设备 Download PDFInfo
- Publication number
- CN105302912A CN105302912A CN201510767359.6A CN201510767359A CN105302912A CN 105302912 A CN105302912 A CN 105302912A CN 201510767359 A CN201510767359 A CN 201510767359A CN 105302912 A CN105302912 A CN 105302912A
- Authority
- CN
- China
- Prior art keywords
- key data
- data
- major key
- data file
- leading foreign
- 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.)
- Granted
Links
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据存储方法及设备,该存储方法应用于数据存储设备,数据存储设备中存储有数据结构编号与数据结构名称的对应关系,所述方法包括:当接收到写入数据请求时,根据数据结构将数据写入硬盘,生成数据记录,并根据数据记录生成一个或多个数据文件,所述数据文件500-50M字节,在数据写入完成后,建立数据结构编号、数据记录范围和数据文件范围的对应关系,通过将数据以500-50M字节的数据文件的形式进行存储,改进现有的数据库文件存储方式,将数据扁平化、碎片化处理,为数据快速读取提供保证,提高数据查询效率。
Description
技术领域
本发明涉及数据库技术领域,具体涉及一种数据存储方法及设备。
背景技术
云数据库并未建立数据文件之间的对应关系,而是采用处理文件记录方式处理数据,由多个服务器并行处理数据,因此,只适合于非结构化的数据处理,而不适用于业务处理系统的场景。关系数据库的优势是编程接口简单,数据关系清晰,适合于结构化的数据形式,例如,金融、电信等业务处理系统,但是,现有的关系数据库(例如Oracle、mysql),是在裸盘上建立的,属于重量级数据库,数据库本身占用较多的常用内存资源和硬盘资源,对存储服务器的硬件要求较高。另一方面,关系数据库的数据查询、读取效率低,尤其是进行海量数据查询时,这个问题更为突出。
发明内容
本发明实施例提供一种数据存储方法及设备,用以解决现有的关系型数据读取速度慢、查询效率低的问题。
为了实现上述目的,本发明实施例采用以下技术手段:
本发明实施例提供一种数据存储方法,所述方法应用于数据存储设备,数据存储设备中存储有数据结构编号与数据结构名称的对应关系,所述方法包括以下步骤:
当接收到写入数据请求时,根据数据结构将数据写入硬盘,生成数据记录,并根据数据记录生成一个或多个数据文件,所述数据文件为500-50M字节;
在数据写入完成后,建立数据结构编号、数据记录范围和数据文件范围的对应关系。
本发明实施例还提供一种数据存储方法,所述方法应用于数据存储设备,所述方法包括以下步骤:
当接收到写入数据请求时,根据数据结构将数据写入硬盘,生成数据记录,并根据数据记录生成一个或多个数据文件,所述数据文件为500-50M字节,包括主键数据文件和外键数据文件,主键数据文件包括多条主键数据记录,外键数据文件包括多条外键数据记录;
在主键数据和外键数据写入过程中,建立主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系。
本发明实施例还提供一种数据存储设备,所述设备包括:存储模块、数据写入模块和对应关系建立模块;
所述存储模块用于,存储数据结构编号与数据结构名称的对应关系;以及,存储数据写入模块生成的数据文件;
所述数据写入模块用于,在接收到写入数据请求时,根据数据结构将数据写入硬盘,生成数据记录,并根据数据记录生成一个或多个数据文件,所述数据文件为500-50M字节;
所述对应关系建立模块用于,在数据写入完成后,建立数据结构编号、数据记录范围和数据文件范围的对应关系,并将所述对应关系存储与所述存储模块。
本发明实施例提供一种数据存储设备,所述设备包括:数据写入模块、对应关系建立模块和存储模块;
所述数据写入模块用于,当接收到写入数据请求时,根据数据结构将数据写入硬盘,生成数据记录,并根据数据记录生成一个或多个数据文件,所述数据文件为500-50M字节,包括主键数据文件和外键数据文件,主键数据文件包括多条主键数据记录,外键数据文件包括多条外键数据记录;
所述对应关系建立模块用于,在主键数据和外键数据写入过程中,建立主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系;
所述存储模块用于,存储所述主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系;以及,存储所述主键数据文件和外键数据文件。
与现有技术相比,本发明的上述实施例具有以下有益技术效果:
本发明实施例提供的数据存储方案,通过将数据以500-50M字节的数据文件的形式进行存储,改进现有的数据库文件存储方式,将数据扁平化、碎片化处理,为数据快速读取提供保证,提高数据查询效率。通过建立数据结构编号与数据结构名称的对应关系,以及数据结构编号、数据记录范围和数据文件范围的对应关系,采用多进程方式并行在各数据文件中查找数据记录,对于海量数据查询,可以大幅提高数据读取效率。通过在写入数据过程中建立主键数据和外键数据的关联关系,可以根据主键数据记录精确查询到对应的外键数据文件,或者,根据外键数据记录精确查询到对应的主键数据文件,并将相应数据文件导入数据缓冲层,在数据缓冲层中进一步查询、读取相应的数据记录,数据缓冲层中只临时存放业务查询相关的数据文件,且该数据文件小,占用空间少,数据读取效率高,数据读取完成后,数据缓冲层的存储空间能够及时得到释放,数据存储成本低。此外,在写入数据时建立主键数据与外键数据的关联关系,在读取数据时采用非关系型读取方法读取数据,可以进一步提高数据查询、读取的效率,对于海量数据查询,可以大幅提高数据读取效率,尤其适用于有关联关系的海量数据查询的应用场景。
附图说明
图1为本发明实施例的数据存储原理示意图;
图2为本发明实施例的数据存储流程示意图之一;
图3为本发明实施例的数据存储流程示意图之二;
图4为本发明实施例的数据存储设备的结构示意图之一;
图5为本发明实施例的数据存储设备的结构示意图之二。
具体实施方式
针对现有技术存在的上述问题,本发明实施例提供了一种数据存储方案,将数据以500-50M字节的数据文件的形式进行存储,改进现有的数据库文件存储方式,将数据扁平化、碎片化处理,为数据快速读取提供保证,提高数据查询效率。下面结合附图对本发明实施例进行详细描述。
本发明提供一种数据存储方法,应用于数据存储设备,数据存储设备中存储有数据结构编号与数据结构名称的对应关系,数据结构编号是指,对同一种数据结构赋予的唯一的编号,数据结构编号可以为4位,数据结构名称是指,同一种数据结构的数据集合的名称。数据结构编号与数据结构名称的对应关系可以通过表结构的形式存储,例如存储为结构关系编号对应表。数据结构是在数据录入前预先设置好的,也就是说,某个数据结构的名称、编号以及该数据结构中各条数据记录包含的字段以及各字段定义都是已知的。
需要说明的是,数据可以包括主键数据和外键数据,主键数据与外键数据是相对而言的,或者,也可以不区分主键与外键。当数据包括主键数据和外键数据时,所述数据结构编号与数据结构名称的对应关系包括:主键数据结构编号与主键数据结构名称的对应关系以及外键数据结构编号与外键数据结构名称的对应关系。
为了清楚说明本发明的技术方案,以下结合图1和图2,以包括主键数据和外键数据的数据为例,进行详细说明。图1为本发明实施例的数据存储原理示意图,图2为本发明实施例的存储流程示意图,结合图1和图2所示,所述数据存储方法包括数据写入阶段和数据读取阶段,数据写入阶段包括以下步骤:
步骤201,当接收到写入数据请求时,根据数据结构将数据写入硬盘,生成数据记录,并根据数据记录生成一个或多个数据文件,所述数据文件为500-50M字节。
具体的,数据按照数据记录的形式存储于数据文件中,每个数据文件为500-50M字节(byte)。若单个数据文件小于500字节,则数据存储形成的数据文件量较大,后续数据读取、调用过程较为繁琐;若单个数据文件大于50M字节,则无法实现数据扁平化、碎片化存储,相应的,就无法提高数据查询效率。
以下以Linux操作系统为例,举例说明数据文件大小的划分原则。单机Linux操作系统允许的最大文件数量是32000个,考虑到数据读取效率,以磁盘空间的50%利用率为存储上限,单机可以最多建立16000个文件。每个目录存储一种类型的数据结构,通常,Linux操作系统的一个目录最多管理100个文件,因此,单机Linux操作系统最多可以建立16000/100=160个类型的数据结构的数据表。
单个数据表的大小dataTableSize=每条记录的字节数*记录的总数量。那么,各个类型的单个数据文件的大小TableSize可以按照以下公式计算:dataFileSize=dataTableSize/100。TotalTableSize=dataTableSize(1)+dataTableSize(2)+......+dataTableSize(n);其中,n小于或等于160。也就是说,针对所述160个数据结构类型,分别确定各类型数据结构的数据文件的大小。
当一个数据文件写满时,下一条数据记录写入另一个数据文件中,各数据文件依次生成。当一条数据记录写入完成时,在该条数据记录头上自动增加一个16位的数据记录编号,数据记录编号由4位数据结构编号和12位记录编号组成,数据记录根据数据记录的写入顺序依次编号。数据文件按照生成时间依次编号,即数据文件编号,数据文件编号可以为5位。
所述数据文件包括主键数据文件和外键数据文件,主键数据文件包括多条主键数据记录,外键数据文件包括多条外键数据记录。
主键数据和外键数据通过写入接口,以数据流的方式写入数据存储设备,主键数据和外键数据可以采用关联方式写入,或者采用非关联方式写入。
主键数据和外键数据采用关联方式写入的具体过程如下:根据主键数据结构将主键数据写入硬盘,生成主键数据记录,并根据主键数据记录生成一个或多个主键数据文件。在写入主键数据的过程中,根据外键数据结构将外键数据写入硬盘,生成外键数据记录,并根据外键数据记录生成一个或多个外键数据文件。
主键数据和外键数据采用非关联方式写入是指,主键数据和外键数据按照各自的数据结构分别写入,而不是像关联方式写入那样,在写入主键数据的过程中写入外键数据。需要说明的是,在采用非关联方式写入数据时,主键数据与外键数据依然存在关联关系。
主键数据文件和外键数据文件可以按照奇偶混写的方式存储,也就是说,主键数据文件和外键数据文件在硬盘中存储的时候,按照奇数和偶数混合在一起的方式占用硬盘数据块的空间编号,这样可以提高磁盘读取的命中效率。
步骤202,在数据写入完成后,建立数据结构编号、数据记录范围和数据文件范围的对应关系。
具体的,所述数据结构编号、数据记录范围、数据文件范围的对应关系包括:主键数据结构编号、主键数据记录范围、主键数据文件范围的对应关系,或者,建立外键数据结构编号、主键数据记录范围和主键数据文件范围的对应关系。所述数据结构编号、数据记录范围、数据文件范围的对应关系可以通过表结构的形式存储,例如存储为数据文件检索映射表。
当主键数据记录生成时,为主键数据记录分配唯一的主键数据记录编号,所述主键数据记录范围根据主键数据记录的起始编号和终止编号所确定。当主键数据文件生成时,为主键数据文件分配唯一的主键数据文件编号,所述主键数据文件范围根据主键数据文件的起始编号和终止编号确定。
主键数据记录范围可以通过主键数据记录编号表示,主键数据记录范围可以为24位,前12位为主键数据记录的起始编号,后12位为主键数据记录的终止编号。
主键数据文件范围可以通过主键文件记录编号表示,主键数据文件范围可以为10位,前5位为主键文件的起始编号,后5位为主键文件的终止编号。
当数据结构编号、数据记录范围和数据文件范围的对应关系(即数据文件检索映射表)建立完成后,数据写入阶段结束。当接收到第一数据读取请求时,进入数据读取阶段(即第一数据读取阶段),第一数据读取阶段包括以下步骤:
步骤203,当接收到第一读取数据请求时,从所述第一读取数据请求中获取数据结构名称。
步骤204,根据所述数据结构名称、所述数据结构编号与数据结构名称的对应关系以及所述数据结构编号、数据记录范围和数据文件范围的对应关系,确定数据文件范围和数据记录范围。
具体的,首先,根据所述数据结构名称以及结构关系对应表,确定数据结构编号,所述数据结构编号为主键数据结构编号或外键数据结构编号。
然后,根据数据结构编号确定数据文件范围和数据记录范围。如果数据结构编号为主键数据结构编号,则根据主键数据结构编号以及所述数据文件检索映射表中的主键数据结构编号、主键数据记录范围、主键数据文件范围的对应关系,确定主键数据文件范围和主键数据记录范围。如果数据结构编号为外键数据结构编号,则根据外键数据结构编号以及所述数据文件检索映射表中的外键数据结构编号、主键数据记录范围和主键数据文件范围的对应关系,确定主键数据文件范围和主键数据记录范围。
步骤205启动多个数据查询进程,并根据数据文件范围内的各数据文件,为各数据查询进程分配数据查询任务,以使各数据查询进程分别根据所述第一读取数据请求,在各自分配到的数据文件内查询相应的数据记录,并读取查询到的数据记录。
具体的,当各数据查询任务在各自分配到的数据文件内查询到相应的数据记录时,读取接口直接从硬盘上读取该数据记录(即第一数据),无需将该数据记录再导入数据缓冲层。
在本步骤中,通过启动更多的进程进行并行云方式查询数据,从而提高数据查询效率,采用云方式查询数据的具体实现方式属于现有技术,在此不再赘述。
通过上述步骤201-205可以看出,本发明将数据以500-50M字节的数据文件的形式进行存储,改进现有的数据库文件存储方式,将数据扁平化、碎片化处理,为数据快速读取提供保证,提高数据查询效率。通过建立数据结构编号与数据结构名称的对应关系,以及数据结构编号、数据记录范围和数据文件范围的对应关系,采用多进程方式并行在各数据文件中查找数据记录,可以大幅提高海量数据读取效率。
小文件存储是在分布式系统上实现的,小文件的管理是由分布式系统中各台设备的操作系统的文件句柄完成的,文件句柄即文件指针,用于定位文件的名称以及存储目录的位置。目前主流的操作系统如Unix、Windows等操作系统的文件句柄占用的资源非常少,通常为2个字节左右,操作系统不同,文件句柄大小不同。目前的计算机硬件和操作系统的处理能力已达到较高的技术水平,而处理大数量的文件句柄资源耗费非常小,处理效率高,相对于现有的关系型数据库所建立的庞大的索引,牺牲大量内存和硬盘资源的大文件,以及,现有的云数据库大数据遍历查询所付出的代价要小的多。
进一步的,为了实现关系型数据的查询和读取,如图1所示,还可以在数据写入阶段,建立主键数据与外键数据的关联关系,主键数据与外键数据的关联关系可以通过表结构的形式存储,例如存储为主外键关系映射表。因此,所述数据存储方法还可以包括以下步骤:
步骤301,在主键数据和外键数据写入过程中,建立主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系(即主外键关系映射表)。
在数据读取阶段,所述方法还包括以下步骤:
步骤302,当接收到第二读取数据请求时,从所述第二读取数据请求中获取主键数据记录编号或外键数据记录编号。
步骤303,根据所述主键数据记录编号以及所述主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系,确定外键数据文件编号和外键数据记录编号,或者,根据所述外键数据记录编号以及所述主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系,确定主键数据文件编号和主键数据记录编号。
具体的,首先确定从第二读取数据请求中获取到的数据记录编号是主键数据记录编号还是外键数据记录编号,如果是主键数据记录编号,则查询所述主外键关系映射表,从而确定出外键数据文件编号和外键数据记录编号。如果是外键数据记录编号,则查询所述主外键关系映射表,确定出主键数据文件编号和主键数据记录编号。
步骤304,根据所述外键数据文件编号确定外键数据文件,将所述外键数据文件导入数据缓冲层,并根据所述外键数据记录编号在所述外键数据文件中确定外键数据记录,或者,根据所述主键数据文件编号确定主键数据文件,将所述主键数据文件导入数据缓冲层,并根据所述主键数据记录编号在所述主键数据文件中确定主键数据记录。
具体的,若步骤303中确定出外键数据文件编号和外键数据记录编号,则根据所述外键数据文件编号确定外键数据文件,将所述外键数据文件导入数据缓冲层,并根据所述外键数据记录编号在所述外键数据文件中确定外键数据记录。若步骤303中确定出主键数据文件编号和主键数据记录编号,则将所述主键数据文件导入数据缓冲层,并根据所述主键数据记录编号在所述主键数据文件中确定主键数据记录。
步骤305,从数据缓冲层中读取所述外键数据记录或主键数据记录。
具体的,数据缓冲层用于将文件中的数据存储在内存中,如果数据是重复读取,则只需访问一次I/O文件,可以利用读取接口从数据缓冲层读取外键数据记录或主键数据记录(即第二数据)。
需要说明的是,步骤301-305可在步骤201之前执行,也可以在步骤205之后执行,也可以与步骤201-205同步执行。
通过上述步骤301-305可以看出,通过在写入数据过程中建立主键数据和外键数据的关联关系,可以根据主键数据记录精确查询到对应的外键数据文件,或者,根据外键数据记录精确查询到对应的主键数据文件,并将相应数据文件导入数据缓冲层,在数据缓冲层中进一步查询、读取相应的数据记录,数据缓冲层中只临时存放业务查询相关的数据文件,且该数据文件小,占用空间少,数据读取效率高,数据读取完成后,数据缓冲层的存储空间能够及时得到释放,数据存储成本低。而将上述两种数据存储、读取过程相结合,即将步骤201-205和步骤301-305相结合,可以在写入数据时建立主键数据与外键数据的关联关系,在读取数据时采用非关系型读取方法读取数据,进一步提高数据查询、读取的效率,对于海量数据查询,可以大幅提高数据读取效率,尤其适用于有关联关系的海量数据查询的应用场景。
为了清楚说明本发明的技术方案,以下结合一具体实例,对本发明实施例的数据存储方法进行详细说明。
数据包括主键数据和外键数据,主键数据是关于员工个人信息的数据,包括:身份证号、姓名、年龄、身高和省份几个字段,其中省份字段为外键。主键数据结构名称:T-Emplomee,主键数据结构编号:0001,员工数据共200条,每条员工数据记录依次包括:身份证号、姓名、年龄、身高和省份字段,例如:
110204197702030011张三38165内蒙;
130301197604010022李四39166北京。
外键数据是关于省份信息的数据,包括:省份名称、面积、所处位置和人口几个字段。外键数据结构名称:T-Province,外键数据结构编号:0002,省份数据共30条,每条省份数据记录依次包括:省份名称、面积、所处位置和人口字段。例如:
内蒙250万中国西北部1000万;
北京2万中国北部2000万。
因此,数据结构编号与数据结构名称的对应关系,即结构关系对应表中包括以下2种对应关系:
(1)主键数据结构编号0001与主键数据结构名称T-Emplomee的对应关系;
(2)外键数据结构编号0002与外键数据结构名称T-Province的对应关系。
当接收到写入数据请求时,根据主键数据结构将主键数据写入硬盘,生成200条主键数据记录,200条主键数据记录编号为0001000000000001至0001000000000200。根据主键数据记录生成2个主键数据文件00001和00002,2个主键数据文件均为500-50M字节。
根据外键数据结构将外键数据写入硬盘,生成30条外键数据记录,30条外键数据记录编号为0002000000000001至0002000000000030。根据外键数据记录生成2个外键数据文件00003和00004,2个外键数据文件均为500-50M字节。2个主键数据文件00001和00002以及2个外键数据文件00003和00004存储于同一目录下。
主键数据记录与外键数据记录采用关联方式写入,即写入员工数据时,当省份字段出现时,就写入省份数据结构中。
在主键数据和外键数据写入过程中,还可以建立主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系(即主外键关系映射表),例如,数据文件检索映射表可以包括:主键数据记录编号0001000000000001、主键数据文件编号00001、外键数据文件编号00003和外键数据记录编号0002000000000001的对应关系。
在数据写入完成后,建立数据结构编号、数据记录范围和数据文件范围的对应关系(即数据文件检索映射表),包括以下2种对应关系:
(3)主键数据结构编号0001、主键数据记录范围000000000001000000000200和主键数据文件范围00010002的对应关系;
(4)外键数据结构编号0002、主键数据记录范围000000000001000000000200和主键数据文件范围00010002的对应关系。
至此,数据写入阶段结束。
在本实施例中,第一数据读取请求为:在200条员工身份数据中查询(110204197702030011张三38165内蒙)这条数据。
当接收到第一读取数据请求时,从所述第一读取数据请求中获取数据结构名称。即用户输入查询条件:select*fromT-Emplomeewherename=“张三”,数据存储设备获取数据结构名称T-Emplomee,根据该数据结构名称T-Emplomee查询对应关系(1),确定数据结构编号0001,该数据结构编号为主键数据结构编号,因此,根据该主键数据结构编号0001查询对应关系(3),确定主键数据记录范围000000000001000000000200和主键数据文件范围00010002。
启动多个数据查询进程,并根据主键数据文件范围内的2个主键数据文件,为各数据查询进程分配数据查询任务,各数据查询进程分别根据所述第一读取数据请求(即name=张三),在各自分配到的主键数据文件内查询相应的主键数据记录(即110204197702030011张三38165内蒙这条数据记录),并读取查询到的主键数据记录。
通过采用小文件存储使得海量存储更加碎片化,并通过建立数据结构编号与数据结构名称的对应关系以及数据结构编号、数据记录范围和数据文件范围的对应关系,即可以启动更多的进程进行并行云方式查询,实现小数据海量查询的优势,从而提升查询效率。
在本发明实施例中,第二数据读取请求为:根据员工身份数据记录编号(即主键数据记录编号)0001000000000001(即对应的数据记录:110204197702030011张三38165内蒙),查询到对应的外键数据(省份数据):内蒙250万中国西北部1000万。
当接收到第二读取数据请求时,从第二读取数据请求中获取主键数据记录编号0001000000000001,根据主键数据记录编号0001000000000001,查询主外键关系映射表,确定出外键数据文件编号00003和外键数据记录编号0002000000000001。
根据外键数据文件编号00003将相应的外键数据文件导入数据缓冲层,然后根据外键数据记录编号0002000000000001,在数据缓冲层内的该外键数据文件中确定出对应的外键数据记录,最后,利用读取接口从数据缓冲层中读取该条外键数据记录(即内蒙250万中国西北部1000万这条数据记录)。
通过建立主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系,可以根据主键或外键数据记录精确查询到对应的外键或主键数据文件编号以及外键或主键数据记录编号,然后将相应的外键或主键数据文件导入到缓冲层进行查询,并进一步读取相关的数据记录,能够实现现有主流关系型数据库,如Oracle,mysql,主、外键数据之间的关系型查询功能,而且比现有主流关系型数据库占用内存小,在数据缓冲层中只调用所需的业务数据,数据及时释放,存储成本低。本发明的数据文件只有500byte,是一种极小的文件,当小文件导入内存后查询效率会提高。这种方法和目前采用大数据大文件进行数据库设计的思路完全不同,但是优势明显。
由此可以看出,本发明的数据存储方案无论是在海量非关系型数据查询方面,还是在有关联关系的主、外键数据查询方面,都具备效率高,灵活方便的特点。
通过将两种数据存储方案相结合,例如,先执行关系型数据查询,后执行云方式数据查询,可以实现混合查询。这样完全克服了目前云数据库(如Hbase)只擅长非关系型查询,而关系型数据库(如Oracle,mysql)只擅长关系型查询的缺点,本发明的数据存储方案可以用于有关联关系的海量数据查询的应用场景,适用范围更广泛。
需要说明的是,有关联关系的主、外键数据存储方案可以独立实现,以下就该技术方案进行详细说明。
本发明另一实施例还提供一种数据存储方法,所述方法应用于数据存储设备,如图3所示,所述方法包括以下步骤:
步骤401,当接收到写入数据请求时,根据数据结构将数据写入硬盘,生成数据记录,并根据数据记录生成一个或多个数据文件,所述数据文件为500-50M字节,包括主键数据文件和外键数据文件,主键数据文件包括多条主键数据记录,外键数据文件包括多条外键数据记录。
具体的,数据的写入方式以及数据记录、数据文件的生成方式、存储方式均如前所述,在此不再赘述。
步骤402,在主键数据和外键数据写入过程中,建立主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系。
进一步的,所述方法还包括:
步骤403,当接收到第二读取数据请求时,从所述第二读取数据请求中获取主键数据记录编号或外键数据记录编号。
步骤404,根据所述主键数据记录编号以及所述主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系,确定外键数据文件编号和外键数据记录编号,或者,根据所述外键数据记录编号以及所述主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系,确定主键数据文件编号和主键数据记录编号。
步骤405,根据所述外键数据文件编号确定外键数据文件,将所述外键数据文件导入数据缓冲层,并根据所述外键数据记录编号在所述外键数据文件中确定外键数据记录,或者,根据所述主键数据文件编号确定主键数据文件,将所述主键数据文件导入数据缓冲层,并根据所述主键数据记录编号在所述主键数据文件中确定主键数据记录。
步骤406,从数据缓冲层中读取所述外键数据记录或主键数据记录。
其中,步骤403-406的具体实现方式如前所述,在此不再赘述。
基于相同的技术构思,本发明实施例还提供一种数据存储设备,如图4所示,该数据存储设备可以包括:存储模块41、数据写入模块42和对应关系建立模块43。
存储模块41用于,存储数据结构编号与数据结构名称的对应关系;以及,存储数据写入模块42生成的数据文件。
数据写入模块42用于,在接收到写入数据请求时,根据数据结构将数据写入硬盘,生成数据记录,并根据数据记录生成一个或多个数据文件,所述数据文件为500-50M字节。
对应关系建立模块43用于,在数据写入完成后,建立数据结构编号、数据记录范围和数据文件范围的对应关系,并将所述对应关系存储于存储模块41。
进一步的,所述存储设备,还可以包括第一处理模块44和数据读取模块45。
第一处理模块44用于,当接收到第一读取数据请求时,从所述第一读取数据请求中获取数据结构名称;根据所述数据结构名称、所述数据结构编号与数据结构名称的对应关系以及所述数据结构编号、数据记录范围和数据文件范围的对应关系,确定数据文件范围和数据记录范围;启动多个数据查询进程,并根据数据文件范围内的各数据文件,为各数据查询进程分配数据查询任务,以使各数据查询进程分别根据所述第一读取数据请求,在各自分配到的数据文件内查询相应的数据记录。
数据读取模块45用于,读取所述第一处理模块44查询到的数据记录。
优选的,所述数据结构编号与数据结构名称的对应关系包括:主键数据结构编号与主键数据结构名称的对应关系以及外键数据结构编号与外键数据结构名称的对应关系。
所述数据文件包括主键数据文件和外键数据文件,主键数据文件包括多条主键数据记录,外键数据文件包括多条外键数据记录。
所述数据结构编号、数据记录范围、数据文件范围的对应关系包括:主键数据结构编号、主键数据记录范围、主键数据文件范围的对应关系,或者,外键数据结构编号、主键数据记录范围和主键数据文件范围的对应关系。
具体的,数据写入模块42具体用于,采用关联方式或者非关联方式写入主键数据和外键数据;当主键数据和外键数据采用关联方式写入时,根据主键数据结构将主键数据写入硬盘,生成主键数据记录,并根据主键数据记录生成一个或多个主键数据文件,在写入主键数据的过程中,根据外键数据结构将外键数据写入硬盘,生成外键数据记录,并根据外键数据记录生成一个或多个外键数据文件。
具体的,对应关系建立模块43具体用于,当主键数据记录生成时,为主键数据记录分配唯一的主键数据记录编号,所述主键数据记录范围根据主键数据记录的起始编号和终止编号所确定;当主键数据文件生成时,为主键数据文件分配唯一的主键数据文件编号,所述主键数据文件范围根据主键数据文件的起始编号和终止编号确定。
具体的,第一处理模块44具体用于,根据所述数据结构名称以及所述数据结构编号与数据结构名称的对应关系,确定数据结构编号,所述数据结构编号为主键数据结构编号或外键数据结构编号;根据主键数据结构编号以及所述主键数据结构编号、主键数据记录范围、主键数据文件范围的对应关系,确定主键数据文件范围和主键数据记录范围,或者,根据外键数据结构编号以及所述外键数据结构编号、主键数据记录范围和主键数据文件范围的对应关系,确定主键数据文件范围和主键数据记录范围。
进一步的,对应关系建立模块43还用于,在主键数据和外键数据写入过程中,建立主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系;
存储模块41还用于,存储所述主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系。
进一步的,所述存储设备还可以包括第二处理模块46,第二处理模块46用于,当接收到第二读取数据请求时,从所述第二读取数据请求中获取主键数据记录编号或外键数据记录编号;根据所述主键数据记录编号以及所述主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系,确定外键数据文件编号和外键数据记录编号,或者,根据所述外键数据记录编号以及所述主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系,确定主键数据文件编号和主键数据记录编号;根据所述外键数据文件编号确定外键数据文件,将所述外键数据文件导入数据缓冲层,并根据所述外键数据记录编号在所述外键数据文件中确定外键数据记录,或者,根据所述主键数据文件编号确定主键数据文件,将所述主键数据文件导入数据缓冲层,并根据所述主键数据记录编号在所述主键数据文件中确定主键数据记录。
数据读取模块45还用于,从数据缓冲层中读取所述外键数据记录或主键数据记录。
基于相同的技术构思,本发明实施例还提供一种数据存储设备,如图5所示,该数据存储设备可以包括:数据写入模块51、对应关系建立模块52和存储模块53。
数据写入模块51用于,当接收到写入数据请求时,根据数据结构将数据写入硬盘,生成数据记录,并根据数据记录生成一个或多个数据文件,所述数据文件为500-50M字节,包括主键数据文件和外键数据文件,主键数据文件包括多条主键数据记录,外键数据文件包括多条外键数据记录。
对应关系建立模块52用于,在主键数据和外键数据写入过程中,建立主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系。
存储模块53用于,存储所述主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系;以及,存储所述主键数据文件和外键数据文件。
进一步的,所述数据存储设备还可以包括第二处理模块54和数据读取模块55。
第二处理模块54用于,当接收到第二读取数据请求时,从所述第二读取数据请求中获取主键数据记录编号或外键数据记录编号;根据所述主键数据记录编号以及所述主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系,确定外键数据文件编号和外键数据记录编号,或者,根据所述外键数据记录编号以及所述主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系,确定主键数据文件编号和主键数据记录编号;根据所述外键数据文件编号确定外键数据文件,将所述外键数据文件导入数据缓冲层,并根据所述外键数据记录编号在所述外键数据文件中确定外键数据记录,或者,根据所述主键数据文件编号确定主键数据文件,将所述主键数据文件导入数据缓冲层,并根据所述主键数据记录编号在所述主键数据文件中确定主键数据记录。
数据读取模块55用于,从数据缓冲层中读取第二处理模块54确定出的外键数据记录或主键数据记录。
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。
Claims (10)
1.一种数据存储方法,其特征在于,所述方法应用于数据存储设备,数据存储设备中存储有数据结构编号与数据结构名称的对应关系,所述方法包括以下步骤:
当接收到写入数据请求时,根据数据结构将数据写入硬盘,生成数据记录,并根据数据记录生成一个或多个数据文件,所述数据文件为500-50M字节;
在数据写入完成后,建立数据结构编号、数据记录范围和数据文件范围的对应关系。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到第一读取数据请求时,从所述第一读取数据请求中获取数据结构名称;
根据所述数据结构名称、所述数据结构编号与数据结构名称的对应关系以及所述数据结构编号、数据记录范围和数据文件范围的对应关系,确定数据文件范围和数据记录范围;
启动多个数据查询进程,并根据数据文件范围内的各数据文件,为各数据查询进程分配数据查询任务,以使各数据查询进程分别根据所述第一读取数据请求,在各自分配到的数据文件内查询相应的数据记录,并读取查询到的数据记录。
3.如权利要求2所述的方法,其特征在于,所述数据结构编号与数据结构名称的对应关系包括:主键数据结构编号与主键数据结构名称的对应关系以及外键数据结构编号与外键数据结构名称的对应关系;
所述数据文件包括主键数据文件和外键数据文件,主键数据文件包括多条主键数据记录,外键数据文件包括多条外键数据记录;
所述数据结构编号、数据记录范围、数据文件范围的对应关系包括:主键数据结构编号、主键数据记录范围、主键数据文件范围的对应关系,或者,外键数据结构编号、主键数据记录范围和主键数据文件范围的对应关系。
4.如权利要求3所述的方法,其特征在于,当主键数据记录生成时,为主键数据记录分配唯一的主键数据记录编号,所述主键数据记录范围根据主键数据记录的起始编号和终止编号所确定;
当主键数据文件生成时,为主键数据文件分配唯一的主键数据文件编号,所述主键数据文件范围根据主键数据文件的起始编号和终止编号确定;
所述根据所述数据结构名称、所述数据结构编号与数据结构名称的对应关系以及所述数据结构编号、数据记录范围和数据文件范围的对应关系,确定数据文件范围和数据记录范围,具体包括:
根据所述数据结构名称以及所述数据结构编号与数据结构名称的对应关系,确定数据结构编号,所述数据结构编号为主键数据结构编号或外键数据结构编号;
根据主键数据结构编号以及所述主键数据结构编号、主键数据记录范围、主键数据文件范围的对应关系,确定主键数据文件范围和主键数据记录范围,或者,根据外键数据结构编号以及所述外键数据结构编号、主键数据记录范围和主键数据文件范围的对应关系,确定主键数据文件范围和主键数据记录范围。
5.如权利要求3或4所述的方法,其特征在于,所述方法还包括:在主键数据和外键数据写入过程中,建立主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系;
所述方法还包括:
当接收到第二读取数据请求时,从所述第二读取数据请求中获取主键数据记录编号或外键数据记录编号;
根据所述主键数据记录编号以及所述主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系,确定外键数据文件编号和外键数据记录编号,或者,根据所述外键数据记录编号以及所述主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系,确定主键数据文件编号和主键数据记录编号;
根据所述外键数据文件编号确定外键数据文件,将所述外键数据文件导入数据缓冲层,并根据所述外键数据记录编号在所述外键数据文件中确定外键数据记录,或者,根据所述主键数据文件编号确定主键数据文件,将所述主键数据文件导入数据缓冲层,并根据所述主键数据记录编号在所述主键数据文件中确定主键数据记录;
从数据缓冲层中读取所述外键数据记录或主键数据记录。
6.一种数据存储设备,其特征在于,包括:存储模块、数据写入模块和对应关系建立模块;
所述存储模块用于,存储数据结构编号与数据结构名称的对应关系;以及,存储数据写入模块生成的数据文件;
所述数据写入模块用于,在接收到写入数据请求时,根据数据结构将数据写入硬盘,生成数据记录,并根据数据记录生成一个或多个数据文件,所述数据文件为500-50M字节;
所述对应关系建立模块用于,在数据写入完成后,建立数据结构编号、数据记录范围和数据文件范围的对应关系,并将所述对应关系存储于所述存储模块。
7.如权利要求6所述的存储设备,其特征在于,还包括第一处理模块和数据读取模块;
所述第一处理模块用于,当接收到第一读取数据请求时,从所述第一读取数据请求中获取数据结构名称;根据所述数据结构名称、所述数据结构编号与数据结构名称的对应关系以及所述数据结构编号、数据记录范围和数据文件范围的对应关系,确定数据文件范围和数据记录范围;启动多个数据查询进程,并根据数据文件范围内的各数据文件,为各数据查询进程分配数据查询任务,以使各数据查询进程分别根据所述第一读取数据请求,在各自分配到的数据文件内查询相应的数据记录;
所述数据读取模块用于,读取所述第一处理模块查询到的数据记录。
8.如权利要求7所述的存储设备,其特征在于,所述数据结构编号与数据结构名称的对应关系包括:主键数据结构编号与主键数据结构名称的对应关系以及外键数据结构编号与外键数据结构名称的对应关系;
所述数据文件包括主键数据文件和外键数据文件,主键数据文件包括多条主键数据记录,外键数据文件包括多条外键数据记录;
所述数据结构编号、数据记录范围、数据文件范围的对应关系包括:主键数据结构编号、主键数据记录范围、主键数据文件范围的对应关系,或者,外键数据结构编号、主键数据记录范围和主键数据文件范围的对应关系。
9.如权利要求8所述的存储设备,其特征在于,所述对应关系建立模块具体用于,当主键数据记录生成时,为主键数据记录分配唯一的主键数据记录编号,所述主键数据记录范围根据主键数据记录的起始编号和终止编号所确定;当主键数据文件生成时,为主键数据文件分配唯一的主键数据文件编号,所述主键数据文件范围根据主键数据文件的起始编号和终止编号确定;
所述第一处理模块具体用于,根据所述数据结构名称以及所述数据结构编号与数据结构名称的对应关系,确定数据结构编号,所述数据结构编号为主键数据结构编号或外键数据结构编号;根据主键数据结构编号以及所述主键数据结构编号、主键数据记录范围、主键数据文件范围的对应关系,确定主键数据文件范围和主键数据记录范围,或者,根据外键数据结构编号以及所述外键数据结构编号、主键数据记录范围和主键数据文件范围的对应关系,确定主键数据文件范围和主键数据记录范围。
10.如权利要求8或9所述的存储设备,其特征在于,所述对应关系建立模块还用于,在主键数据和外键数据写入过程中,建立主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系;
存储模块还用于,存储所述主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系;
所述的存储设备还包括第二处理模块,所述第二处理模块用于,当接收到第二读取数据请求时,从所述第二读取数据请求中获取主键数据记录编号或外键数据记录编号;根据所述主键数据记录编号以及所述主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系,确定外键数据文件编号和外键数据记录编号,或者,根据所述外键数据记录编号以及所述主键数据记录编号、主键数据文件编号、外键数据文件编号和外键数据记录编号的对应关系,确定主键数据文件编号和主键数据记录编号;根据所述外键数据文件编号确定外键数据文件,将所述外键数据文件导入数据缓冲层,并根据所述外键数据记录编号在所述外键数据文件中确定外键数据记录,或者,根据所述主键数据文件编号确定主键数据文件,将所述主键数据文件导入数据缓冲层,并根据所述主键数据记录编号在所述主键数据文件中确定主键数据记录;
所述数据读取模块还用于,从数据缓冲层中读取所述外键数据记录或主键数据记录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510767359.6A CN105302912B (zh) | 2015-11-11 | 2015-11-11 | 一种数据存储方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510767359.6A CN105302912B (zh) | 2015-11-11 | 2015-11-11 | 一种数据存储方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105302912A true CN105302912A (zh) | 2016-02-03 |
CN105302912B CN105302912B (zh) | 2018-06-29 |
Family
ID=55200181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510767359.6A Active CN105302912B (zh) | 2015-11-11 | 2015-11-11 | 一种数据存储方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105302912B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108829897A (zh) * | 2018-07-03 | 2018-11-16 | 沈文策 | 数据存储方法及数据存储系统 |
CN115037610A (zh) * | 2022-04-24 | 2022-09-09 | 浙江清捷智能科技有限公司 | 一种自动配置系统及自动配置方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101039278A (zh) * | 2007-03-30 | 2007-09-19 | 华为技术有限公司 | 数据管理方法及系统 |
CN101430685A (zh) * | 2007-11-06 | 2009-05-13 | 施耐德电器工业公司 | 下载方法及其系统 |
CN101848248A (zh) * | 2010-06-04 | 2010-09-29 | 华为技术有限公司 | 一种规则查找方法和装置 |
CN101917396A (zh) * | 2010-06-25 | 2010-12-15 | 清华大学 | 一种网络文件系统中数据的实时去重和传输方法 |
CN102662992A (zh) * | 2012-03-14 | 2012-09-12 | 北京搜狐新媒体信息技术有限公司 | 一种海量小文件的存储、访问方法及装置 |
US8452945B2 (en) * | 2002-09-17 | 2013-05-28 | Hewlett-Packard Development Company, L.P. | Indirect indexing instructions |
CN103186617A (zh) * | 2011-12-30 | 2013-07-03 | 北京新媒传信科技有限公司 | 一种存储数据的方法和装置 |
-
2015
- 2015-11-11 CN CN201510767359.6A patent/CN105302912B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8452945B2 (en) * | 2002-09-17 | 2013-05-28 | Hewlett-Packard Development Company, L.P. | Indirect indexing instructions |
CN101039278A (zh) * | 2007-03-30 | 2007-09-19 | 华为技术有限公司 | 数据管理方法及系统 |
CN101430685A (zh) * | 2007-11-06 | 2009-05-13 | 施耐德电器工业公司 | 下载方法及其系统 |
CN101848248A (zh) * | 2010-06-04 | 2010-09-29 | 华为技术有限公司 | 一种规则查找方法和装置 |
CN101917396A (zh) * | 2010-06-25 | 2010-12-15 | 清华大学 | 一种网络文件系统中数据的实时去重和传输方法 |
CN103186617A (zh) * | 2011-12-30 | 2013-07-03 | 北京新媒传信科技有限公司 | 一种存储数据的方法和装置 |
CN102662992A (zh) * | 2012-03-14 | 2012-09-12 | 北京搜狐新媒体信息技术有限公司 | 一种海量小文件的存储、访问方法及装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108829897A (zh) * | 2018-07-03 | 2018-11-16 | 沈文策 | 数据存储方法及数据存储系统 |
CN115037610A (zh) * | 2022-04-24 | 2022-09-09 | 浙江清捷智能科技有限公司 | 一种自动配置系统及自动配置方法 |
CN115037610B (zh) * | 2022-04-24 | 2023-09-22 | 浙江清捷智能科技有限公司 | 一种自动配置系统及自动配置方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105302912B (zh) | 2018-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220057940A1 (en) | Method and Apparatus for SSD Storage Access | |
JP5902323B2 (ja) | コンテンツ派生データのメモリ内配置方法および装置 | |
US8868576B1 (en) | Storing files in a parallel computing system based on user-specified parser function | |
CN108563711A (zh) | 一种基于时间节点的时序数据存储方法 | |
CN102915278A (zh) | 重复数据删除方法 | |
CN105468642A (zh) | 数据的存储方法及装置 | |
US11636072B2 (en) | Parallel processing of a keyed index file system | |
CN103150395B (zh) | 基于ssd的文件系统目录路径解析方法 | |
CN108399050B (zh) | 一种数据处理方法及装置 | |
WO2014110940A1 (en) | A method, apparatus and system for storing, reading the directory index | |
CN104536908B (zh) | 一种面向单机的海量小记录高效存储管理方法 | |
CN109407985B (zh) | 一种数据管理的方法以及相关装置 | |
CN102253985B (zh) | 一种文件系统数据的管理方法及系统 | |
CN102779138A (zh) | 实时数据的硬盘存取方法 | |
CN107408132B (zh) | 跨越多个类型的存储器移动分层数据对象的方法和系统 | |
CN110427347A (zh) | 重复数据删除的方法、装置、存储节点及存储介质 | |
CN109460406A (zh) | 一种数据处理方法及装置 | |
CN115470156A (zh) | 基于rdma的内存使用方法、系统、电子设备和存储介质 | |
CN105302912A (zh) | 一种数据存储方法及设备 | |
US20210034292A1 (en) | Encoded virtual block deferred reference counting | |
WO2023235040A1 (en) | File system improvements for zoned storage device operations | |
US20160335198A1 (en) | Methods and system for maintaining an indirection system for a mass storage device | |
CN107526548B (zh) | 多namespace的固态硬盘及数据删除方法与装置 | |
CN111782588A (zh) | 一种文件读取方法、装置、设备和介质 | |
CN101751390B (zh) | 物件导向储存装置的磁盘配置方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |