CN104021161A - 一种聚簇存储方法及装置 - Google Patents
一种聚簇存储方法及装置 Download PDFInfo
- Publication number
- CN104021161A CN104021161A CN201410228979.8A CN201410228979A CN104021161A CN 104021161 A CN104021161 A CN 104021161A CN 201410228979 A CN201410228979 A CN 201410228979A CN 104021161 A CN104021161 A CN 104021161A
- Authority
- CN
- China
- Prior art keywords
- data
- internal memory
- storage medium
- row
- sequence
- 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/22—Indexing; Data structures therefor; Storage structures
-
- 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/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/08—Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- 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/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning 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/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/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24557—Efficient disk access during query execution
-
- 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
- G06F16/285—Clustering or classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/16—General purpose computing application
- G06F2212/163—Server or database system
Abstract
本发明实施例提供一种聚簇存储方法及装置,涉及计算机技术领域,能够在对数据装载性能和数据更新性能影响较小的同时,提高数据查询性能和数据压缩效率。该方法包括:将待存储的第一数据逐行缓存至数据库系统中的本地内存中;确定第一排序列,第一排序列用于对本地内存中已缓存的数据进行排序;若本地内存中已缓存的第二数据满足预设条件,则根据第一排序列对第二数据进行排序,第二数据为第一数据中的已缓存至本地内存中的数据;将排序后的第二数据聚簇存储至数据库系统中的存储介质中。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种聚簇存储方法及装置。
背景技术
在数据库中,一般采用数据表存储数据,常见的数据表存储结构有三种,分别为堆表(Heap Table)、索引组织表(Index OrganizationTable,IOT)和聚簇表(Cluster Table)。
现有技术中,采用堆表在存储介质中存储数据时,由于每行数据均是按照数据插入的自然顺序无序存储的,因此,对数据装载性能和数据更新性能影响较小。进一步地,采用堆表在存储介质中存储数据后,若需在该堆表的数据中查询某个数据,则需从堆表的第一行开始逐行进行对比,直到查找到该某个数据。
然而,采用堆表在存储介质中存储数据时,由于数据为无序存储的,且在堆表中查询数据时,需从堆表的第一行开始逐行进行对比,因此,虽然对数据装载性能和数据更新性能的影响较小,但是数据压缩比和数据查询性能较低。
发明内容
本发明的实施例提供一种聚簇存储方法及装置,能够在对数据装载性能和数据更新性能影响较小的同时,提高数据查询性能和数据压缩效率。
本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供一种聚簇存储方法,应用于数据库系统中,包括:
将待存储的第一数据逐行缓存至所述数据库系统中的本地内存中;
确定第一排序列,所述第一排序列用于对所述本地内存中已缓存的数据进行排序;
若所述本地内存中已缓存的第二数据满足预设条件,则根据所述第一排序列对所述第二数据进行排序,所述第二数据为所述第一数据中的已缓存至所述本地内存中的数据;
将排序后的所述第二数据聚簇存储至所述数据库系统中的存储介质中。
在第一方面的第一种可能的实现方式中,
所述预设条件用于表征所述本地内存中已缓存的第二数据的数据量与所述本地内存允许存储的数据量之间的关系。
结合前述的第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述预设条件为所述第二数据的行数大于或等于第一预设阈值,
其中,所述若所述本地内存中已缓存的第二数据满足预设条件,则根据所述第一排序列对所述第二数据进行排序,具体包括:
若所述第二数据的行数大于或等于所述第一预设阈值,则根据所述第一排序列对所述第二数据进行排序。
结合前述的第一方面或第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述预设条件为所述第二数据占用所述本地内存的大小大于或等于第二预设阈值,
其中,所述若所述本地内存中已缓存的第二数据满足预设条件,则根据所述第一排序列对所述第二数据进行排序,具体包括:
若所述第二数据占用所述本地内存的大小大于或等于所述第二预设阈值,则根据所述第一排序列对所述第二数据进行排序。
结合前述的第一方面或第一方面的第一种可能的实现方式至第三种可能的实现方式中的任一种实现方式,在第四种可能的实现方式中,所述根据所述第一排序列对所述第二数据进行排序,具体包括:
根据所述第一排序列的数值大小或所述第一排序列的数值的哈希值大小对所述第二数据进行排序。
结合前述的第一方面或第一方面的第一种可能的实现方式至第四种可能的实现方式中的任一种实现方式,在第五种可能的实现方式中,所述将排序后的所述第二数据聚簇存储至所述数据库系统中的存储介质中,具体包括:
将排序后的所述第二数据聚簇存储至所述存储介质中的空闲物理块中,所述空闲物理块为除第三数据占用的物理块之外的物理块,所述第三数据为所述第一数据中在所述第二数据之前已聚簇存储至所述存储介质中的数据。
结合前述的第一方面或第一方面的第一种可能的实现方式至第五种可能的实现方式中的任一种实现方式,在第六种可能的实现方式中,
所述第一排序列包括物理列和表达式中的至少一个。
结合前述的第一方面或第一方面的第一种可能的实现方式至第六种可能的实现方式中的任一种实现方式,在第七种可能的实现方式中,在所述第一数据全部存储至所述存储介质中之后,所述方法还包括:
确定查询列;
若所述查询列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行查询操作。
结合第一方面的第七种可能的实现方式,在第八种可能的实现方式中,所述确定查询列之后,根据所述第一个排序列,对所述第一数据进行查询操作之前,所述方法还包括:
将所述存储介质中存储的所述第一数据读入所述本地内存中;
其中,所述根据所述第一个排序列,对所述第一数据进行查询操作,具体包括:
根据所述第一个排序列,在所述本地内存中采用二分查找方式对所述第一数据的一个或多个数据页中的每个数据页进行查询操作。
结合前述的第一方面或第一方面的第一种可能的实现方式至第六种可能的实现方式中的任一种实现方式,在第九种可能的实现方式中,在所述第一数据全部存储至所述存储介质中之后,所述方法还包括:
确定第二排序列;
若所述第二排序列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行排序操作。
结合第一方面的第九种可能的实现方式,在第十种可能的实现方式中,所述确定第二排序列之后,根据所述第一个排序列,对所述第一数据进行排序操作之前,所述方法还包括:
将所述存储介质中存储的所述第一数据读入所述本地内存中;
其中,所述根据所述第一个排序列,对所述第一数据进行排序操作,具体包括:
根据所述第一个排序列,在所述本地内存中对所述第一数据进行归并排序。
结合前述的第一方面或第一方面的第一种可能的实现方式至第六种可能的实现方式中的任一种实现方式,在第十一种可能的实现方式中,在所述第一数据全部存储至所述存储介质中之后,所述方法还包括:
确定聚合列;
若所述聚合列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行聚合操作,所述聚合操作为在所述第一数据中查找最大值或最小值的操作。
结合第一方面的第十一种可能的实现方式,在第十二种可能的实现方式中,所述确定聚合列之后,根据所述第一个排序列,对所述第一数据进行聚合操作之前,所述方法还包括:
将所述存储介质中存储的所述第一数据读入所述本地内存中;
其中,所述根据所述第一个排序列,对所述第一数据进行聚合操作,具体包括:
根据所述第一个排序列,在所述本地内存中确定所述第一数据的一个或多个数据页中的每个数据页中的最大值或最小值;
依次比较所述每个数据页中的最大值或最小值,以确定所述第一数据中的最大值或最小值。
在第一方面的第十三种可能的实现方式中,所述将待存储的第一数据逐行缓存至所述数据库系统中的本地内存中之前,所述方法还包括:
在所述存储介质中创建数据表,所述数据表用于装载所述第一数据;
其中,所述将排序后的所述第二数据聚簇存储至所述数据库系统中的存储介质中,具体包括:
将排序后的所述第二数据逐行插入所述数据表中,以将排序后的所述第二数据聚簇存储至所述存储介质中。
第二方面,本发明实施例提供一种聚簇存储装置,应用于数据库系统中,包括:
缓存单元,用于将待存储的第一数据逐行缓存至所述数据库系统中的本地内存中;
确定单元,用于确定第一排序列,所述第一排序列用于对所述本地内存中已缓存的数据进行排序;
操作单元,用于若所述缓存单元在所述本地内存中已缓存的第二数据满足预设条件,则根据所述确定单元确定的所述第一排序列,对所述第二数据进行排序,所述第二数据为所述第一数据中的已缓存至所述本地内存中的数据;
存储单元,用于将所述操作单元排序后的所述第二数据聚簇存储至所述数据库系统中的存储介质中。
在第二方面的第一种可能的实现方式中,
所述预设条件用于表征所述本地内存中已缓存的第二数据的数据量与所述本地内存允许存储的数据量之间的关系。
结合前述的第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述预设条件为所述第二数据的行数大于或等于第一预设阈值,
其中,所述操作单元,具体用于若所述第二数据的行数大于或等于所述第一预设阈值,则根据所述第一排序列对所述第二数据进行排序。
结合前述的第二方面或第二方面的第一种可能的实现方式,在第三种可能的实现方式中,所述预设条件为所述第二数据占用所述本地内存的大小大于或等于第二预设阈值,
其中,所述操作单元,具体用于若所述第二数据占用所述本地内存的大小大于或等于所述第二预设阈值,则根据所述第一排序列对所述第二数据进行排序。
结合前述的第二方面或第二方面的第一种可能的实现方式至第三种可能的实现方式中的任一种实现方式,在第四种可能的实现方式中,
所述操作单元,具体用于根据所述确定单元确定的所述第一排序列的数值大小或所述第一排序列的数值的哈希值大小对所述第二数据进行排序。
结合前述的第二方面或第二方面的第一种可能的实现方式至第四种可能的实现方式中的任一种实现方式,在第五种可能的实现方式中,
所述存储单元,具体用于将所述操作单元排序后的所述第二数据聚簇存储至所述存储介质中的空闲物理块中,所述空闲物理块为除第三数据占用的物理块之外的物理块,所述第三数据为所述第一数据中在所述第二数据之前已聚簇存储至所述存储介质中的数据。
结合前述的第二方面或第二方面的第一种可能的实现方式至第五种可能的实现方式中的任一种实现方式,在第六种可能的实现方式中,
所述确定单元确定的所述第一排序列包括物理列和表达式中的至少一个。
结合前述的第二方面或第二方面的第一种可能的实现方式至第六种可能的实现方式中的任一种实现方式,在第七种可能的实现方式中,
所述确定单元,还用于在所述存储单元将所述第一数据全部存储至所述存储介质中之后,确定查询列;
所述操作单元,还用于若所述确定单元确定的所述查询列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行查询操作。
结合第二方面的第七种可能的实现方式,在第八种可能的实现方式中,
所述缓存单元,还用于在所述确定单元确定所述查询列之后,所述操作单元根据所述第一个排序列,对所述第一数据进行查询操作之前,将所述存储介质中存储的所述第一数据读入所述本地内存中;
其中,所述操作单元,具体用于根据所述第一个排序列,在所述本地内存中采用二分查找方式对所述缓存单元缓存的所述第一数据的一个或多个数据页中的每个数据页进行查询操作。
结合前述的第二方面或第二方面的第一种可能的实现方式至第六种可能的实现方式中的任一种实现方式,在第九种可能的实现方式中,
所述确定单元,还用于在所述存储单元将所述第一数据全部存储至所述存储介质中之后,确定第二排序列;
所述操作单元,还用于若所述确定单元确定的所述第二排序列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行排序操作。
结合第二方面的第九种可能的实现方式,在第十种可能的实现方式中,
所述缓存单元,还用于在所述确定单元确定所述第二排序列之后,所述操作单元根据所述第一个排序列,对所述第一数据进行排序操作之前,将所述存储介质中存储的所述第一数据读入所述本地内存中;
其中,所述操作单元,具体用于根据所述第一个排序列,在所述本地内存中对所述缓存单元缓存的所述第一数据进行归并排序。
结合前述的第二方面或第二方面的第一种可能的实现方式至第六种可能的实现方式中的任一种实现方式,在第十一种可能的实现方式中,
所述确定单元,还用于在所述存储单元将所述第一数据全部存储至所述存储介质中之后,确定聚合列;
所述操作单元,还用于若所述确定单元确定的所述聚合列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行聚合操作,所述聚合操作为在所述第一数据中查找最大值或最小值的操作。
结合第二方面的第十一种可能的实现方式,在第十二种可能的实现方式中,
所述缓存单元,还用于在所述确定单元确定所述聚合列之后,所述操作单元根据所述第一个排序列,对所述第一数据进行聚合操作之前,将所述存储介质中存储的所述第一数据读入所述本地内存中;
其中,所述操作单元,具体用于根据所述第一个排序列,在所述本地内存中确定所述缓存单元缓存的所述第一数据的一个或多个数据页中的每个数据页中的最大值或最小值,并依次比较所述每个数据页中的最大值或最小值,以确定所述第一数据中的最大值或最小值。
在第二方面的第十三种可能的实现方式中,所述聚簇存储装置还包括创建单元,
所述创建单元,用于在所述缓存单元将待存储的第一数据逐行缓存至所述数据库系统中的本地内存中之前,在所述存储介质中创建数据表,所述数据表用于装载所述第一数据;
其中,所述操作单元,具体用于将排序后的所述第二数据逐行插入所述创建单元创建的所述数据表中,以将排序后的所述第二数据聚簇存储至所述存储介质中。
第三方面,本发明实施例提供一种数据库系统,包括:
底层存储介质;
内存,耦合至所述底层存储介质,用于作为所述底层存储介质的缓存,其中所述底层存储介质中一个或多个数据块映射到所述缓存中的一个目标数据块;
处理器,耦合至所述内存,所述处理器执行所述内存中的指令,用于:
将待存储的第一数据逐行缓存至所述内存中,并确定第一排序列,且若所述内存中已缓存的第二数据满足预设条件,则根据所述第一排序列对所述第二数据进行排序,以及将排序后的所述第二数据聚簇存储至所述底层存储介质中,所述第一排序列用于对所述内存中已缓存的数据进行排序,所述第二数据为所述第一数据中的已缓存至所述内存中的数据。
在第三方面的第一种可能的实现方式中,
所述预设条件用于表征所述内存中已缓存的第二数据的数据量与所述内存允许存储的数据量之间的关系。
结合前述的第三方面或第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述预设条件为所述第二数据的行数大于或等于第一预设阈值,
其中,所述处理器,具体用于若所述第二数据的行数大于或等于所述第一预设阈值,则根据所述第一排序列对所述第二数据进行排序。
结合前述的第三方面或第三方面的第一种可能的实现方式,在第三种可能的实现方式中,所述预设条件为所述第二数据占用所述内存的大小大于或等于第二预设阈值,
其中,所述处理器,具体用于若所述第二数据占用所述内存的大小大于或等于所述第二预设阈值,则根据所述第一排序列对所述第二数据进行排序。
结合前述的第三方面或第三方面的第一种可能的实现方式至第三种可能的实现方式中的任一种实现方式,在第四种可能的实现方式中,
所述处理器,具体用于根据所述第一排序列的数值大小或所述第一排序列的数值的哈希值大小对所述第二数据进行排序。
结合前述的第三方面或第三方面的第一种可能的实现方式至第四种可能的实现方式中的任一种实现方式,在第五种可能的实现方式中,
所述处理器,具体用于将所述第二数据聚簇存储至所述底层存储介质中的空闲物理块中,所述空闲物理块为除第三数据占用的物理块之外的物理块,所述第三数据为所述第一数据中在所述第二数据之前已聚簇存储至所述底层存储介质中的数据。
结合前述的第三方面或第三方面的第一种可能的实现方式至第五种可能的实现方式中的任一种实现方式,在第六种可能的实现方式中,
所述处理器确定的所述第一排序列包括物理列和表达式中的至少一个。
结合前述的第三方面或第三方面的第一种可能的实现方式至第六种可能的实现方式中的任一种实现方式,在第七种可能的实现方式中,
所述处理器,还用于在将所述第一数据全部存储至所述底层存储介质中之后,确定查询列,且若所述查询列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行查询操作。
结合第三方面的第七种可能的实现方式,在第八种可能的实现方式中,
所述处理器,还用于在确定所述查询列之后,根据所述第一个排序列,对所述第一数据进行查询操作之前,将所述底层存储介质中存储的所述第一数据读入所述内存中,并根据所述第一个排序列,在所述内存中采用二分查找方式对所述第一数据的一个或多个数据页中的每个数据页进行查询操作。
结合前述的第三方面或第三方面的第一种可能的实现方式至第六种可能的实现方式中的任一种实现方式,在第九种可能的实现方式中,
所述处理器,还用于在将所述第一数据全部存储至所述底层存储介质中之后,确定第二排序列,且若所述第二排序列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行排序操作。
结合第三方面的第九种可能的实现方式,在第十种可能的实现方式中,
所述处理器,还用于在确定所述第二排序列之后,根据所述第一个排序列,对所述第一数据进行排序操作之前,将所述底层存储介质中存储的所述第一数据读入所述内存中,并根据所述第一个排序列,在所述内存中对所述第一数据进行归并排序。
结合前述的第三方面或第三方面的第一种可能的实现方式至第六种可能的实现方式中的任一种实现方式,在第十一种可能的实现方式中,所述处理器,还用于在将所述第一数据全部存储至所述底层存储介质中之后,确定聚合列,且若所述聚合列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行聚合操作,所述聚合操作为在所述第一数据中查找最大值或最小值的操作。
结合第三方面的第十一种可能的实现方式,在第十二种可能的实现方式中,
所述处理器,还用于在确定所述聚合列之后,根据所述第一个排序列,对所述第一数据进行聚合操作之前,将所述底层存储介质中存储的所述第一数据读入所述内存中,并根据所述第一个排序列,在所述内存中确定所述第一数据的一个或多个数据页中的每个数据页中的最大值或最小值,并依次比较所述每个数据页中的最大值或最小值,以确定所述第一数据中的最大值或最小值。
在第三方面的第十三种可能的实现方式中,
所述处理器,还用于在将待存储的第一数据逐行缓存至所述内存中之前,在所述底层存储介质中创建数据表,并将排序后的所述第二数据逐行插入所述数据表中,以将排序后的所述第二数据聚簇存储至所述底层存储介质中,所述数据表用于装载所述第一数据。
本发明实施例提供一种聚簇存储方法及装置,通过将待存储的第一数据逐行缓存至数据库系统中的本地内存中,并确定第一排序列,该第一排序列用于对本地内存中已缓存的数据进行排序,且若本地内存中已缓存的第二数据满足预设条件,则根据该第一排序列对该第二数据进行排序,该第二数据为该第一数据中的已缓存至本地内存中的数据,以及将排序后的该第二数据聚簇存储至数据库系统中的存储介质中。通过该方案,在将待存储的第一数据逐行缓存至本地内存的过程中,当在本地内存中已缓存的第二数据的数据量超出本地内存允许存储的数据量时,开始根据确定的第一排序列,对该第二数据进行排序,以及将排序后的该第二数据存入数据库系统中的存储介质中,由于可对待存储的数据一部分一部分进行排序并存储,以完成数据的装载,因此,可以保证数据库系统中的存储介质中的数据局部有序,从而能够保证在对数据装载性能和数据更新性能影响较小的同时,提高数据查询性能和数据压缩效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的表格和附图作简单地介绍,显而易见地,下面描述中的表格和附图仅仅是本发明的一些实施例,即本发明提供的表格和附图包括但不限于下面描述中的表格和附图。
图1为本发明实施例提供的聚簇存储方法的流程图一;
图2为本发明实施例提供的聚簇存储方法的流程图二;
图3为本发明实施例提供的聚簇存储方法的流程图三;
图4为本发明实施例提供的索引组织表的结构示意图;
图5为本发明实施例提供的聚簇存储装置的结构示意图一;
图6为本发明实施例提供的聚簇存储装置的结构示意图二;
图7为本发明实施例提供的数据库系统的结构示意图;
图8为本发明实施例提供的对数据进行聚簇存储的示意图一;
图9为本发明实施例提供的对数据进行聚簇存储的示意图二。
具体实施方式
本发明提供的聚簇存储方法,根据聚簇存储的思想,在将数据存入数据库系统中的存储介质中时,仅保证每次存入存储介质的数据有序(数据局部有序),并不考虑存入存储介质中的所有数据有序(数据全局有序),因此,采用本发明提供的聚簇存储方法,由于存储介质中的同类数据都是经过局部排序后存储的,因此与现有技术中采用堆表在存储介质中存储的数据为无序存储的情况相比,能够保证在对数据装载性能和数据更新性能影响较小的同时,提高数据查询性能和数据压缩效率。具体的,采用本发明实施例提供的聚簇存储方法,一方面,由于数据库系统中的存储介质中的同类数据都是经过局部排序后存储的,因此数据存储后,数据查询性能和数据压缩效率较高;一方面,在数据存储过程中,进行数据装载时,由于数据是一部分一部分装载的,因此,能够保证对数据装载性能的影响较小;另一方面,在需要对存储介质中的数据进行更新时,由于可直接对存储介质中待更新的数据所处的数据部分进行更新(若为新增,则可直接将新增数据有序存入存储介质)即可,而无需对存储介质中的所有数据进行更新,因此,能够保证对数据更新性能的影响较小。即采用本发明提供的聚簇存储方法,能够保证在对数据装载性能和数据更新性能影响较小的同时,提高数据查询性能和数据压缩效率。
进一步地,本发明提供的聚簇存储方法,由于在数据存储过程中,只需在本地内存中对数据进行排序,而无需在存储介质中对数据进行排序,且本地内存处理数据的速度比存储介质处理数据的速度快很多,因此,采用本发明提供的聚簇存储方法在对数据进行更新时,能够节省时间和系统资源。
下面将结合本发明实施例中的表格和附图,对本发明实施例提供的聚簇存储方法及装置进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。其中,本发明实施例提供的聚簇存储方法及装置可以应用于数据库系统中,该数据库系统可以包括聚簇存储装置的硬件实体和数据库环境,聚簇存储装置的硬件实体可以为计算机节点(或称为计算节点),也可以为能够实现本发明实施例提供的聚簇存储方案的其他设备,即本发明实施例提供的聚簇存储方法的执行主体可以为计算机节点或其他设备,下面以该计算机节点为例,对本发明实施例提供的聚簇存储方法及装置进行说明。
实施例一
本发明实施例提供一种聚簇存储方法,应用于数据库系统中,如图1所示,该方法可以包括:
S101、计算机节点将待存储的第一数据逐行缓存至数据库系统中的本地内存中。
若需将硬盘的文本中存储的数据,即待存储的第一数据存储至数据库系统中的存储介质中,且为了便于以后对该第一数据进行访问,则在该第一数据存储过程中,计算机节点需先对该第一数据进行排序,然后再将排序后的该第一数据存入该存储介质中。计算机节点在将该第一数据存储至该存储介质的过程中,计算机节点首先需要从硬盘将该第一数据读入至数据库系统中的本地内存。具体的,计算机节点可以从硬盘将该第一数据逐行缓存至该本地内存中。
S102、计算机节点确定第一排序列,该第一排序列用于对该本地内存中已缓存的数据进行排序。
计算机节点在将该第一数据逐行缓存至该本地内存的过程中,计算机节点可确定第一排序列,其中该第一排序列可以是预设的,其中,该第一排序列可用于对该本地内存中已缓存的数据进行排序。
可选的,本发明实施例提供的聚簇存储方法中,计算机节点在对第一数据进行排序时,可根据第一排序列的数值大小或第一排序列的数值的哈希值大小对该第一数据进行排序。
本领域技术人员可以理解,本发明实施例提供的数据库系统中的存储介质可以为磁盘,磁盘可以包括硬盘和软盘。常用的磁盘一般为可移动磁盘,可移动磁盘可以分为两大类:一类为基于芯片存储的USB盘(Universal Serial Bus flash disk,通用串行总线闪存驱动器)或闪盘;另一类为基于硬盘的移动硬盘,其中,可移动磁盘中最主要的为移动硬盘,而移动硬盘又因硬盘的不同分为笔记本移动硬盘和台式机移动硬盘。可移动硬盘一般都是通过USB接口与计算机相连,即可移动硬盘作为一种存储介质,可存储其通过USB接口与计算机传输的数据。
特别的,该第一排序列可以称为主键,也可以称为局部聚簇键(partial cluster key)。
需要说明的是,第一排序列为用户在指示计算机节点创建数据表时,根据该第一数据的属性指定的对该第一数据进行排序的依据,即计算机节点可根据该第一排序列,通过对待存储的第一数据中,该本地内存中已缓存的各个部分数据分别进行排序,而使得该第一数据中的各个部分数据分别有序排列,进而保证该第一数据局部有序。
进一步地,用户可在指示创建数据表时,通过一个语句指定数据表存储结构,其中,该数据表存储结构中指定了该第一排序列。举例来说,用户可使用语句:
Create table t(c1 int,c2 int,partial cluster key(c1,c2+1)指定数据表t存储结构,且该数据表t存储结构中包括该第一排序列,即局部聚簇键。
其中,数据表是由一组数据记录组成的。一个数据表是一组相关的按行排列的数据;每个数据表中都含有相同类型的信息。数据表实际上是一个二维表格,例如,一个班所有学生的考试成绩,可以存放在一个数据表中,数据表中的每一行对应一个学生,其包含所对应学生的所有信息,如可以包括学生的学号,姓名及各门课程的成绩等。
数据表存储结构就是定义的一个数据表的字段、类型、主键、外键、索引等,即由这些基本的属性组成了数据表存储结构。确定了数据表存储结构后,可直接根据该数据表存储结构,插入不同类型的数据。
数据库为存储数据的仓库,其由一个或一组数据表组成,数据库中的数据是以数据表为单位进行组织的。每个数据库都以文件的形式存放在磁盘上,即每个数据库对应于一个物理文件。不同的数据库,与物理文件的对应方式也不相同。例如,一个数据库可以包含一个数据表,也可以包含多个数据表。
进一步地,本发明实施例提供的聚簇存储方法,由于计算机节点是在数据库系统中的本地内存中完成对第一数据的排序,且受该本地内存的大小及处理数据的能力限制,因此,该计算机节点只能对该第一数据一部分一部分的进行排序,从而计算机节点再依次将排序后的该一部分一部分的数据存入数据库系统中的存储介质,进而能够保证该存储介质中存储的第一数据局部有序。
S103、若计算机节点在该本地内存中已缓存的第二数据满足预设条件,计算机节点则根据该第一排序列对该第二数据进行排序,该第二数据为该第一数据中的已缓存至该本地内存中的数据。
计算机节点在缓存该第一数据的过程中,由于数据库系统中的本地内存的大小和处理数据的能力有限,因此,该第一数据可能无法一次全部缓存至该本地内存中,即计算机节点可将该第一数据一部分一部分的分别缓存至该本地内存中,从而计算机节点可依次对本地内存中分别缓存的数据一部分一部分地进行处理。具体的,计算机节点可实时地统计本地内存中已缓存的第二数据的情况,当计算机节点检测到在本地内存中已缓存的第二数据满足预设条件时,计算机节点可开始根据该第一排序列对该第二数据进行排序,其中,该第二数据为该第一数据中的已缓存至该本地内存中的数据。
进一步地,上述预设条件可以用于表征该本地内存中已缓存的第二数据的数据量与该本地内存允许存储的数据量之间的关系。
S104、计算机节点将排序后的该第二数据聚簇存储至数据库系统中的存储介质中。
在数据库中,为了提高某个属性或属性组的查询速度,可以将该属性或该属性组(称为聚簇码)上具有相同值的元祖集中存放在连续的物理块中,这种存储方法称为聚簇。使用聚簇存储数据可以大大提高按聚簇码进行查询的效率。
计算机节点对该第二数据进行排序后,计算机节点可将排序后的该第二数据聚簇存储至数据库系统中的存储介质中,从而完成对该第二数据的装载过程。
需要说明的是,计算机节点可重复执行上述S101-S104,直至将待存储的第一数据全部存储至数据库系统中的存储介质中。
可以理解的是,计算机节点可依次对该第一数据中,已缓存至该本地内存中的每部分数据分别按照预设的第一排序列进行排序,并将每次排序后的该每部分数据存储至该存储介质中,从而可保证该存储介质中存储的第一数据局部有序,即该存储介质中存储的第一数据中的每部分数据都有序排列。
示例性的,若用户需将第一数据,即某学院舞蹈系的500名学生的信息存储至数据库系统中的存储介质中,以便于后续访问,则用户首先需将该500名学生的信息输入计算机节点,并以文本的形式存储在计算机节点的硬盘中。在计算机节点根据用户的指示将该500名学生的信息存入数据库系统中的存储介质的过程中,计算机节点可将该500名学生的信息从硬盘的文本中读入数据库系统中的本地内存中,具体的,计算机节点可将该500名学生的信息,按照每个学生逐行将每个学生的信息依次读入该本地内存中。
假设每个学生的信息包括:班级、姓名、学号、年龄、特长、家庭情况等属性,则通过本发明实施例提供的聚簇存储方法,可将这500名学生的信息组成一个数据表,如表1所示,其中,表1中的每行(即每个学生的信息)为一个元组,每列(所有学生的某项信息)为一个属性。
表1
班级 | 姓名 | 学号 | 年龄 | 特长 | 家庭情况 |
1 | A | 001 | 20 | 民族舞 | … |
1 | B | 002 | 21 | 古典舞 | … |
1 | C | 003 | 20 | 民间舞 | … |
2 | F | 001 | 19 | 踢踏舞 | … |
2 | G | 002 | 20 | 芭蕾舞 | … |
… | … | … | … | … | … |
1 | D | 078 | 21 | 现代舞 | … |
1 | E | 079 | 18 | 爵士舞 | … |
2 | H | 123 | 19 | 现代舞 | … |
2 | I | 124 | 20 | 芭蕾舞 | … |
… | … | … | … | … | … |
需要说明的是,由于用户在输入这500名学生的信息时可能并不是按照特定的顺序输入的,所以硬盘的文本中存储的这500名学生的信息并不是有序排列的,为了便于后续可继续重复使用这500名学生的信息,如对这500名学生的信息进行查询、排序等操作,则需要将这500名学生的信息存入数据库系统中的存储介质中,以方便长期使用,避免重复劳动。特别的,在将数据存入数据库系统中的存储介质中时,一般可使用相应的数据表存储结构进行存储。与现有技术提供的数据表存储结构相比,本发明实施例提供的数据表存储结构(本发明实施例中计算机节点创建的数据表的存储结构),即表1所示的数据表存储结构,能够保证在对数据装载性能和数据更新性能影响较小的同时,提高数据查询性能和数据压缩效率。
根据上述表1可以得知,在该例子中,用户指定的第一排序列,即局部聚簇键(主键)可以为班级和学号,这是因为只有班级和学号两个属性同时确定才能够确定每一位学生,即只有同时确定班级和学号才能够对每一位学生进行区分。
通过本发明实施例提供的聚簇存储方法,可将待存储的第一数据,一部分一部分地排序后存储至数据库系统中的存储介质中,并保证存储至该存储介质中的每部分数据都有序排列,这样由于可对待存储的数据一部分一部分进行排序并存储,以完成数据的装载,因此,可以保证该存储介质中的数据局部有序,从而,能够保证在对数据装载性能和数据更新性能影响较小的同时,提高数据查询性能和数据压缩效率。
本发明实施例提供一种聚簇存储方法,通过将待存储的第一数据逐行缓存至数据库系统中的本地内存中,并确定第一排序列,该第一排序列用于对该本地内存中已缓存的数据进行排序,且若本地内存中已缓存的第二数据满足预设条件,则根据该第一排序列对该第二数据进行排序,该第二数据为该第一数据中的已缓存至该本地内存中的数据,以及将排序后的该第二数据聚簇存储至数据库系统中的存储介质中。通过该方案,在将待存储的第一数据逐行缓存至本地内存的过程中,当在本地内存中已缓存的第二数据的数据量超出本地内存允许存储的数据量时,开始根据确定的第一排序列,对该第二数据进行排序,以及将排序后的该第二数据存入数据库系统中的存储介质中,由于可对待存储的数据一部分一部分进行排序并存储,以完成数据的装载,因此,可以保证数据库系统中的存储介质中的数据局部有序,从而能够保证在对数据装载性能和数据更新性能影响较小的同时,提高数据查询性能和数据压缩效率。
实施例二
本发明实施例提供一种聚簇存储方法,应用于数据库系统中,如图2所示,该方法可以包括:
S201、计算机节点在数据库系统中的存储介质中创建数据表,该数据表用于装载待存储的第一数据。
若需将硬盘的文本中存储的数据,即待存储的第一数据存储至数据库系统中的存储介质中,计算机节点则可首先在该存储介质中创建数据表,其中,该数据表可用于装载该第一数据。
本领域技术人员可以理解,本发明实施例提供的数据库系统中的存储介质可以为磁盘,磁盘可以包括硬盘和软盘。常用的磁盘一般为可移动磁盘,可移动磁盘可以分为两大类:一类为基于芯片存储的USB盘或闪盘;另一类为基于硬盘的移动硬盘,其中,可移动磁盘中最主要的为移动硬盘,而移动硬盘又因硬盘的不同分为笔记本移动硬盘和台式机移动硬盘。可移动硬盘一般都是通过USB接口与计算机相连,即可移动硬盘作为一种存储介质,可存储其通过USB接口与计算机传输的数据。
S202、计算机节点将该第一数据逐行缓存至数据库系统中的本地内存中。
本发明实施例提供的聚簇存储方法,为了便于以后对该第一数据进行访问,则在该第一数据存储过程中,计算机节点需先对该第一数据进行排序,然后再将排序后的该第一数据存入数据库系统中的存储介质中。计算机节点在将该第一数据存储至该存储介质的过程中,计算机节点首先需要从硬盘将该第一数据读入至数据库系统中的本地内存。具体的,计算机节点可以从硬盘将该第一数据逐行缓存至该本地内存中。
S203、计算机节点确定第一排序列,该第一排序列用于对该本地内存中已缓存的数据进行排序。
计算机节点在将该第一数据逐行缓存至该本地内存的过程中,计算机节点可确定第一排序列,其中,该第一排序列可用于对该本地内存中已缓存的数据进行排序。
特别的,该第一排序列可以称为主键,也可以称为局部聚簇键。
需要说明的是,第一排序列为用户在指示计算机节点创建数据表时,根据该第一数据的属性指定的对该第一数据进行排序的依据,即计算机节点可根据该第一排序列,通过对待存储的第一数据中,该本地内存中已缓存的各个部分数据分别进行排序,而使得该第一数据中的各个部分数据分别有序排列,进而保证该第一数据局部有序。
进一步地,用户可在指示创建数据表时,通过一个语句指定数据表存储结构,其中,该数据表存储结构中指定了该第一排序列。举例来说,用户可使用语句:
Create table t(c1 int,c2 int,partial cluster key(c1,c2+1)指定数据表t存储结构,且该数据表t存储结构中包括该第一排序列,即局部聚簇键。
其中,数据表是由一组数据记录组成的。一个数据表是一组相关的按行排列的数据;每个数据表中都含有相同类型的信息。数据表实际上是一个二维表格,例如,一个班所有学生的考试成绩,可以存放在一个数据表中,数据表中的每一行对应一个学生,其包含所对应学生的所有信息,如可以包括学生的学号,姓名及各门课程的成绩等。
数据表存储结构就是定义的一个数据表的字段、类型、主键、外键、索引等,即由这些基本的属性组成了数据表存储结构。确定了数据表存储结构后,可直接根据该数据表存储结构,插入不同类型的数据。
数据库为存储数据的仓库,其由一个或一组数据表组成,数据库中的数据是以数据表为单位进行组织的。每个数据库都以文件的形式存放在磁盘上,即每个数据库对应于一个物理文件。不同的数据库,与物理文件的对应方式也不相同。例如,对于dBASE,FoxPro和Paradox格式的数据库来说,一个数据表就是一个单独的数据库文件,而对于Microsoft Access、Btrieve格式的数据库来说,一个数据库文件可以包含有多个数据表。
进一步地,本发明实施例提供的聚簇存储方法,由于计算机节点是在数据库系统中的本地内存中完成对第一数据的排序,且受该本地内存的大小及处理数据的能力限制,因此,该计算机节点只能对该第一数据一部分一部分的进行排序,从而计算机节点再依次将排序后的该一部分一部分的数据存入数据库系统中的存储介质,进而能够保证该存储介质中存储的第一数据局部有序。
可选的,上述第一排序列可以包括物理列和表达式中的至少一个。具体的,该第一排序列可以为物理列,可以为表达式,也可以为物理列和表达式,还可以为其他任意满足排序需求的形式,本发明不作限制。
示例性的,以上述指定第一排序列的语句为例,在该语句中,第一排序列为“c1,c2+1”,其中,“c1”为物理列,“c2+1”为表达式。
进一步地,如表2所示,若该表中的数据为待存储的第一数据,则第一排序列可以为元素列和序号列,或数值列,其中,元素列和序号列,或数值列可称为物理列;第一排序列也可以为数值列的绝对值,其中,数值列的绝对值可称为表达式。可以理解的是,计算机节点可根据用户按照自身的需求指定的上述的第一排序列对表2所示的第一数据进行排序。
具体的,若第一排序列为元素列和序号列,则计算机节点按照第一排序列的数值从小到大(元素列按照字母先后,序号列按照数值大小)对表2中的数据排序后的结果如表3所示;若第一排序列为数值列,则计算机节点按照第一排序列的数值从小到大对表2中的数据排序后的结果如表4所示;若第一排序列为数值列的绝对值,则计算机节点按照第一排序列的数值从小到大对表2中的数据排序后的结果如表5所示。
表2
元素 | 序号 | 数值 |
A | 1 | -1 |
B | 2 | 10 |
B | 1 | -12 |
A | 3 | -5 |
A | 2 | 8 |
表3
元素 | 序号 | 数值 |
A | 1 | -1 |
A | 2 | 8 |
A | 3 | -5 |
B | 1 | -12 |
B | 2 | 10 |
表4
元素 | 序号 | 数值 |
B | 1 | -12 |
A | 3 | -5 |
A | 1 | -1 |
A | 2 | 8 |
B | 2 | 10 |
表5
元素 | 序号 | 数值 |
A | 1 | 1 |
A | 3 | 5 |
A | 2 | 8 |
B | 2 | 10 |
B | 1 | 12 |
由上述表3、表4、表5可以看出,不同的第一排序列,排序的结果是不相同的;相同的第一排序列,以第一排序列的表达式排序的结果与直接以第一排序列排序的结果也是不相同的。具体的,可以根据实际使用需求进行排序,本发明不做限制。
可选的,该第一排序列的数量可以为至少一个,即对该第一数据进行排序的依据可以为至少一个。其中,当该第一排序列的数量为至少两个时,该至少两个第一排序列可以包括一个主第一排序列和至少一个次第一排序列,从而计算机节点可先根据该主第一排序列对第一数据中的各部分数据进行排序,再分别根据该至少一个次第一排序列对第一数据中的各部分数据进行排序。
示例性的,以上述第一排序列为“c1,c2+1”为例,其中,“c1”为主第一排序列,“c2+1”为次第一排序列。
进一步地,如表2所示,若第一排序列为元素列和序号列,则可将元素列设置为主第一排序列,将序号列设置为次第一排序列;也可以将序号列设置为主第一排序列,将元素列设置为次第一排序列,具体的设置形式可根据实际需求进行适应性的调整,本发明不作限制。
S204、计算机节点检测该本地内存中已缓存的第二数据是否满足预设条件,该第二数据为该第一数据中的已缓存至该本地内存中的数据。
计算机节点将该第一数据缓存至该本地内存中的过程中,计算机节点可检测该本地内存中已缓存的第二数据是否满足预设条件,其中,该第二数据可以为该第一数据中的已缓存至该本地内存中的数据。
其中,该预设条件可以用于表征该本地内存中已缓存的第二数据的数据量与该本地内存允许存储的数据量之间的关系。该预设条件可以为该第二数据的行数大于或等于第一预设阈值,也可以为该第二数据占用该本地内存的大小大于或等于第二预设阈值,还可以为其他任意满足设计要求的预设条件,本发明不作限制。
具体的,计算机节点可检测该本地内存中已缓存的第二数据的行数是否大于或等于第一预设阈值;或者计算机节点可检测该本地内存中已缓存的第二数据占用该本地内存的大小是否大于或等于第二预设阈值。
需要说明的是,第一预设阈值和第二预设阈值的取值可以根据计算机节点实际使用的内存的大小和内存处理数据的能力进行设置,本发明不作限制。
S205、若计算机节点在该本地内存中已缓存的第二数据满足预设条件,计算机节点则根据该第一排序列对该第二数据进行排序。
计算机节点在缓存该第一数据的过程中,由于数据库系统中的本地内存的大小和处理数据的能力有限,因此,该第一数据可能无法一次全部缓存至该本地内存中,即计算机节点可将该第一数据一部分一部分的分别缓存至该本地内存中,从而计算机节点可依次对本地内存中分别缓存的数据一部分一部分地进行处理。具体的,计算机节点可实时地统计本地内存中已缓存的第二数据的情况,当计算机节点检测到在本地内存中已缓存的第二数据满足预设条件时,计算机节点可开始根据该第一排序列对该第二数据进行排序。
举例来说,若第一预设阈值为10000行,则当本地内存中已缓存的第二数据的行数大于或等于10000行时,计算机节点则可开始根据该第一排序列对该第二数据进行排序;相应的,若第二预设阈值为6千兆字节,则当该本地内存中已缓存的第二数据占用该本地内存的大小大于或等于6千兆字节时,计算机节点则可开始根据该第一排序列对该第二数据进行排序。
进一步地,该本地内存中已缓存的第二数据占用该本地内存的大小还可以由百分比来表示。如该本地内存的容量为8千兆字节,第二预设阈值为可以为8千兆字节的90%(百分之),则当该本地内存中已缓存的第二数据占用该本地内存的大小大于8千兆字节的90%时,计算机节点可开始根据该第一排序列对该第二数据进行排序。
进一步地,本发明实施例提供的聚簇存储方法中,计算机节点在对第一数据进行排序时,可根据该第一排序列的数值大小或该第一排序列的数值的哈希值大小对该第二数据进行排序。
其中,可根据哈希算法,将任意长度的二进制值映射为固定长度的较小的二进制值,该固定长度的较小的二进制值称为该二进制值的哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如,若计算一段数据的哈希值,且在计算前后只要更改该一段数据中的任意一个字符,则该一段数据更改前后两次计算的哈希值也是不相同的。
相应的,第一排序列的数值的哈希值可以为根据哈希算法,将第一排序列的数值的二进制值映射为固定长度的较小的二进制值得到的。
S206、计算机节点将排序后的该第二数据逐行插入数据表中,以将排序后的该第二数据聚簇存储至该存储介质中。
在数据库中,为了提高某个属性或属性组的查询速度,可以将该属性或该属性组(称为聚簇码)上具有相同值的元组集中存放在连续的物理块中,这种存储方法称为聚簇。使用聚簇存储数据可以大大提高按聚簇码进行查询的效率。
计算机节点对该第二数据进行排序之后,计算机节点可将排序后的该第二数据逐行插入计算机节点创建的数据表中,以将排序后的该第二数据聚簇存储至该数据库系统中的存储介质中,从而完成对该第二数据的装载过程。
具体的,计算机节点可将排序后的第二数据聚簇存储至数据库系统中的存储介质中的空闲物理块中,该空闲物理块为除第三数据占用的物理块之外的物理块,该第三数据为该第一数据中,在该第二数据之前已聚簇存储至该存储介质中的数据。
特别的,计算机节点可以将排序后的第二数据聚簇存储至该存储介质中连续的空闲物理块中,也可以将排序后的第二数据聚簇存储至该存储介质中不连续的空闲物理块中(例如将第二数据中的某部分数据聚簇存储至某些连续的空闲物理块,将第二数据中的其他部分数据聚簇存储至其他某些连续的空闲物理块,其中,该某些连续的空闲物理块和该其他某些连续的空闲物理块不是连续的物理块),具体的存储形式,本发明不作限制。即无论本发明采用上述何种存储形式,都能够保证存储至该存储介质中的数据是局部有序的。
需要说明的是,计算机节点可重复执行上述S202-S206,直至将待存储的第一数据全部存储至数据库系统中的存储介质中。
可以理解的是,计算机节点可依次对该第一数据中,已缓存至该本地内存中的每部分数据进行排序,并将每次排序后的该每部分数据存储至该存储介质中,从而可保证该存储介质中存储的第一数据局部有序,即该存储介质中存储的第一数据中的每部分数据都有序排列。
示例性的,若用户需将第一数据,即某学院舞蹈系的500名学生的信息存储至数据库系统中的存储介质中,以便于后续访问,则用户首先需将该500名学生的信息输入计算机节点,并以文本的形式存储在计算机节点的硬盘中。在计算机节点根据用户的指示将该500名学生的信息存入数据库系统中的存储介质的过程中,计算机节点可将该500名学生的信息从硬盘的文本中读入数据库系统中的本地内存中,具体的,计算机节点可将该500名学生的信息,按照每个学生逐行将每个学生的信息依次读入该本地内存中。
假设每个学生的信息包括:班级、姓名、学号、年龄、特长、家庭情况等属性,则通过本发明实施例提供的聚簇存储方法,可将这500名学生的信息组成一个数据表,如表1所示,其中,表1中的每行(即每个学生的信息)为一个元组,每列(所有学生的某项信息)为一个属性。
需要说明的是,由于用户在输入这500名学生的信息时可能并不是按照特定的顺序输入的,所以硬盘的文本中存储的这500名学生的信息并不是有序排列的,为了便于后续可继续重复使用这500名学生的信息,如对这500名学生的信息进行查询、排序等操作,则需要将这500名学生的信息存入数据库系统中的存储介质中,以方便长期使用,避免重复劳动。特别的,在将数据存入数据库系统中的存储介质中时,一般可使用相应的数据表存储结构进行存储。与现有技术提供的数据表存储结构相比,本发明实施例提供的数据表存储结构(本发明实施例中计算机节点创建的数据表的存储结构),即表1所示的数据表存储结构,能够保证在对数据装载性能和数据更新性能影响较小的同时,提高数据查询性能和数据压缩效率。
根据上述表1可以得知,在该例子中,用户指定的第一排序列,即局部聚簇键(主键)可以为班级和学号,这是因为只有班级和学号两个属性同时确定才能够确定每一位学生,即只有同时确定班级和学号才能够对每一位学生进行区分。
进一步地,如图3所示,计算机节点在将该第一数据全部存储至该存储介质中之后,用户可根据自身需求对存储至该存储介质中的第一数据进行相应的操作,如查询、排序、聚合等。具体的,本发明实施例提供的聚簇存储方法还可以包括:
S207、计算机节点确定查询列。
计算机节点将该第一数据全部存储至该存储介质中之后,若用户需对该第一数据进行查询操作,用户则需指定相应的查询列,即计算机节点可确定用户指定的查询列,其中,该查询列可用于以其为依据对该第一数据进行查询操作。
S208、计算机节点将该查询列与该第一排序列中的第一个排序列进行对比。
计算机节点确定查询列之后,计算机节点可将该查询列与该第一排序列中的第一个排序列进行对比,以确定该查询列是否为该第一个排序列。
S209、计算机节点将该存储介质中存储的第一数据读入该本地内存中。
计算机节点在确定查询列之后,根据该查询列对第一数据进行查询操作之前,计算机节点需将该存储介质中存储的第一数据读入该本地内存中,以在该本地内存中完成数据的查询操作。
在执行S207之后,本发明不限制S208和S209的执行顺序,即本发明可以先执行S208,后执行S209;也可以先执行S209,后执行S208;还可以同时执行S208和S209。
S210、若该查询列为该第一个排序列,计算机节点则可根据该第一个排序列,在该本地内存中对该第一数据进行查询操作。
若该查询列为第一排序列中的第一个排序列,计算机节点则可根据该第一个排序列,在该本地内存中对该第一数据进行查询操作。
可以理解的是,若该第一排序列的数量为一个,则该第一个排序列为第一排序列;若该第一排序列的数量为两个以上,则该第一个排序列为该第一排序列中的主第一排序列。
具体的,本发明实施例提供的聚簇存储方法中,由于计算机节点可将第一数据一部分一部分的排序后聚簇存储在该存储介质中,因此,能够保证该第一数据在该存储介质中为局部有序排列的,从而,当需根据该第一个排序列对该第一数据进行查询操作时,计算机节点可将该存储介质中存储的第一数据读入该本地内存中,并在该本地内存中直接采用二分查找方式对第一数据的一个或多个数据页中的每个数据页进行查询操作。
其中,二分查找又称折半查找,其优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入数据、删除数据比较困难。因此,二分查找方式适用于不经常变动而查找频繁的有序列表。示例性的,假设列表中的元素是按第一排序列升序排列的,则将列表中间位置记录的关键字与查找关键字进行比较,如果两者相等,则查找成功;否则利用中间位置记录的关键字将列表分成前、后两个子列表,如果列表中间位置记录的关键字大于查找关键字,则进一步查找前一个子列表,否则进一步查找后一个子列表。重复以上过程,直到找到满足查询条件的数据,此时查找成功;或者直到子列表不存在为止,此时查找不成功。
需要说明的是,由于第一数据在该存储介质中是局部有序排列的,因此,计算机节点从该存储介质中读入该本地内存中的第一数据也是局部有序排列的,若需按照第一个排序列对该第一数据进行查询,计算机节点则可通过执行上述S207-S210快速地在该本地内存中的该第一数据中查找到满足查询条件的数据,从而减少了浏览数据和对比数据的次数,提高了数据查询性能。
进一步地,本发明实施例提供的聚簇存储方法中,如图4所示,还可以通过采用与第一数据对应的索引查询数据。其中,可以在将该第一数据存储至该存储介质的过程中创建与该第一数据对应的索引,也可以在将该第一数据存储至该存储介质中之后再创建与该第一数据对应的索引,本发明不作限制。
可以理解的是,与该第一数据对应的索引可以用于表示该第一数据在该存储介质中的具体存储位置,如与该第一数据对应的索引可以用于表示该第一数据在该存储介质中具体存储的物理块、数据页以及数据行。
具体的,采用本发明实施例提供的聚簇存储方法将第一数据存储至该存储介质中之后,由于第一数据为局部有序存储的,因此,可以根据查询列和创建的与该第一数据对应的索引直接在该存储介质中查找到需查找的数据行,从而,相对于现有技术中数据无序存储的情况,大大降低了数据查询次数,提升了数据查询性能。
特别的,由于根据与第一数据对应的索引查找数据的方法与现有技术中按照索引查找数据的方法类似,因此,此处不再赘述。
S211、计算机节点确定第二排序列。
计算机节点将该第一数据全部存储至该存储介质中之后,若用户需对该第一数据进行排序,用户则需指定相应的排序列,即计算机节点可确定用户指定的第二排序列,其中,第二排序列可用于以其为依据对该第一数据进行排序操作。
S212、计算机节点将该第二排序列与该第一排序列中的第一个排序列进行对比。
计算机节点确定第二排序列之后,计算机节点可将该第二排序列与该第一排序列中的第一个排序列进行对比,以确定该第二排序列是否为该第一个排序列。
S213、计算机节点将该存储介质中存储的第一数据读入该本地内存中。
计算机节点在确定第二排序列之后,根据该第二排序列对第一数据进行排序操作之前,计算机节点需将该存储介质中存储的第一数据读入该本地内存中,以在该本地内存中完成数据的排序操作。
在执行S211之后,本发明不限制S212和S213的执行顺序,即本发明可以先执行S212,后执行S213;也可以先执行S213,后执行S212;还可以同时执行S212和S213。
S214、若该第二排序列为该第一个排序列,计算机节点则根据该第一个排序列,在该本地内存中对该第一数据进行排序操作。
若该第二排序列为该第一排序列中的第一个排序列,计算机节点则可根据该第一个排序列,在该本地内存中对该第一数据进行排序操作。
具体的,本发明实施例提供的聚簇存储方法中,由于计算机节点可将第一数据一部分一部分的排序后聚簇存储在该存储介质中,因此,能够保证该第一数据在该存储介质中为局部有序排列的,从而,当需根据该第一个排序列对该第一数据进行排序操作时,计算机节点可将该存储介质中存储的第一数据读入该本地内存中,并直接在该本地内存中对该第一数据中的每部分数据进行排序,即计算机节点可对该第一数据进行归并排序。
其中,归并(Merge)排序为将两个(或两个以上)有序序列合并成一个新的有序序列的一种排序方法。归并排序是建立在归并操作上的一种有效的排序算法。本发明实施例提供的归并排序可以为:计算机节点将聚簇存储至该存储介质中的若干个有序的子序列合并为一个整体的有序序列。
需要说明的是,由于第一数据在该存储介质中是局部有序排列的,因此,计算机节点从该存储介质中读入该本地内存中的第一数据也是局部有序排列的,若需按照该第一个排序列对第一数据进行排序,计算机节点则可通过执行上述S211-S214快速地在本地内存中对第一数据进行排序,从而能够提高对数据的排序效率。
S215、计算机节点确定聚合列。
计算机节点将该第一数据全部存储至该存储介质中之后,若用户需对该第一数据进行聚合操作,用户则需指定相应的聚合列,即计算机节点可确定用户指定的聚合列,其中,聚合列可用于以其为依据对该第一数据进行聚合操作。
需要说明的是,本发明实施例提供的聚簇存储方法中,聚合操作为在第一数据中查找最大值或最小值的操作。
S216、计算机节点将该聚合列与该第一排序列中的第一个排序列进行对比。
计算机节点确定聚合列之后,计算机节点可将该聚合列与该第一排序列中的第一个排序列进行对比,以确定该聚合列是否为该第一个排序列。
S217、计算机节点将该存储介质中存储的第一数据读入该本地内存中。
计算机节点在确定聚合列之后,根据该聚合列对第一数据进行聚合操作之前,计算机节点需将该存储介质中存储的第一数据读入该本地内存中,以在该本地内存中完成数据的聚合操作。
在执行S215之后,本发明不限制S216和S217的执行顺序,即本发明可以先执行S216,后执行S217;也可以先执行S217,后执行S216;还可以同时执行S216和S217。
S218、若该聚合列为该第一个排序列,计算机节点则根据该第一个排序列,在该本地内存中对该第一数据进行聚合操作。
若该聚合列为该第一排序列中的第一个排序列,计算机节点则可根据该第一个排序列,在该本地内存中对该第一数据进行聚合操作。
进一步地,计算机节点根据该第一个排序列,对该第一数据进行聚合操作的方法,具体可以包括:
(1)计算机节点可根据该第一个排序列,在该本地内存中确定第一数据的一个或多个数据页中的每个数据页中的最大值或最小值。
(2)计算机节点依次比较该每个数据页中的最大值或最小值,以确定第一数据中的最大值或最小值。
进一步地,本发明实施例提供的聚簇存储方法中,由于计算机节点可将第一数据一部分一部分的排序后聚簇存储在该存储介质中,因此,该第一数据在该存储介质中为局部有序排列的,从而,当需根据该第一个排序列对该第一数据进行聚合操作时,计算机节点可将该存储介质中存储的第一数据读入该本地内存中,并通过上述方法,在该本地内存中先根据该第一个排序列,确定出第一数据的一个或多个数据页中的每个数据页中的最大值或最小值,然后计算机节点再依次比较该每个数据页中的最大值或最小值,以确定出该第一数据中的最大值或最小值。
需要说明的是,由于第一数据在该存储介质中是局部有序排列的,因此,计算机节点从该存储介质中读入该本地内存中的第一数据也是局部有序排列的,若需按照该第一个排序列对该第一数据进行聚合操作,计算机节点则可通过执行上述S215-S218快速地在该本地内存中完成对第一数据的聚合操作,即计算机节点能够快速地确定出该第一数据中的最大值或最小值,从而提高了对数据的聚合效率。
进一步地,本发明实施例提供的聚簇存储方法中,如图4所示,还可以通过采用与第一数据对应的索引对数据进行聚合操作。其中,可以在将该第一数据存储至该存储介质的过程中创建与该第一数据对应的索引,也可以在将该第一数据存储至该存储介质中之后再创建与该第一数据对应的索引,本发明不作限制。
可以理解的是,与该第一数据对应的索引可以用于表示该第一数据在该存储介质中的具体存储位置,如与该第一数据对应的索引可以用于表示该第一数据在该存储介质中具体存储的物理块、数据页以及数据行。
具体的,采用本发明实施例提供的聚簇存储方法将第一数据存储至该存储介质中之后,由于第一数据为局部有序存储的,因此,可以根据聚合列和创建的与该第一数据对应的索引直接在该存储介质中查找到一个或多个数据页中的每个数据页的最大值或最小值,从而,相对于现有技术中数据无序存储的情况,大大降低了数据聚合操作的次数,提升了数据聚合性能。
特别的,由于根据与第一数据对应的索引对数据进行聚合操作的方法与现有技术类似,因此,此处不再赘述。
可以理解的是,本发明不限制S207-S210、S211-S214和S215-S218的执行顺序,即当第一数据全部存储至该存储介质中之后,可根据实际的操作需求选择需执行的步骤。例如,对应于上述对第一数据进行查询、排序、聚合等操作的例子,若需对第一数据进行查询操作,则计算机节点可执行S207-S210;若需对第一数据进行排序操作,则计算机节点可执行S211-S214;若需对第一数据进行聚合操作,则计算机节点可执行S215-S218。
进一步地,上述列出的对第一数据进行的各种操作仅是示例性的,采用本发明实施例提供的聚簇存储方法存储第一数据后,还可根据其他相应的需求对第一数据进行对应的操作,本发明不作限制。
示例性的,如表6所示,为应用TPCH(一种商业智能计算测试标准)对数据进行测试时,现有技术提供的顺序存储和本发明实施例提供的局部有序聚簇存储的实际测试数据。其中,TPCH是由事务处理性能委员会(Transaction Processing Performance Council,TPC)发布的,其能够模拟决策支持系统中的数据库操作,测试数据库系统复杂查询的响应时间。
表6
由表6可以看出,采用现有技术提供的顺序存储方法存储数据时,应用TPCH对数据进行测试的时间,远远大于采用本发明实施例提供的聚簇存储方法存储数据时,应用TPCH对数据进行测试的时间。即采用本发明实施例提供的聚簇存储方法存储数据,能够减小应用TPCH对数据进行测试的时间,从而提升应用TPCH对数据进行测试的测试性能。
进一步地,如表6所示的应用TPCH对数据进行查询的操作中,本发明实施例提供的局部有序聚簇存储相对于现有技术提供的顺序存储,应用TPCH对数据进行查询的查询性能明显得到了提升。尤其是Q6、Q12、Q15三个查询,其查询性能的提升百分比都在300%以上。
需要说明的是,本发明实施例提供的聚簇存储方法,可以应用在数据库系统中的单个数据表的场景中,也可以应用在数据库系统中的多个数据表做连接(join)的场景中,具体的,可根据实际使用需求应用本发明实施例提供的聚簇存储方法,本发明不作限制。
通过本发明实施例提供的聚簇存储方法,可将待存储的第一数据,一部分一部分地排序后存储至数据库系统中的存储介质中,并保证存储至该存储介质中的每部分数据都有序排列,这样由于可对待存储的数据一部分一部分进行排序并存储,以完成数据的装载,因此,可以保证该存储介质中的数据局部有序,从而,能够保证在对数据装载性能和数据更新性能影响较小的同时,提高数据查询性能和数据压缩效率。
本发明实施例提供一种聚簇存储方法,通过将待存储的第一数据逐行缓存至数据库系统中的本地内存中,并确定第一排序列,该第一排序列用于对该本地内存中已缓存的数据进行排序,且若本地内存中已缓存的第二数据满足预设条件,则根据该第一排序列对该第二数据进行排序,该第二数据为该第一数据中的已缓存至该本地内存中的数据,以及将排序后的该第二数据聚簇存储至数据库系统中的存储介质中。通过该方案,在将待存储的第一数据逐行缓存至本地内存的过程中,当在本地内存中已缓存的第二数据的数据量超出本地内存允许存储的数据量时,开始根据确定的第一排序列,对该第二数据进行排序,以及将排序后的该第二数据存入数据库系统中的存储介质中,由于可对待存储的数据一部分一部分进行排序并存储,以完成数据的装载,因此,可以保证数据库系统中的存储介质中的数据局部有序,从而能够保证在对数据装载性能和数据更新性能影响较小的同时,提高数据查询性能和数据压缩效率。
实施例三
如图5所示,本发明实施例提供一种聚簇存储装置1,应用于数据库系统中,该聚簇存储装置1可以包括:
缓存单元10,用于将待存储的第一数据逐行缓存至所述数据库系统中的本地内存中。
确定单元11,用于确定第一排序列,所述第一排序列用于对所述本地内存中已缓存的数据进行排序。
操作单元12,用于若所述缓存单元10在所述本地内存中已缓存的第二数据满足预设条件,则根据所述确定单元11确定的所述第一排序列,对所述第二数据进行排序,所述第二数据为所述第一数据中的已缓存至所述本地内存中的数据。
存储单元13,用于将所述操作单元12排序后的所述第二数据聚簇存储至所述数据库系统中的存储介质中。
可选的,所述预设条件用于表征所述本地内存中已缓存的第二数据的数据量与所述本地内存允许存储的数据量之间的关系。
可选的,所述预设条件为所述第二数据的行数大于或等于第一预设阈值,
其中,所述操作单元12,具体用于若所述缓存单元10在所述本地内存中已缓存的所述第二数据的行数大于或等于所述第一预设阈值,则根据所述第一排序列对所述第二数据进行排序。
可选的,所述预设条件为所述第二数据占用所述本地内存的大小大于或等于第二预设阈值,
其中,所述操作单元12,具体用于若所述缓存单元10在所述本地内存中已缓存的所述第二数据占用所述本地内存的大小大于或等于所述第二预设阈值,则根据所述第一排序列对所述第二数据进行排序。
可选的,所述操作单元12,具体用于根据所述确定单元11确定的所述第一排序列的数值大小或所述第一排序列的数值的哈希值大小对所述第二数据进行排序。
可选的,所述存储单元13,具体用于将所述操作单元12排序后的所述第二数据聚簇存储至所述存储介质中的空闲物理块中,所述空闲物理块为除第三数据占用的物理块之外的物理块,所述第三数据为所述第一数据中在所述第二数据之前已聚簇存储至所述存储介质中的数据。
可选的,所述确定单元11确定的所述第一排序列包括物理列和表达式中的至少一个。
可选的,所述确定单元11,还用于在所述存储单元13将所述第一数据全部存储至所述存储介质中之后,确定查询列;以及所述操作单元12,还用于若所述确定单元11确定的所述查询列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行查询操作。
进一步地,所述缓存单元10,还用于在所述确定单元11确定所述查询列之后,所述操作单元12根据所述第一个排序列,对所述第一数据进行查询操作之前,将所述存储介质中存储的所述第一数据读入所述本地内存中;
其中,所述操作单元12,具体用于根据所述第一个排序列,在所述本地内存中采用二分查找方式对所述缓存单元10缓存的所述第一数据的一个或多个数据页中的每个数据页进行查询操作。
可选的,所述确定单元11,还用于在所述存储单元13将所述第一数据全部存储至所述存储介质中之后,确定第二排序列;以及所述操作单元12,还用于若所述确定单元11确定的所述第二排序列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行排序操作。
进一步地,所述缓存单元10,还用于在所述确定单元11确定所述第二排序列之后,所述操作单元12根据所述第一个排序列,对所述第一数据进行排序操作之前,将所述存储介质中存储的所述第一数据读入所述本地内存中;
其中,所述操作单元12,具体用于根据所述第一个排序列,在所述本地内存中对所述缓存单元10缓存的所述第一数据进行归并排序。
可选的,所述确定单元11,还用于在所述存储单元13将所述第一数据全部存储至所述存储介质中之后,确定聚合列;以及所述操作单元12,还用于若所述确定单元11确定的所述聚合列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行聚合操作,所述聚合操作为在所述第一数据中查找最大值或最小值的操作。
进一步地,所述缓存单元10,还用于在所述确定单元11确定所述聚合列之后,所述操作单元12根据所述第一个排序列,对所述第一数据进行聚合操作之前,将所述存储介质中存储的所述第一数据读入所述本地内存中;
其中,所述操作单元12,具体用于根据所述第一个排序列,在所述本地内存中确定所述缓存单元10缓存的所述第一数据的一个或多个数据页中的每个数据页中的最大值或最小值,并依次比较所述每个数据页中的最大值或最小值,以确定所述第一数据中的最大值或最小值。
进一步地,如图6所示,本发明实施例提供的聚簇存储装置1还可以包括创建单元14,
所述创建单元14,用于在所述缓存单元10将待存储的第一数据逐行缓存至所述数据库系统中的本地内存中之前,在所述存储介质中创建数据表,所述数据表用于装载所述第一数据;
其中,所述操作单元12,具体用于将排序后的所述第二数据逐行插入所述创建单元14创建的所述数据表中,以将排序后的所述第二数据聚簇存储至所述存储介质中。
可选的,所述确定单元11确定的所述第一排序列的数量为至少一个,其中,当所述第一排序列的数量为至少两个时,所述至少两个第一排序列包括一个主第一排序列和至少一个次第一排序列。
本发明实施例提供一种聚簇存储装置,该聚簇存储装置将待存储的第一数据逐行缓存至数据库系统中的本地内存中,并确定第一排序列,该第一排序列用于对该本地内存中已缓存的数据进行排序,且若本地内存中已缓存的第二数据满足预设条件,该聚簇存储装置则根据该第一排序列对该第二数据进行排序,该第二数据为该第一数据中的已缓存至该本地内存中的数据,以及该聚簇存储装置将排序后的该第二数据聚簇存储至数据库系统中的存储介质中。通过该方案,该聚簇存储装置在将待存储的第一数据逐行缓存至本地内存的过程中,当在本地内存中已缓存的第二数据的数据量超出本地内存允许存储的数据量时,该聚簇存储装置开始根据确定的第一排序列,对该第二数据进行排序,以及将排序后的该第二数据存入数据库系统中的存储介质中,由于可对待存储的数据一部分一部分进行排序并存储,以完成数据的装载,因此,可以保证数据库系统中的存储介质中的数据局部有序,从而能够保证在对数据装载性能和数据更新性能影响较小的同时,提高数据查询性能和数据压缩效率。
实施例四
如图7所示,本发明实施例提供一种数据库系统,该数据库系统可以包括硬件实体和软件环境,该硬件实体可以为计算机节点,该软件环境可以为数据库环境,该计算机节点可以包括处理器20;该数据库环境可以包括底层存储介质21和内存22以及,其中,
底层存储介质21,用于存储待存储的第一数据;
内存22,耦合至所述底层存储介质21,用于作为所述底层存储介质21的缓存,应当理解的是:所述底层存储介质21中一个或多个数据块映射到所述缓存中的一个目标数据块;
处理器20,耦合至所述内存22,所述处理器20执行所述内存22中的指令,用于:
将待存储的第一数据逐行缓存至所述内存22中,并确定第一排序列,且若在所述内存22中已缓存的第二数据满足预设条件,则根据所述第一排序列,对所述第二数据进行排序,以及将排序后的所述第二数据聚簇存储至所述底层存储介质21中,所述第一排序列用于对所述内存22中已缓存的数据进行排序,所述第二数据为所述第一数据中的已缓存至所述内存22中的数据。
可选的,所述预设条件用于表征所述内存22中已缓存的第二数据的数据量与所述内存22允许存储的数据量之间的关系。
可选的,所述预设条件为所述第二数据的行数大于或等于第一预设阈值,
其中,所述处理器20,具体用于若在所述内存22中已缓存的所述第二数据的行数大于或等于所述第一预设阈值,则根据所述第一排序列对所述第二数据进行排序。
可选的,所述预设条件为所述第二数据占用所述内存22的大小大于或等于第二预设阈值,
其中,所述处理器20,具体用于若在所述内存22中已缓存的所述第二数据占用所述内存22的大小大于或等于所述第二预设阈值,则根据所述第一排序列对所述第二数据进行排序。
可选的,所述处理器20,具体用于根据所述第一排序列的数值大小或所述第一排序列的数值的哈希值大小对所述第二数据进行排序。
可选的,所述处理器20,具体用于将排序后的所述第二数据聚簇存储至所述底层存储介质21中的空闲物理块中,所述空闲物理块为除第三数据占用的物理块之外的物理块,所述第三数据为所述第一数据中在所述第二数据之前已聚簇存储至所述底层存储介质21中的数据。
可选的,所述处理器20确定的所述第一排序列包括物理列和表达式中的至少一个。
可选的,所述处理器20,还用于在将所述第一数据全部存储至所述底层存储介质21中之后,确定查询列,并判断所述查询列是否为所述第一排序列中的第一个排序列,以及若判断所述查询列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行查询操作,以及输出查询结果。
进一步地,所述处理器20,还用于在确定所述查询列之后,根据所述第一个排序列,对所述第一数据进行查询操作之前,将所述底层存储介质21中存储的所述第一数据读入所述内存22中;
其中,所述处理器20,具体用于根据所述第一个排序列,在所述内存22中采用二分查找方式对所述第一数据的一个或多个数据页中的每个数据页进行查询操作,以及输出所述查询结果。
可选的,所述处理器20,还用于在将所述第一数据全部存储至所述底层存储介质21中之后,确定第二排序列,并判断所述第二排序列是否为所述第一排序列中的第一个排序列,以及若判断所述第二排序列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行排序操作,以及输出排序后的所述第一数据。
进一步地,所述处理器20,还用于在确定所述第二排序列之后,根据所述第一个排序列,对所述第一数据进行排序操作之前,将所述底层存储介质21中存储的所述第一数据读入所述内存22中;
其中,所述处理器20,具体用于根据所述第一个排序列,在所述内存22中对所述第一数据进行归并排序,并输出排序后的所述第一数据。
可选的,所述处理器20,还用于在将所述第一数据全部存储至所述底层存储介质21中之后,确定聚合列,并判断所述聚合列是否为所述第一排序列中的第一个排序列,以及若判断所述聚合列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行聚合操作,以及输出进行聚合操作的结果,所述聚合操作为在所述第一数据中查找最大值或最小值的操作。
进一步地,所述处理器20,还用于在确定所述聚合列之后,根据所述第一个排序列,对所述第一数据进行聚合操作之前,将所述底层存储介质21中存储的所述第一数据读入所述内存22中;
其中,所述处理器20,具体用于根据所述第一个排序列,在所述内存22中确定所述第一数据的一个或多个数据页中的每个数据页中的最大值或最小值,并依次比较所述每个数据页中的最大值或最小值,以确定所述第一数据中的最大值或最小值,以及输出所述最大值或最小值。
进一步地,所述处理器20,还用于在将待存储的第一数据逐行缓存至所述内存22中之前,在所述底层存储介质21中创建数据表,所述数据表用于装载所述第一数据;
其中,所述处理器20,具体用于将排序后的所述第二数据逐行插入所述数据表中,以将排序后的所述第二数据聚簇存储至所述底层存储介质21中。
可选的,所述处理器20确定的所述第一排序列的数量为至少一个,其中,当所述第一排序列的数量为至少两个时,所述至少两个第一排序列包括一个主第一排序列和至少一个次第一排序列。
本发明实施例中,计算机节点可以为计算机,也可以为其他任意能够对数据进行聚簇存储的设备,本发明不做限制。即能够实现本发明实施例提供的聚簇存储方法的装置和设备都在本发明的保护范围之内。
本发明实施例提供一种数据库系统,该数据库系统中的计算机节点将待存储的第一数据逐行缓存至该数据库系统中的内存中,并确定第一排序列,该第一排序列用于对该内存中已缓存的数据进行排序,且若该内存中已缓存的第二数据满足预设条件,该计算机节点则根据该第一排序列对该第二数据进行排序,该第二数据为该第一数据中的已缓存至该内存中的数据,以及该计算机节点将排序后的该第二数据聚簇存储至数据库系统中的底层存储介质中。通过该方案,该计算机节点在将待存储的第一数据逐行缓存至内存的过程中,当在内存中已缓存的第二数据的数据量超出内存允许存储的数据量时,该计算机节点开始根据确定的第一排序列,对该第二数据进行排序,以及将排序后的该第二数据存入该底层存储介质中,由于可对待存储的数据一部分一部分进行排序并存储,以完成数据的装载,因此,可以保证数据库系统中的底层存储介质中的数据局部有序,从而能够保证在对数据装载性能和数据更新性能影响较小的同时,提高数据查询性能和数据压缩效率。
实施例五
为了更加清楚地了解本发明实施例提供的聚簇存储方法,下面以一个具体的实例来进一步说明本发明实施例提供的聚簇存储方法。如图8所示,假设待存储的第一数据为9000000行学生数据,具体每行数据表示每个学生的相关信息,如图9所示的班级、学号、姓名等。
需要说明的是,如图9所示,A表示未排序前的数据;B表示采用本发明实施例提供的聚簇存储方法排序并存储后的数据。
在数据库系统中,采用本发明实施例提供的聚簇存储方法,在对该第一数据进行聚簇存储的过程具体如下:
(1)计算机节点将待存储的学生数据逐行缓存至数据库系统中的本地内存中。
(2)计算机节点确定第一排序列为班级和学号,其中,该第一排序列用于对该本地内存中已缓存的学生数据进行排序,该排序列为用户根据实际需求指定的。
(3)若该本地内存中已缓存的学生数据满足本发明实施例提供的预设条件,计算机节点则根据学生的班级和序号,对该本地内存中已缓存的学生数据进行排序。
(4)计算机节点将该本地内存中排序后的学生数据聚簇存储至数据库系统中的存储介质中。
(5)计算机节点循环执行(1)-(4),直至将待存储的所有学生数据一部分一部分地全部排序并存储至该存储介质中。
示例性的,如图9所示的A中,待存储的学生数据有12行,并且这12行学生数据都是无序存储的,采用本发明实施例提供的聚簇存储方法存储该学生数据时,计算机节点可从第一行学生数据开始,将这些学生数据逐行缓存至数据库系统中的本地内存中,假设该本地内存每次只能缓存6行学生数据,则当计算机节点在该本地内存中已缓存有6行学生数据时,计算机节点可对该6行学生数据进行排序,并将排序后的该6行学生数据聚簇存储至数据库系统中的存储介质中,如图9的B1部分所示。计算机节点将这6行学生数据存储完成后,计算机节点可继续逐行缓存其余的6行学生数据至该本地内存中,并在缓存完成后对该其余的6行学生数据进行排序,以及将排序后的该其余的6行学生数据聚簇存储至该存储介质中,如图9的B2部分所示,至此,计算机节点将待存储的12行学生数据全部聚簇存储至该存储介质中,且该12行学生数据在该存储介质中为局部有序存储,如图9的B所示。
进一步地,计算机节点在缓存学生数据时,也可按照该本地内存的大小缓存该学生数据,具体的,若计算机节点某一次缓存的某些行的学生数据较大,则计算机节点该次缓存的学生数据的行数则相对较少;相反的,若计算机节点某一次缓存的某些行的学生数据较小,则计算机节点该次缓存的学生数据的行数则相对较多,具体计算机节点缓存的学生数据的大小可由实际情况而定,本发明不作限制。
本发明实施例提供的聚簇存储方法中,计算机节点可根据数据库系统中的本地内存的处理能力逐行缓存待存储的数据,且当在该本地内存中缓存的部分数据超出本地内存的处理能力时,该计算机节点可开始根据确定的用户指定的排序列,对该部分数据进行排序,以及将排序后的该部分数据存入数据库系统中的存储介质中,由于该计算机节点可对待存储的数据一部分一部分进行排序并存储,以完成数据的装载,因此,可以保证该存储介质中的数据局部有序,从而能够保证在对数据装载性能和数据更新性能影响较小的同时,提高数据查询性能和数据压缩效率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (42)
1.一种聚簇存储方法,应用于数据库系统中,其特征在于,包括:
将待存储的第一数据逐行缓存至所述数据库系统中的本地内存中;
确定第一排序列,所述第一排序列用于对所述本地内存中已缓存的数据进行排序;
若所述本地内存中已缓存的第二数据满足预设条件,则根据所述第一排序列对所述第二数据进行排序,所述第二数据为所述第一数据中的已缓存至所述本地内存中的数据;
将排序后的所述第二数据聚簇存储至所述数据库系统中的存储介质中。
2.根据权利要求1所述的聚簇存储方法,其特征在于,
所述预设条件用于表征所述本地内存中已缓存的第二数据的数据量与所述本地内存允许存储的数据量之间的关系。
3.根据权利要求1或2所述的聚簇存储方法,其特征在于,所述预设条件为所述第二数据的行数大于或等于第一预设阈值,
其中,所述若所述本地内存中已缓存的第二数据满足预设条件,则根据所述第一排序列对所述第二数据进行排序,具体包括:
若所述第二数据的行数大于或等于所述第一预设阈值,则根据所述第一排序列对所述第二数据进行排序。
4.根据权利要求1或2所述的聚簇存储方法,其特征在于,所述预设条件为所述第二数据占用所述本地内存的大小大于或等于第二预设阈值,
其中,所述若所述本地内存中已缓存的第二数据满足预设条件,则根据所述第一排序列对所述第二数据进行排序,具体包括:
若所述第二数据占用所述本地内存的大小大于或等于所述第二预设阈值,则根据所述第一排序列对所述第二数据进行排序。
5.根据权利要求1-4任一项所述的聚簇存储方法,其特征在于,所述根据所述第一排序列对所述第二数据进行排序,具体包括:
根据所述第一排序列的数值大小或所述第一排序列的数值的哈希值大小对所述第二数据进行排序。
6.根据权利要求1-5任一项所述的聚簇存储方法,其特征在于,所述将排序后的所述第二数据聚簇存储至所述数据库系统中的存储介质中,具体包括:
将排序后的所述第二数据聚簇存储至所述存储介质中的空闲物理块中,所述空闲物理块为除第三数据占用的物理块之外的物理块,所述第三数据为所述第一数据中在所述第二数据之前已聚簇存储至所述存储介质中的数据。
7.根据权利要求1-6任一项所述的聚簇存储方法,其特征在于,
所述第一排序列包括物理列和表达式中的至少一个。
8.根据权利要求1-7任一项所述的聚簇存储方法,其特征在于,在所述第一数据全部存储至所述存储介质中之后,所述方法还包括:
确定查询列;
若所述查询列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行查询操作。
9.根据权利要求8所述的聚簇存储方法,其特征在于,所述确定查询列之后,根据所述第一个排序列,对所述第一数据进行查询操作之前,所述方法还包括:
将所述存储介质中存储的所述第一数据读入所述本地内存中;
其中,所述根据所述第一个排序列,对所述第一数据进行查询操作,具体包括:
根据所述第一个排序列,在所述本地内存中采用二分查找方式对所述第一数据的一个或多个数据页中的每个数据页进行查询操作。
10.根据权利要求1-7任一项所述的聚簇存储方法,其特征在于,在所述第一数据全部存储至所述存储介质中之后,所述方法还包括:
确定第二排序列;
若所述第二排序列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行排序操作。
11.根据权利要求10所述的聚簇存储方法,其特征在于,所述确定第二排序列之后,根据所述第一个排序列,对所述第一数据进行排序操作之前,所述方法还包括:
将所述存储介质中存储的所述第一数据读入所述本地内存中;
其中,所述根据所述第一个排序列,对所述第一数据进行排序操作,具体包括:
根据所述第一个排序列,在所述本地内存中对所述第一数据进行归并排序。
12.根据权利要求1-7任一项所述的聚簇存储方法,其特征在于,在所述第一数据全部存储至所述存储介质中之后,所述方法还包括:
确定聚合列;
若所述聚合列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行聚合操作,所述聚合操作为在所述第一数据中查找最大值或最小值的操作。
13.根据权利要求12所述的聚簇存储方法,其特征在于,所述确定聚合列之后,根据所述第一个排序列,对所述第一数据进行聚合操作之前,所述方法还包括:
将所述存储介质中存储的所述第一数据读入所述本地内存中;
其中,所述根据所述第一个排序列,对所述第一数据进行聚合操作,具体包括:
根据所述第一个排序列,在所述本地内存中确定所述第一数据的一个或多个数据页中的每个数据页中的最大值或最小值;
依次比较所述每个数据页中的最大值或最小值,以确定所述第一数据中的最大值或最小值。
14.根据权利要求1所述的聚簇存储方法,其特征在于,所述将待存储的第一数据逐行缓存至所述数据库系统中的本地内存中之前,所述方法还包括:
在所述存储介质中创建数据表,所述数据表用于装载所述第一数据;
其中,所述将排序后的所述第二数据聚簇存储至所述数据库系统中的存储介质中,具体包括:
将排序后的所述第二数据逐行插入所述数据表中,以将排序后的所述第二数据聚簇存储至所述存储介质中。
15.一种聚簇存储装置,应用于数据库系统中,其特征在于,包括:
缓存单元,用于将待存储的第一数据逐行缓存至所述数据库系统中的本地内存中;
确定单元,用于确定第一排序列,所述第一排序列用于对所述本地内存中已缓存的数据进行排序;
操作单元,用于若所述缓存单元在所述本地内存中已缓存的第二数据满足预设条件,则根据所述确定单元确定的所述第一排序列,对所述第二数据进行排序,所述第二数据为所述第一数据中的已缓存至所述本地内存中的数据;
存储单元,用于将所述操作单元排序后的所述第二数据聚簇存储至所述数据库系统中的存储介质中。
16.根据权利要求15所述的聚簇存储装置,其特征在于,
所述预设条件用于表征所述本地内存中已缓存的第二数据的数据量与所述本地内存允许存储的数据量之间的关系。
17.根据权利要求15或16所述的聚簇存储装置,其特征在于,所述预设条件为所述第二数据的行数大于或等于第一预设阈值,
其中,所述操作单元,具体用于若所述第二数据的行数大于或等于所述第一预设阈值,则根据所述第一排序列对所述第二数据进行排序。
18.根据权利要求15或16所述的聚簇存储装置,其特征在于,所述预设条件为所述第二数据占用所述本地内存的大小大于或等于第二预设阈值,
其中,所述操作单元,具体用于若所述第二数据占用所述本地内存的大小大于或等于所述第二预设阈值,则根据所述第一排序列对所述第二数据进行排序。
19.根据权利要求15-18任一项所述的聚簇存储装置,其特征在于,
所述操作单元,具体用于根据所述确定单元确定的所述第一排序列的数值大小或所述第一排序列的数值的哈希值大小对所述第二数据进行排序。
20.根据权利要求15-19任一项所述的聚簇存储装置,其特征在于,
所述存储单元,具体用于将所述操作单元排序后的所述第二数据聚簇存储至所述存储介质中的空闲物理块中,所述空闲物理块为除第三数据占用的物理块之外的物理块,所述第三数据为所述第一数据中在所述第二数据之前已聚簇存储至所述存储介质中的数据。
21.根据权利要求15-20任一项所述的聚簇存储装置,其特征在于,
所述确定单元确定的所述第一排序列包括物理列和表达式中的至少一个。
22.根据权利要求15-21任一项所述的聚簇存储装置,其特征在于,
所述确定单元,还用于在所述存储单元将所述第一数据全部存储至所述存储介质中之后,确定查询列;
所述操作单元,还用于若所述确定单元确定的所述查询列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行查询操作。
23.根据权利要求22所述的聚簇存储装置,其特征在于,
所述缓存单元,还用于在所述确定单元确定所述查询列之后,所述操作单元根据所述第一个排序列,对所述第一数据进行查询操作之前,将所述存储介质中存储的所述第一数据读入所述本地内存中;
其中,所述操作单元,具体用于根据所述第一个排序列,在所述本地内存中采用二分查找方式对所述缓存单元缓存的所述第一数据的一个或多个数据页中的每个数据页进行查询操作。
24.根据权利要求15-21任一项所述的聚簇存储装置,其特征在于,
所述确定单元,还用于在所述存储单元将所述第一数据全部存储至所述存储介质中之后,确定第二排序列;
所述操作单元,还用于若所述确定单元确定的所述第二排序列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行排序操作。
25.根据权利要求24所述的聚簇存储装置,其特征在于,
所述缓存单元,还用于在所述确定单元确定所述第二排序列之后,所述操作单元根据所述第一个排序列,对所述第一数据进行排序操作之前,将所述存储介质中存储的所述第一数据读入所述本地内存中;
其中,所述操作单元,具体用于根据所述第一个排序列,在所述本地内存中对所述缓存单元缓存的所述第一数据进行归并排序。
26.根据权利要求15-21任一项所述的聚簇存储装置,其特征在于,
所述确定单元,还用于在所述存储单元将所述第一数据全部存储至所述存储介质中之后,确定聚合列;
所述操作单元,还用于若所述确定单元确定的所述聚合列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行聚合操作,所述聚合操作为在所述第一数据中查找最大值或最小值的操作。
27.根据权利要求26所述的聚簇存储装置,其特征在于,
所述缓存单元,还用于在所述确定单元确定所述聚合列之后,所述操作单元根据所述第一个排序列,对所述第一数据进行聚合操作之前,将所述存储介质中存储的所述第一数据读入所述本地内存中;
其中,所述操作单元,具体用于根据所述第一个排序列,在所述本地内存中确定所述缓存单元缓存的所述第一数据的一个或多个数据页中的每个数据页中的最大值或最小值,并依次比较所述每个数据页中的最大值或最小值,以确定所述第一数据中的最大值或最小值。
28.根据权利要求15所述的聚簇存储装置,其特征在于,所述聚簇存储装置还包括创建单元,
所述创建单元,用于在所述缓存单元将待存储的第一数据逐行缓存至所述数据库系统中的本地内存中之前,在所述存储介质中创建数据表,所述数据表用于装载所述第一数据;
其中,所述操作单元,具体用于将排序后的所述第二数据逐行插入所述创建单元创建的所述数据表中,以将排序后的所述第二数据聚簇存储至所述存储介质中。
29.一种数据库系统,其特征在于,包括:
底层存储介质;
内存,耦合至所述底层存储介质,用于作为所述底层存储介质的缓存;
处理器,耦合至所述内存,所述处理器执行所述内存中的指令,用于:
将待存储的第一数据逐行缓存至所述内存中,并确定第一排序列,且若所述内存中已缓存的第二数据满足预设条件,则根据所述第一排序列对所述第二数据进行排序,以及将排序后的所述第二数据聚簇存储至所述底层存储介质中,所述第一排序列用于对所述内存中已缓存的数据进行排序,所述第二数据为所述第一数据中的已缓存至所述内存中的数据。
30.根据权利要求29所述的数据库系统,其特征在于,
所述预设条件用于表征所述内存中已缓存的第二数据的数据量与所述内存允许存储的数据量之间的关系。
31.根据权利要求29或30所述的数据库系统,其特征在于,所述预设条件为所述第二数据的行数大于或等于第一预设阈值,
其中,在所述若所述内存中已缓存的第二数据满足预设条件,则根据所述第一排序列对所述第二数据进行排序的方面,所述处理器具体用于若所述第二数据的行数大于或等于所述第一预设阈值,则根据所述第一排序列对所述第二数据进行排序。
32.根据权利要求29或30所述的数据库系统,其特征在于,所述预设条件为所述第二数据占用所述内存的大小大于或等于第二预设阈值,
其中,在所述若所述内存中已缓存的第二数据满足预设条件,则根据所述第一排序列对所述第二数据进行排序的方面,所述处理器具体用于若所述第二数据占用所述内存的大小大于或等于所述第二预设阈值,则根据所述第一排序列对所述第二数据进行排序。
33.根据权利要求29-32任一项所述的数据库系统,其特征在于,
在所述根据所述第一排序列对所述第二数据进行排序的方面,所述处理器具体用于根据所述第一排序列的数值大小或所述第一排序列的数值的哈希值大小对所述第二数据进行排序。
34.根据权利要求29-33任一项所述的数据库系统,其特征在于,
在所述将排序后的所述第二数据聚簇存储至所述底层存储介质中的方面,所述处理器,具体用于将所述第二数据聚簇存储至所述底层存储介质中的空闲物理块中,所述空闲物理块为除第三数据占用的物理块之外的物理块,所述第三数据为所述第一数据中在所述第二数据之前已聚簇存储至所述底层存储介质中的数据。
35.根据权利要求29-34任一项所述的数据库系统,其特征在于,
所述处理器确定的所述第一排序列包括物理列和表达式中的至少一个。
36.根据权利要求29-35任一项所述的数据库系统,其特征在于,
所述处理器,还用于在将所述第一数据全部存储至所述底层存储介质中之后,确定查询列,且若所述查询列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行查询操作。
37.根据权利要求36所述的数据库系统,其特征在于,
所述处理器,还用于在确定所述查询列之后,根据所述第一个排序列,对所述第一数据进行查询操作之前,将所述底层存储介质中存储的所述第一数据读入所述内存中,并根据所述第一个排序列,在所述内存中采用二分查找方式对所述第一数据的一个或多个数据页中的每个数据页进行查询操作。
38.根据权利要求29-35任一项所述的数据库系统,其特征在于,
所述处理器,还用于在将所述第一数据全部存储至所述底层存储介质中之后,确定第二排序列,且若所述第二排序列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行排序操作。
39.根据权利要求38所述的数据库系统,其特征在于,
所述处理器,还用于在确定所述第二排序列之后,根据所述第一个排序列,对所述第一数据进行排序操作之前,将所述底层存储介质中存储的所述第一数据读入所述内存中,并根据所述第一个排序列,在所述内存中对所述第一数据进行归并排序。
40.根据权利要求29-35任一项所述的数据库系统,其特征在于,
所述处理器,还用于在将所述第一数据全部存储至所述底层存储介质中之后,确定聚合列,且若所述聚合列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行聚合操作,所述聚合操作为在所述第一数据中查找最大值或最小值的操作。
41.根据权利要求40所述的数据库系统,其特征在于,
所述处理器,还用于在确定所述聚合列之后,根据所述第一个排序列,对所述第一数据进行聚合操作之前,将所述底层存储介质中存储的所述第一数据读入所述内存中,并根据所述第一个排序列,在所述内存中确定所述第一数据的一个或多个数据页中的每个数据页中的最大值或最小值,并依次比较所述每个数据页中的最大值或最小值,以确定所述第一数据中的最大值或最小值。
42.根据权利要求29所述的数据库系统,其特征在于,
所述处理器,还用于在将待存储的第一数据逐行缓存至所述内存中之前,在所述底层存储介质中创建数据表,并将排序后的所述第二数据逐行插入所述数据表中,以将排序后的所述第二数据聚簇存储至所述底层存储介质中,所述数据表用于装载所述第一数据。
Priority Applications (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410228979.8A CN104021161B (zh) | 2014-05-27 | 2014-05-27 | 一种聚簇存储方法及装置 |
CN201810496652.7A CN108897761B (zh) | 2014-05-27 | 2014-05-27 | 一种聚簇存储方法及装置 |
JP2016569821A JP6553649B2 (ja) | 2014-05-27 | 2014-11-24 | クラスタリング記憶方法および装置 |
PCT/CN2014/092058 WO2015180432A1 (zh) | 2014-05-27 | 2014-11-24 | 一种聚簇存储方法及装置 |
RU2016150418A RU2663358C2 (ru) | 2014-05-27 | 2014-11-24 | Устройство и способ кластерного хранения |
KR1020167033902A KR101972645B1 (ko) | 2014-05-27 | 2014-11-24 | 클러스터링 저장 방법 및 장치 |
EP14893251.0A EP3133505A4 (en) | 2014-05-27 | 2014-11-24 | Clustering storage method and device |
US15/360,030 US10817258B2 (en) | 2014-05-27 | 2016-11-23 | Clustering storage method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410228979.8A CN104021161B (zh) | 2014-05-27 | 2014-05-27 | 一种聚簇存储方法及装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810496652.7A Division CN108897761B (zh) | 2014-05-27 | 2014-05-27 | 一种聚簇存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104021161A true CN104021161A (zh) | 2014-09-03 |
CN104021161B CN104021161B (zh) | 2018-06-15 |
Family
ID=51437915
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410228979.8A Active CN104021161B (zh) | 2014-05-27 | 2014-05-27 | 一种聚簇存储方法及装置 |
CN201810496652.7A Active CN108897761B (zh) | 2014-05-27 | 2014-05-27 | 一种聚簇存储方法及装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810496652.7A Active CN108897761B (zh) | 2014-05-27 | 2014-05-27 | 一种聚簇存储方法及装置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10817258B2 (zh) |
EP (1) | EP3133505A4 (zh) |
JP (1) | JP6553649B2 (zh) |
KR (1) | KR101972645B1 (zh) |
CN (2) | CN104021161B (zh) |
RU (1) | RU2663358C2 (zh) |
WO (1) | WO2015180432A1 (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015180432A1 (zh) * | 2014-05-27 | 2015-12-03 | 华为技术有限公司 | 一种聚簇存储方法及装置 |
CN107239381A (zh) * | 2017-06-07 | 2017-10-10 | 北京奇虎科技有限公司 | 崩溃信息的处理方法、装置及系统 |
CN107533551A (zh) * | 2015-04-15 | 2018-01-02 | 华为技术有限公司 | 数据块级别的大数据统计 |
CN108009195A (zh) * | 2017-10-23 | 2018-05-08 | 苏州市环亚数据技术有限公司 | 一种基于大数据的降维转换方法、电子设备、存储介质 |
CN108304408A (zh) * | 2017-01-12 | 2018-07-20 | 中国移动通信集团公司 | 一种缓存数据刷新方法及装置 |
CN109189763A (zh) * | 2018-09-17 | 2019-01-11 | 北京锐安科技有限公司 | 一种数据存储方法、装置、服务器及存储介质 |
CN109634955A (zh) * | 2018-11-15 | 2019-04-16 | 金蝶软件(中国)有限公司 | 数据存储方法、数据检索方法和装置 |
CN109783052A (zh) * | 2018-12-27 | 2019-05-21 | 深圳市轱辘汽车维修技术有限公司 | 数据排序方法、装置、服务器及计算机可读存储介质 |
CN109949378A (zh) * | 2019-03-26 | 2019-06-28 | 中国科学院软件研究所 | 图像灰度值排序方法、装置、电子设备及计算机可读介质 |
WO2020125689A1 (zh) * | 2018-12-18 | 2020-06-25 | 杭州海康威视数字技术股份有限公司 | 数据聚类方法及装置 |
CN111708954A (zh) * | 2020-05-22 | 2020-09-25 | 微梦创科网络科技(中国)有限公司 | 一种排行榜的排名方法及系统 |
CN115576947A (zh) * | 2022-10-19 | 2023-01-06 | 北京力控元通科技有限公司 | 一种数据管理方法、装置、组合库、电子设备及存储介质 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101969652B1 (ko) * | 2017-11-17 | 2019-04-16 | 경북대학교 산학협력단 | 데이터 전달 장치, 방법과 그를 이용한 사물 인터넷 시스템, 데이터 전달 방법을 실행하기 위한 프로그램이 기록된 기록매체 및 하드웨어와 결합하여 데이터 전달 방법을 실행하기 위하여 매체에 저장된 프로그램 |
CN109918369B (zh) * | 2017-12-13 | 2024-01-23 | 金篆信科有限责任公司 | 数据存储方法及装置 |
CN110858122B (zh) * | 2018-08-23 | 2023-10-20 | 杭州海康威视系统技术有限公司 | 存储数据的方法和装置 |
CN112148691B (zh) * | 2019-06-27 | 2024-03-26 | 金世超 | 数据存储方法和数据存储引擎 |
CN111221917B (zh) * | 2019-10-12 | 2023-05-26 | 中国平安财产保险股份有限公司 | 智能分区存储方法、装置及计算机可读存储介质 |
CN111581929B (zh) * | 2020-04-22 | 2022-09-27 | 腾讯科技(深圳)有限公司 | 基于表格的文本生成方法及相关装置 |
CN113900622B (zh) * | 2021-09-22 | 2022-04-08 | 中国科学院国家空间科学中心 | 一种基于fpga的数据信息快速排序方法、系统、设备及存储介质 |
CN116150212B (zh) * | 2023-04-24 | 2023-07-07 | 苏州映赛智能科技有限公司 | 数据处理方法及设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521304A (zh) * | 2011-11-30 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 基于哈希的聚簇表存储方法 |
CN102591864A (zh) * | 2011-01-06 | 2012-07-18 | 上海银晨智能识别科技有限公司 | 比对系统中的数据更新方法及装置 |
US20120310917A1 (en) * | 2011-05-31 | 2012-12-06 | International Business Machines Corporation | Accelerated Join Process in Relational Database Management System |
CN103577559A (zh) * | 2013-10-23 | 2014-02-12 | 华为技术有限公司 | 数据排序方法和装置 |
CN103631940A (zh) * | 2013-12-09 | 2014-03-12 | 中国联合网络通信集团有限公司 | 一种应用于hbase数据库的数据写入方法及系统 |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0581343A (ja) * | 1991-09-21 | 1993-04-02 | Toshiba Corp | データ処理装置 |
JPH0581342A (ja) * | 1991-09-21 | 1993-04-02 | Toshiba Corp | データ処理装置 |
US5742806A (en) * | 1994-01-31 | 1998-04-21 | Sun Microsystems, Inc. | Apparatus and method for decomposing database queries for database management system including multiprocessor digital data processing system |
US6026406A (en) * | 1997-06-04 | 2000-02-15 | Oracle Corporation | Batch processing of updates to indexes |
JP3864703B2 (ja) * | 2001-01-11 | 2007-01-10 | 豊田合成株式会社 | エアバッグとそのラッピング方法 |
US6907422B1 (en) * | 2001-12-18 | 2005-06-14 | Siebel Systems, Inc. | Method and system for access and display of data from large data sets |
US20030158842A1 (en) * | 2002-02-21 | 2003-08-21 | Eliezer Levy | Adaptive acceleration of retrieval queries |
US7370068B1 (en) * | 2002-09-04 | 2008-05-06 | Teradata Us, Inc. | Sorting of records with duplicate removal in a database system |
US6910106B2 (en) * | 2002-10-04 | 2005-06-21 | Microsoft Corporation | Methods and mechanisms for proactive memory management |
JP2005135221A (ja) * | 2003-10-31 | 2005-05-26 | Turbo Data Laboratory:Kk | 表形式データの結合方法、結合装置およびプログラム |
US8478755B2 (en) | 2006-04-20 | 2013-07-02 | Microsoft Corporation | Sorting large data sets |
US20080059492A1 (en) | 2006-08-31 | 2008-03-06 | Tarin Stephen A | Systems, methods, and storage structures for cached databases |
US8108355B2 (en) * | 2006-10-27 | 2012-01-31 | Hewlett-Packard Development Company, L.P. | Providing a partially sorted index |
US20080133493A1 (en) * | 2006-12-04 | 2008-06-05 | Michael Bender | Method for maintaining database clustering when replacing tables with inserts |
US20080229371A1 (en) * | 2007-02-22 | 2008-09-18 | Mick Colin K | Digital multimedia network including method and apparatus for high speed user download of digital files |
US8478775B2 (en) * | 2008-10-05 | 2013-07-02 | Microsoft Corporation | Efficient large-scale filtering and/or sorting for querying of column based data encoded structures |
US20100088309A1 (en) * | 2008-10-05 | 2010-04-08 | Microsoft Corporation | Efficient large-scale joining for querying of column based data encoded structures |
US10152504B2 (en) * | 2009-03-11 | 2018-12-11 | Actian Netherlands B.V. | Column-store database architecture utilizing positional delta tree update system and methods |
EP2665003A1 (en) * | 2009-06-19 | 2013-11-20 | Blekko, Inc. | Search term based query method with modifiers expressed as slash operators |
KR101102080B1 (ko) * | 2010-03-11 | 2012-01-04 | 이너비트 주식회사 | 컬럼 내의 부분 인덱싱을 이용한 임베디드 디비엠에스의 인덱스 생성 방법과 이를 이용한 데이터 검색 방법 및 데이터 소팅방법 |
WO2012034128A1 (en) * | 2010-09-10 | 2012-03-15 | Ab Initio Technology Llc | Managing data selection based on attributes |
US8229917B1 (en) * | 2011-02-24 | 2012-07-24 | International Business Machines Corporation | Database query optimization using clustering data mining |
US8543538B2 (en) * | 2011-06-01 | 2013-09-24 | Clustrix, Inc. | Systems and methods for redistributing data in a relational database |
US20120323923A1 (en) * | 2011-06-14 | 2012-12-20 | Bank Of America Corporation | Sorting Data in Limited Memory |
CN102314505B (zh) | 2011-09-07 | 2016-04-13 | 北京人大金仓信息技术股份有限公司 | 基于偏序关系的缓冲区版本产生方法 |
KR101867286B1 (ko) | 2012-02-27 | 2018-06-15 | 삼성전자주식회사 | 작업 부하를 고려한 하드웨어 가속화 기반의 대규모 데이터의 분산 처리 장치 및 방법 |
KR101482014B1 (ko) * | 2012-05-11 | 2015-01-14 | 네이버 주식회사 | 할당 테이블을 이용한 파일 캐시 시스템 및 방법 그리고 파일 캐시 어플리케이션을 배포하는 배포 시스템 및 배포 방법 |
US9430550B2 (en) * | 2012-09-28 | 2016-08-30 | Oracle International Corporation | Clustering a table in a relational database management system |
CN103810209B (zh) * | 2012-11-14 | 2019-05-10 | 腾讯科技(深圳)有限公司 | 一种保存数据的方法及系统 |
US9213716B2 (en) * | 2013-03-12 | 2015-12-15 | Sap Se | Hierarchical indicies |
CN106649708A (zh) * | 2013-08-29 | 2017-05-10 | 华为技术有限公司 | 存储数据的方法和装置 |
US10133800B2 (en) * | 2013-09-11 | 2018-11-20 | Microsoft Technology Licensing, Llc | Processing datasets with a DBMS engine |
CN104021161B (zh) * | 2014-05-27 | 2018-06-15 | 华为技术有限公司 | 一种聚簇存储方法及装置 |
-
2014
- 2014-05-27 CN CN201410228979.8A patent/CN104021161B/zh active Active
- 2014-05-27 CN CN201810496652.7A patent/CN108897761B/zh active Active
- 2014-11-24 RU RU2016150418A patent/RU2663358C2/ru active
- 2014-11-24 JP JP2016569821A patent/JP6553649B2/ja active Active
- 2014-11-24 EP EP14893251.0A patent/EP3133505A4/en not_active Ceased
- 2014-11-24 WO PCT/CN2014/092058 patent/WO2015180432A1/zh active Application Filing
- 2014-11-24 KR KR1020167033902A patent/KR101972645B1/ko active IP Right Grant
-
2016
- 2016-11-23 US US15/360,030 patent/US10817258B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591864A (zh) * | 2011-01-06 | 2012-07-18 | 上海银晨智能识别科技有限公司 | 比对系统中的数据更新方法及装置 |
US20120310917A1 (en) * | 2011-05-31 | 2012-12-06 | International Business Machines Corporation | Accelerated Join Process in Relational Database Management System |
CN102521304A (zh) * | 2011-11-30 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 基于哈希的聚簇表存储方法 |
CN103577559A (zh) * | 2013-10-23 | 2014-02-12 | 华为技术有限公司 | 数据排序方法和装置 |
CN103631940A (zh) * | 2013-12-09 | 2014-03-12 | 中国联合网络通信集团有限公司 | 一种应用于hbase数据库的数据写入方法及系统 |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015180432A1 (zh) * | 2014-05-27 | 2015-12-03 | 华为技术有限公司 | 一种聚簇存储方法及装置 |
US10817258B2 (en) | 2014-05-27 | 2020-10-27 | Huawei Technologies Co., Ltd. | Clustering storage method and apparatus |
CN107533551B (zh) * | 2015-04-15 | 2020-08-07 | 华为技术有限公司 | 数据块级别的大数据统计 |
CN107533551A (zh) * | 2015-04-15 | 2018-01-02 | 华为技术有限公司 | 数据块级别的大数据统计 |
CN108304408B (zh) * | 2017-01-12 | 2021-04-02 | 中国移动通信集团公司 | 一种缓存数据刷新方法及装置 |
CN108304408A (zh) * | 2017-01-12 | 2018-07-20 | 中国移动通信集团公司 | 一种缓存数据刷新方法及装置 |
CN107239381B (zh) * | 2017-06-07 | 2021-09-07 | 北京奇虎科技有限公司 | 崩溃信息的处理方法、装置及系统 |
CN107239381A (zh) * | 2017-06-07 | 2017-10-10 | 北京奇虎科技有限公司 | 崩溃信息的处理方法、装置及系统 |
CN108009195B (zh) * | 2017-10-23 | 2022-06-28 | 环亚数据技术有限公司 | 一种基于大数据的降维转换方法、电子设备、存储介质 |
CN108009195A (zh) * | 2017-10-23 | 2018-05-08 | 苏州市环亚数据技术有限公司 | 一种基于大数据的降维转换方法、电子设备、存储介质 |
CN109189763A (zh) * | 2018-09-17 | 2019-01-11 | 北京锐安科技有限公司 | 一种数据存储方法、装置、服务器及存储介质 |
CN109634955A (zh) * | 2018-11-15 | 2019-04-16 | 金蝶软件(中国)有限公司 | 数据存储方法、数据检索方法和装置 |
WO2020125689A1 (zh) * | 2018-12-18 | 2020-06-25 | 杭州海康威视数字技术股份有限公司 | 数据聚类方法及装置 |
CN109783052A (zh) * | 2018-12-27 | 2019-05-21 | 深圳市轱辘汽车维修技术有限公司 | 数据排序方法、装置、服务器及计算机可读存储介质 |
CN109783052B (zh) * | 2018-12-27 | 2021-11-12 | 深圳市轱辘车联数据技术有限公司 | 数据排序方法、装置、服务器及计算机可读存储介质 |
CN109949378B (zh) * | 2019-03-26 | 2021-06-08 | 中国科学院软件研究所 | 图像灰度值排序方法、装置、电子设备及计算机可读介质 |
CN109949378A (zh) * | 2019-03-26 | 2019-06-28 | 中国科学院软件研究所 | 图像灰度值排序方法、装置、电子设备及计算机可读介质 |
CN111708954A (zh) * | 2020-05-22 | 2020-09-25 | 微梦创科网络科技(中国)有限公司 | 一种排行榜的排名方法及系统 |
CN111708954B (zh) * | 2020-05-22 | 2023-10-27 | 微梦创科网络科技(中国)有限公司 | 一种排行榜的排名方法及系统 |
CN115576947A (zh) * | 2022-10-19 | 2023-01-06 | 北京力控元通科技有限公司 | 一种数据管理方法、装置、组合库、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3133505A4 (en) | 2017-03-22 |
US10817258B2 (en) | 2020-10-27 |
JP6553649B2 (ja) | 2019-07-31 |
RU2016150418A (ru) | 2018-07-02 |
RU2016150418A3 (zh) | 2018-07-02 |
CN108897761A (zh) | 2018-11-27 |
US20170075657A1 (en) | 2017-03-16 |
WO2015180432A1 (zh) | 2015-12-03 |
CN108897761B (zh) | 2023-01-13 |
KR101972645B1 (ko) | 2019-08-23 |
RU2663358C2 (ru) | 2018-08-03 |
EP3133505A1 (en) | 2017-02-22 |
CN104021161B (zh) | 2018-06-15 |
KR20160148703A (ko) | 2016-12-26 |
JP2017526027A (ja) | 2017-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104021161A (zh) | 一种聚簇存储方法及装置 | |
US20070124277A1 (en) | Index and Method for Extending and Querying Index | |
CN102819601B (zh) | 信息检索方法和信息检索设备 | |
US11288287B2 (en) | Methods and apparatus to partition a database | |
CN103678405A (zh) | 邮件索引建立方法及系统、邮件搜索方法及系统 | |
CN105653554A (zh) | 一种文件数据比对方法和系统 | |
CN110168532A (zh) | 数据更新方法和存储装置 | |
CN104424219A (zh) | 一种数据文件的管理方法及装置 | |
CN102959548A (zh) | 数据存储方法、查找方法及装置 | |
JP2004030221A (ja) | 変更対象テーブル自動検出方法 | |
CN114691721A (zh) | 图数据的查询方法、装置、电子设备及存储介质 | |
WO2016038749A1 (en) | A method for efficient one-to-one join | |
US7631014B2 (en) | Method and apparatus for fast deletion of physically clustered data | |
CN109656947B (zh) | 数据查询方法、装置、计算机设备和存储介质 | |
US20070260579A1 (en) | Method of designing query classification component for multilevel dbms | |
US9164978B2 (en) | Identifying objects within a multidimensional array | |
CN104166736A (zh) | 倒排索引文件的存储方法和装置 | |
US20180011897A1 (en) | Data processing method having structure of cache index specified to transaction in mobile environment dbms | |
CN103714121A (zh) | 一种索引记录的管理方法及装置 | |
US8805820B1 (en) | Systems and methods for facilitating searches involving multiple indexes | |
US9817853B1 (en) | Dynamic tier-maps for large online databases | |
CN102135969A (zh) | 构造索引库的方法和设备以及查询方法 | |
US10235432B1 (en) | Document retrieval using multiple sort orders | |
CN114911826A (zh) | 一种关联数据检索方法和系统 | |
CN114428776A (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 |